diff --git a/README.md b/README.md index 6c96b2b5..b18ed69c 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ W3bstream is a key Layer-2 solution within the IoTeX ecosystem, designed to supp ## Workflow

- +

**Sequencer nodes** assemble received data messages with a “block header” that (among other things) references the previous block of data. Each block of data is mined using a proof-of-work mechanism and is then assigned as a Task to a Prover node that is available for data computation. Sequencer nodes receive rewards in IOTX for the mining activity. @@ -18,25 +18,24 @@ The chain of tasks and their ZK-proofs are recorded **on the IoTeX blockchain**, This architecture ensures secure, reliable, and scalable data processing, allowing DePIN dApps to act on verified real-world facts to trigger blockchain-based incentives. -## Architecture +## Get Started -[Detailed system architecture description →](./docs/ARCHITECTURE.md) +[Deploy a simple W3bstream prover →](./docs/QUICK_START.md) -## Docker images - -* [Sequencer](https://github.com/iotexproject/w3bstream/pkgs/container/w3bstream-sequencer) -* [Prover](https://github.com/iotexproject/w3bstream/pkgs/container/w3bstream-prover) +[Build custom provers →](./docs/DEVELOPER_GUIDE.md) -## Running +## Docker images -For users who just want to give it a try, please refer to [Quick Start →](./docs/QUICK_START.md), which will guide you through how to interact with existing projects deployed on testnet. +[Sequencer Node →](https://github.com/iotexproject/w3bstream/pkgs/container/w3bstream-sequencer) -Developers looking to build circuits and deploy W3bstream projects should consult the [DEVELOPER_GUIDE →](./docs/DEVELOPER_GUIDE.md) +[Prover Node →](https://github.com/iotexproject/w3bstream/pkgs/container/w3bstream-prover) ## Contract Deployments -Coming + [smartcontracts/README.md](./smartcontracts/README.md#deployment) ## Contributing -We welcome contributions! Please read our [contributing guidelines](./docs/CONTRIBUTING.md) and submit pull requests to our GitHub repository. +We welcome contributions! + +Please read our [contributing guidelines](./docs/CONTRIBUTING.md) and submit pull requests to our GitHub repository. diff --git a/docs/DEVELOPER_GUIDE.md b/docs/DEVELOPER_GUIDE.md index 5cf59f2e..19c216d5 100644 --- a/docs/DEVELOPER_GUIDE.md +++ b/docs/DEVELOPER_GUIDE.md @@ -1,50 +1,37 @@ # IoTeX W3bstream Project Developer Guide -W3bstream significantly enhances scalability and trust for dApps where the token economy depends on verifiable processing of real-world data. By providing a decentralized infrastructure to process raw data and generate custom Zero-Knowledge (ZK) Proofs, W3bstream ensures data authenticity and reliability in dApps' token economies. - -Dapps looking to utilize W3bstream capabilities should: - -1. [Create a W3bstream project](#create-a-w3bstream-project) -2. [Test the project](#test-your-w3bstream-project) -3. [Register it on the IoTeX blockchain](#registering-your-project) -4. [Verify proof on the IoTeX blockchain](#verify-proof-on-chain) - ## Prerequisites -- ioctl: The command-line interface for interacting with the IoTeX blockchain. +Ensure you have the following tools installed: -```bash -git clone https://github.com/iotexproject/iotex-core.git -cd iotex-core -make ioctl && mv bin/ioctl __YOUR_SYSTEM_PATH__ -``` +- [ioctl](https://docs.iotex.io/builders/reference-docs/ioctl-client#install-latest-release-build): For interacting with the IoTeX blockchain. -[More on the IoTeX ioctl client →](https://docs.iotex.io/the-iotex-stack/wallets/command-line-client) +## Create a W3bstream Prover Configuration -## Create a W3bstream Project +The W3bstream Prover Configuration consists primarily of the ZK Prover binary code and its revisions. To create a configuration file, first compile a ZK circuit into a prover using one of the supported ZK frameworks, then generate a W3bstream configuration file using the ioctl command-line client. -A W3bstream project primarily includes the binary code of the a ZK Prover and the destination contract for dispatching proofs. The steps involve first compiling a zk circuit into a prover using one of the supported ZK frameworks, and then generating a W3bstream project file using **ioctl** command line client. - -Start by cloning the W3bstream repository: +Begin by cloning the W3bstream repository: ```bash git clone https://github.com/iotexproject/w3bstream.git cd w3bstream ``` -### Create a W3bstream Project Using Halo2 - ->For more details on creating Halo2 circuits see the [Halo2 README](./examples/halo2-circuit/README.md). +
+ +Halo2 Circuits + +
+💡 NOTE: For circuit development with Halo2, refer to the halo2 development documentation. +
-NOTE: If you want to develop your circuit, please refer [halo2 development documentation](https://zcash.github.io/halo2/user/simple-example.html) - -Install `wasm-pack` +#### Step 1: Install `wasm-pack` ```bash curl https://rustwasm.github.io/wasm-pack/installer/init.sh -sSf | sh ``` -build the wasm prover with: +#### Step 2: build the wasm prover ```bash cd examples/halo2-circuit/ @@ -53,24 +40,32 @@ wasm-pack build --target nodejs --out-dir pkg The `halo2_simple_bg.wasm` will be located under the `pkg` folder. -Generate the W3bstream project file: +#### Step 3: Generate the W3bstream config file + +Customize the output project file name: ```bash -# Customize the output project file name "$ID" with a unique number -ioctl ws project config -t 2 -i "halo2_wasm_bg.wasm" -c "path/$ID" +ioctl ws project config -t 2 -i "halo2_wasm_bg.wasm" -c "path/config_file_name.json" ``` -Create the blockchain verifier (Solidity) +#### Step 4: Create the blockchain verifier (Solidity) ``` shell target/release/halo2-simple-circuit solidity -f path/filename.sol ``` -### Create a W3bstream Project Using zkWASM +
-For more details on zkWASM circuits see the [zkWASM README](./examples/zkwasm-circuit/README.md). +
+ +zkWASM Circuits + +
+💡 NOTE: For zkWASM circuit development, refer to the zkWASM development documentation. -NOTE: If you want to develop your circuit, please refer [zkwasm project bootstrap](https://github.com/DelphinusLab/zkWasm?tab=readme-ov-file#project-bootstrap) +
+ +#### Step 1: Install AssemblyScript Ensure you have AssemblyScript installed: @@ -78,211 +73,147 @@ Ensure you have AssemblyScript installed: npm install -g assemblyscript ``` -Build the circuit: +#### Step 2: Build the circuit ```bash cd examples/zkwasm-circuit/ asc src/add.ts -O --noAssert -o zkwasm_demo.wasm ``` -Create the verifier +#### Step 3: Create the verifier ```bash # Work in progress -`````` +``` -Generate the W3bstream project: +#### Step 4: Generate the W3bstream config file ```bash -# Customize the output project file name "$ID" with a unique number -ioctl ws project config -t 3 -i "zkwasm_demo.wasm" -o "path/ID" +ioctl ws project config -t 3 -i "zkwasm_demo.wasm" -o "path/config_file_name.json" ``` -### Create a W3bstream Project Using RISC0 - -More details and options for `Risc0 circuit` are given in [its README](./examples/risc0-circuit/README.md). +
-NOTE: If you want to develop your circuit, please refer [more risc0 guest examples](https://github.com/risc0/risc0/tree/main/examples) +
+ +Risc0 Circuits + -Make sure you have cargo 1.72.0 or higher +
+💡 NOTE: For Risc0 circuit development, refer to the Risc0 development documentation. - ```bash - cargo version - # Update with: rustup update - ``` - -Install the rustzero toolchain +
- ```bash - cargo install cargo-risczero - cargo risczero install - ``` +#### Step 1: Install the Toolchain -Build the circuit +Make sure cargo version 1.72.0 or higher is installed: ```bash -cd examples/risc0-circuit/ -cargo build --release -``` +# Check with +cargo version -The path of `methods.rs` will be printed to the console, like in the output example below: +# Install with +curl https://sh.rustup.rs -sSf | sh -```bash -warning: methods_path is: "w3bstream/examples/risc0-circuits/target/release/build/risc0-circuits-5efc4ff59af940ab/out/methods.rs" +# Update with +rustup update ``` -Generate the W3bstream Project +Install the rustzero toolchain ```bash -ioctl ws project config -t 1 -i "methods.rs" -o "path/filename.json" -e "{\"image_id\":\"RANGE_ID\", \"elf\":\"RANGE_ELF\"}" +cargo install cargo-risczero +cargo risczero install ``` -The values of `image_id` and `elf` are variable names, and will be found in the `methods.rs` file. - -## Test Your W3bstream Project - -Once you have generated a W3bstream project file that includes a custom prover for your dApp, you might want to test it. - -Please refer to the [OPERATOR GUIDE](./OPERATOR_GUIDE.md) for instructions on how to: - -1. Run a W3bstream node locally. -2. Copy the W3bstream project file into the node's project directory (default location is ./test/project). -3. Run the node and send your test messages. - -## Registering Your Project - -To allow W3bstream node operators to download your project and compute ZK proofs for your dApp, you must register your W3bstream project on the IoTeX blockchain: - -### Acquire a Project ID +#### Step 2: Build the circuit ```bash -ioctl ioid register "your project name" +cd examples/risc0-circuit/ +cargo build --release ``` -### Register Project +The path of `methods.rs` will be printed in the output, as sown in the example below: ```bash -ioctl ws project register --id "your project id" +warning: methods_path is: "w3bstream/examples/risc0-circuits/target/release/build/risc0-circuits-5efc4ff59af940ab/out/methods.rs" ``` -### Use the Project File Generated above and Update Project Config +#### Step 3: Generate the W3bstream Config File ```bash -ioctl ws project update --id "your project id" --path "path/to/project_file" +ioctl ws project config -t 1 -i "methods.rs" -o "path/filename.json" -e "{\"image_id\":\"RANGE_ID\", \"elf\":\"RANGE_ELF\"}" ``` -### Start the Project +Customize the values for `image_id` and `elf` with the actual values found in your `methods.rs` file. -```bash -ioctl ws project resume --id "your project id" -``` +
-### Retrieve Project Info +## Test Your W3bstream Project -```bash -ioctl ws project query --id "your project id" -``` +Refer to the [Quick Start](QUICK_START.md) guide to learn how to **register** your project on-chain, **deploy** your W3bstream config file, and **send messages** to the demo API node. -### Set Required Prover Amount of the Project +## Advanced Concepts -The default prover amount will process the project's tasks is one. And we can customize it by +### Bind a New ZK VmType -```bash -ioctl ws project attributes set --id "your project id" --key "RequiredProverAmount" --val "your expected amount" -``` +Registered zk VM types in W3bstream include `risc0`, `halo2`, `zkwasm` and `wasm`. Their corresponding IDs are `1` for risc0, `2`for halo2, `3` for zkWASM, and `4` for WASM. -### Stop the Project - -If you want to stop the project's task process, can use this cmd +To use a different zk VM type in the prover, you’ll need to register it in the VM type contract: ```bash -ioctl ws project pause --id "your project id" -``` - -## Bind New ZK VmType - -The zk vm types registered in the contract are `risc0`, `halo2`, `zkwasm` and `wasm`, and the `id` of risc0 is `1`, halo2 is `2`, zkwasm is `3`, and wasm is `4`. - -If you want to use a new zk vm type in the prover, you need to register vm type to the vm type contract. - -``` bash ws vmtype register --vm-type "new vm type name" ``` -the command will return a `id`, and the `id` is the "new vm type" id. And you can use the `id` to query the name of the `id`. -``` bash +This command returns an id for the new VM type, which you can use to query the name associated with it: + +```bash ioctl ws vmtype query --id "vm type id" ``` -If you don't want to use a vm type, you need to `pause` it. +To disable a VM type, use `pause`: -``` bash +```bash ioctl ws vmtype pause --id "vm type id" ``` -You can also use `resume` to `resume` it. +To re-enable it, use `resume`: ``` bash ioctl ws vmtype resume --id "vm type id" ``` -## Verify Proof On Chain +### Verifying Proofs in your Dapp -If you want to verify a proof on the chain, -first, you should set the `output` from `stdout` to `ethereumContract` in the **project config file**, like this +To receive and verify a W3bstream proof in your DApp, set the `output` field in the configuration file to `ethereumContract`, as shown below: -### Set Output to EthereumContract -``` bash +
+Proof Output set to EthereumContract +
 {
-   "output": {
-     "type": "ethereumContract",
-     "ethereum": {
-       "chainEndpoint": "https://babel-api.testnet.iotex.io",
-       "contractAddress": "0x3841A746F811c244292194825C5e528e61F890F8",
-       "contractMethod": "route",
-       "contractAbiJSON": "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\", \"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"dapp\",\"type\":\"address\"}],\"name\":\"DappBound\",\"type\":\"event\"},{\"anonymous\":false,  \"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}], \"name\":\"DappUnbound\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"indexed\":true,  \"internalType\":\"uint256\",\"name\":\"router\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false, \"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"revertReason\",\"type\":\"string\"}],\"name\":\"DataProcessed\",  \"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"inputs\":  [{\"internalType\":\"uint256\",\"name\":\"_projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_dapp\",\"type\":\"address\"}],\"name\":\"bindDapp\",\"outputs\":[],  \"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"dapp\",\"outputs\":[{\"internalType\":\"address\", \"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"fleetManagement\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",   \"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_fleetManagement\",\"type\":\"address\"},{\"internalType\":\"address\", \"name\":\"_projectStore\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"projectStore\",\"outputs\":  [{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_projectId\", \"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_proverId\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"_clientId\",\"type\":\"string\"},{\"internalType\":\"bytes\", \"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"route\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_projectId\",   \"type\":\"uint256\"}],\"name\":\"unbindDapp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]"
-     }
-   }
-}
-```
-`chainEndpoint` is the target chain endpoint, 
-`contractAddress` is the router contract address, 
-`contractMethod` is the function that you want to call, 
-`contractAbiJSON` is the ABI of router contract.
-
-second, you should bind the Dapp of your project with the `Router`.
-
-## Bind Your Dapp Contract
-
-If you want to verify zk proof in your Dapp contract, you need to bind the project with the Dapp.
-
-``` bash
-ioctl ws router bind --project-id "your project id" --dapp "your dapp contract address"
-```
-
-If you want to unbind the project with the Dapp.
-
-``` bash
-ioctl ws router unbind --project-id "your project id"
-```
-
-## Dapp Contract
-The Dapp Contract that bound with the project will implement the interface `process`, then invoke the verifcation contract, and verify proof. 
-
-The example of Halo2Dapp 
-
-``` bash
-function process(uint256 _projectId, uint256 _proverId, string memory _clientId, bytes calldata _data) public {
-    require(halo2Verifier != address(0), "verifier address not set");
-    
-    (uint256 publicInput, uint256 taskID, bytes memory _proof) = abi.decode(_data, (uint256, uint256, bytes));
-    bytes32 _publicInput = uint256ToFr(publicInput);
-    bytes32 _taskID = uint256ToFr(taskID);
-    bytes32 _projectID = uint256ToFr(projectId);
-    bytes memory callData = abi.encodePacked(_publicInput, _projectID, _taskID, _proof);
-    
-    (bool success,) = halo2Verifier.staticcall(callData);
-    require(success, "Failed to verify proof");
-    // TODO
-}
-```
+  "defaultVersion": "0.1",
+  "versions": [
+    {
+      "version": "v1.0.0",
+      "vmTypeID": 1,
+      "output": {
+         "type": "ethereumContract",
+        "ethereum": {
+          "chainEndpoint": "https://babel-api.testnet.iotex.io",
+          "contractAddress": "0x28E0A99A76a467E7418019cBBbF79E4599C73B5B",
+          "contractMethod": "route",
+          "contractAbiJSON": "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"dapp\",\"type\":\"address\"}],\"name\":\"DappBound\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"DappUnbound\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"router\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"revertReason\",\"type\":\"string\"}],\"name\":\"DataProcessed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_dapp\",\"type\":\"address\"}],\"name\":\"bindDapp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"dapp\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"fleetManagement\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_fleetManagement\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_projectStore\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"projectStore\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_proverId\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"_clientId\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"route\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_projectId\",\"type\":\"uint256\"}],\"name\":\"unbindDapp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]"
+        }
+      },
+      "codeExpParam": " ..."
+      ...
+      
+
+ +### Dapp Contracts + +The DApp contract linked to the W3bstream project must implement the [IDapp](../smartcontracts/contracts/interfaces/IDapp.sol) interface. This allows it to call the verification contract with the appropriate data to verify proofs before performing any additional computations. + +**For Risc0** proofs: A verifier is already deployed on-chain. You can refer to a minimal[Dapp Example](../examples/risc0-circuit/contract/Risc0Dapp.sol). + +**For Halo2** proofs: A corresponding Solidity verifier contract for the prover must be created during the prover compilation process and deployed on-chain. See the minimal [Dapp Example](../examples/halo2-circuit/contracts/Halo2Dapp.sol). diff --git a/docs/OPERATOR_GUIDE.md b/docs/OPERATOR_GUIDE.md index 3545a40c..e1a77dfa 100644 --- a/docs/OPERATOR_GUIDE.md +++ b/docs/OPERATOR_GUIDE.md @@ -1,4 +1,6 @@ -# IoTeX W3bstream Sprout Node Operator Guide +# IoTeX W3bstream Node Operator Guide + +> ⚠️ **Note**: Please note that this guide is outdated. Currently, running a community node on W3bstream is not supported. Stay tuned for updates. W3bstream is a permissionless, decentralized protocol within the IoTeX Network, where node operators contribute computing power to support verifiable computations for blockchain applications. These applications rely on insights from real-world data to trigger their token economies. Anyone can become a W3bstream Node Operator in the IoTeX Network, choosing which dApps to support in processing data and generating ZK (Zero Knowledge) Proofs. diff --git a/docs/QUICK_START.md b/docs/QUICK_START.md index 5b102b46..cf73c9a7 100644 --- a/docs/QUICK_START.md +++ b/docs/QUICK_START.md @@ -1,218 +1,161 @@ -# Interacting with W3bstream - ---- +# Quick Start ## Prerequisites -- jq: - [installation instructions →](https://jqlang.github.io/jq/) - -- curl: - [installation instructions →](https://curl.se/) - -## Send messages use curl - -We have created preset test projects for three types of zero-knowledge proof vm -(`risc0`, `halo2` and `zkWASM`). You can interact with the **w3bstream sprout** -service by _task submitting_ and _task querying_ APIs to commit proof task and -retrieve task proof status. +Ensure you have the following tools installed: -Examples of sending messages to pre-created projects: +- [ioctl](https://docs.iotex.io/builders/reference-docs/ioctl-client#install-latest-release-build): For interacting with the IoTeX blockchain. +- [Cargo](https://doc.rust-lang.org/cargo/getting-started/installation.html): Required for building the prover code. +- [curl](https://curl.se/): For sending messages to the API node. -Send a message to a RISC0-based test project (ID 91): +- [jq](https://jqlang.github.io/jq/): To format JSON output. -```bash -curl -X POST \ - -H "Content-Type: application/json" \ - -d '{"projectID": 91,"projectVersion": "0.1","data": "{\"private_input\":\"14\", \"public_input\":\"3,34\", \"receipt_type\":\"Snark\"}"}'\ - https://sprout-testnet.w3bstream.com/message -``` +## Step 1: Create and fund a Developer wallet -Send a message to the Halo2-based test project (ID 92): +Start by creating an IoTeX developer wallet and funding it with test tokens. -```bash -curl -X POST \ - -H "Content-Type: application/json" \ - -d '{"projectID": 92,"projectVersion": "0.1","data": "{\"private_a\": 3, \"private_b\": 4}"}' \ - https://sprout-testnet.w3bstream.com/message +```sh +ioctl account createadd devaccount ``` -Send a message to a zkWasm-based test project (ID 93): - -```bash -curl -X POST \ - -H "Content-Type: application/json" \ - -d '{"projectID": 93,"projectVersion": "0.1","data": "{\"private_input\": [1, 1] , \"public_input\": [2] }"}' \ - https://sprout-testnet.w3bstream.com/message -``` +Note the 0x wallet address provided. You can claim test IOTX tokens on the Developer portal at -## Query the status of a proof request +## Step 2: Register a new DePIN Project on IoTeX -After sending a message, you'll receive a message ID(an uuid to identify the -unique task) as a response from the **w3bstream sprout** service. +To register a new project: -```json -{ - "messageID": "8785a42c-9d6c-4780-910c-de0147aea243" -} +```sh +ioctl ioid register "your project unique name" ``` -you can query the status of the message request with: +Take note of your `Project ID` and set it as an environment variable: -```bash -curl https://sprout-testnet.w3bstream.com/message/8785a42c-9d6c-4780-910c-de0147aea243 | jq -r '.' +```sh +export PROJECT_ID=YOUR_PROJECT_ID ``` -example result: +## Step 3: Deploy the Demo prover -```json -{ - "messageID": "8785a42c-9d6c-4780-910c-de0147aea243", - "states": [ - { - "state": "received", - "time": "2024-06-10T09:30:05.790151Z", - "comment": "", - "result": "" - }, - { - "state": "packed", - "time": "2024-06-10T09:30:05.793218Z", - "comment": "", - "result": "" - }, - { - "state": "dispatched", - "time": "2024-06-10T09:30:10.87987Z", - "comment": "", - "result": "" - }, - { - "state": "proved", - "time": "2024-06-10T09:30:11.193027Z", - "comment": "", - "result": "proof result" - }, - { - "state": "outputted", - "time": "2024-06-10T09:30:11.20942Z", - "comment": "output type: stdout", - "result": "" - } - ] -} -``` +Next, deploy a demo range prover based on Risc0. Follow these steps: -When the request is in "proved" state, you can check out the comment to find out -the hash of the blockchain transaction that wrote the proof to the destination -chain. +```sh +git clone https://github.com/iotexproject/w3bstream -## Send messages with token (Experimental) +cd w3bstream/examples/risc0-circuit -For security purposes, **w3bstream sprout** integrates ioID identity verification and -DID-Comm message encryption features. Next, you can use the `didctl` -command-line tool to simulate message encryption, allowing you to submit -encrypted proof tasks. +ioctl ws project update --id $PROJECT_ID --path range_prover.json +``` -> note: currently, `didctl` is an experimental tool and is only supported on -> Linux. Adaptation for other os is still under development. +## Step 4: Link Your Project to the Dummy DApp Contract -### install `didctl` command-line +Bind your project to a sample DApp contract to ensure it receives your ZK proofs: -```bash -git clone git@github.com:machinefi/ioconnect-go.git -make targets && mv cmd/didctl __YOUR_SYSTEM_PATH__ +```sh +ioctl ws router bind --project-id $PROJECT_ID --dapp 0xba0104cD02672840Da55Bb14bebdd047Dfbfc02B ``` -### fetch **w3bstream sprout** service did document +
+ Learn more + The "dummy dapp" is a simple contract that will store ZK-Proofs from W3bstream without further processing. This can be useful for debugging proof generation if your Dapp is experiencing issues. +
-```bash -curl https://sprout-testnet.w3bstream.com/didDoc -``` +## Step 5: Activate Your Project -For convenience, you can set the did document of w3bstream sprout service as an -environment variable. +After deployment, the project is initially set to “paused,” meaning W3bstream won’t generate proofs for it until resumed: -```bash -export serverdoc='{"@context":["https://www.w3.org/ns/did/v1","https://w3id.org/security#keyAgreementMethod"],"id":"did:io:0x81a3864898d6098b15eff17b6452fc4e28e05983","authentication":["did:io:0x81a3864898d6098b15eff17b6452fc4e28e05983#Key-secp256k1-2147483616"],"keyAgreement":["did:io:0xaefe2f283b262978a1cabc483410593d62c9c732#Key-p256-2147483617"],"verificationMethod":[{"id":"did:io:0xaefe2f283b262978a1cabc483410593d62c9c732#Key-p256-2147483617","type":"JsonWebKey2020","controller":"did:io:0x81a3864898d6098b15eff17b6452fc4e28e05983","publicKeyJwk":{"crv":"P-256","x":"xaKC13yoR2Q6FSF6mrm027-onSs9qud4OApuIE6eFd4","y":"PQk3EoMlKYf9FqorTUN8slXpNSpHyhZdxDBJ9dJmnzE","d":"","kty":"EC","kid":"Key-p256-2147483617"}},{"id":"did:io:0x81a3864898d6098b15eff17b6452fc4e28e05983#Key-secp256k1-2147483616","type":"JsonWebKey2020","controller":"did:io:0x81a3864898d6098b15eff17b6452fc4e28e05983","publicKeyJwk":{"crv":"secp256k1","x":"CBlqq_7ZfcFALq4UL-GRMrKok8Zj8XNRBCWG4XT4sVQ","y":"SopcvJFTWw8hOEUl_eE96YIcpDttqeRZSMkz4-dho6Q","d":"","kty":"EC","kid":"Key-secp256k1-2147483616"}}]}' -export serverdid=did:io:0x81a3864898d6098b15eff17b6452fc4e28e05983 +```sh +ioctl ws project resume --id $PROJECT_ID ``` -### set simulate device client did and JWK secret envs +## Step 6: Test the project -In the next steps, we will use a simulated device that already has an **ioID** -identity to submit encrypted request message to **w3bstream sprout**. Of course, if you -already have an ioID identity and the corresponding JWK keys, you can replace -the client information below. +The demo range prover requires a message with two inputs: an integer to test and the range to test within. Send this message to the W3bstream API node as follows: -```bash -export clientdid=did:io:0xba80b710f0c27c8b3b72df63861e2ecea9c5aa73 -export clientsec=vebfEf+v2rLUzFm2mMH9XzPbZJFzaEj3nctUCnoAbMw= +```sh +curl --location 'https://dragonfruit-testnet.w3bstream.com/message' \ +--header 'Content-Type: application/json' \ +--data '{ + "projectID": '"$PROJECT_ID"', + "projectVersion": "v1.0.0", + "data": "{\"private_input\":\"14\", \"public_input\":\"3,34\", \"receipt_type\":\"Snark\"}", + "Signature": "0x2978cfc3f4dd378c6bf4cac4b8164d1f8ce32c251b6c0c0ed5dfd48c907a82af4185e933f01e48dd8e26f84b376b7158140ebfcd2c4400c030ec2c6c0ffd37ae00" +}' ``` -### request token from **w3bstream sprout** service - -First, use the `curl` command to request the issuance of a token from the -**w3bstream sprout** service. +Record the Task ID from the response, wait a few minutes, and then check its status: -```bash -curl -X POST -d '{"clientID":"'$clientdid'"}' https://sprout-testnet.w3bstream.com/issue_vc +```sh +curl --location --request GET 'https://dragonfruit-testnet.w3bstream.com/task' \ +--header 'Content-Type: application/json' \ +--data '{ + "projectID": '"$PROJECT_ID"', + "taskID": "YOUR TASK ID HERE" +}' | jq ``` -For security purposes, **w3bstream sprout** will respond with an encrypted token. For -convenience, you can set the responded encrypted token as an env var +Example result: -```bash -export ciphertoken= # response above +```json +{ + "projectID": 934, + "taskID": "0xec1d012fff25fdfe3e16e823a1d7ab1315b5fa76f19d7081724f8ee8a52c9633", + "states": [ + { + "state": "packed", + "time": "2024-10-29T15:53:22.121767Z" + }, + { + "state": "assigned", + "time": "2024-10-29T15:53:30.923506Z", + "prover_id": "did:io:862FB1E46a94F62D792Ac24aeF12e02Ea6673024" + }, + { + "state": "settled", + "time": "2024-10-29T15:54:10.910397Z", + "comment": "The task has been completed. Please check the generated proof in the corresponding DApp contract.", + "transaction_hash": "0xc27c21fb6f8a1d208680ad6c300884a14eba3525862ee8b79e1800920bc32f17" + } + ] +} ``` -Next, we need to use the `didctl` tool to decrypt the message and obtain the -plaintext token. +When the Task ID reaches “settled” status, you can verify the `transaction_hash` on to review the proof written to the DApp contract. -```bash -didctl decrypt --cipher $ciphertoken --encryptor $serverdid --recipient $clientsec --recipient-id 2 -``` +## What's next?? -For convenience, you can set the plain token as env var. - -```bash -export TOKEN= #output above -``` +Refer to the [Developer Guide](./DEVELOPER_GUIDE.md) to learn how to customize the prover and the Dapp contract. -### commit encrypted proof message +## Additional commands -First, prepare plain request body +### Retrieve Project Info -> note: the simulated device is bound with project 21, if you use your -> own `ioID` and JWK key to replace the `projectID` and other request -> information. +Use the following command to retrieve information about your project: ```bash -export plain_task='{"projectID": 21, "projectVersion": "0.1", "data": "{\"private_input\":\"14\", \"public_input\":\"3,34\", \"receipt_type\":\"Snark\"}"}' +ioctl ws project query --id "your project id" ``` -Next, encrypt request body - -```bash -didctl encrypt --recipient $serverdoc --encryptor $clientdid --plain $plain_task -``` +### Set the Required number of Provers of the Project -For convenience, you can set the encrypted request body as env var. +By default, only one prover processes the project’s data. To customize this number, use: ```bash -export cipherdata= #output above +ioctl ws project attributes set --id "your project id" --key "RequiredProverAmount" --val "your expected amount" ``` -Commit encrypted proof message with token +### Stop the Project + +To stop data processing and proof generation for your project, use the command below: ```bash -curl -X POST -d $cipherdata \ - -H "Authorization: Bearer $TOKEN" https://sprout-testnet.w3bstream.com/message -export cipherresponse= # response above +ioctl ws project pause --id "your project id" ``` -Last, decrypt **w3bstream sprout** response to retrieve message id +### Unbind the Project from the DApp -```bash -didctl decrypt --recipient $clientsec --encryptor $serverdid --cipher $cipherresp --recipient-id 2 +If you want to unbind the project from the DApp: + +```sh +ioctl ws router unbind --project-id "your project id" ``` + diff --git a/examples/nft-bytecode.hex b/examples/nft-bytecode.hex new file mode 100644 index 00000000..e6241540 --- /dev/null +++ b/examples/nft-bytecode.hex @@ -0,0 +1 @@ +6080604052348015600e575f80fd5b506133168061001c5f395ff3fe608060405234801561000f575f80fd5b5060043610610171575f3560e01c80636a627842116100dc578063a22cb46511610095578063b88d4fde1161006f578063b88d4fde14610443578063c87b56dd1461045f578063e985e9c51461048f578063f2fde38b146104bf57610171565b8063a22cb465146103db578063a327039a146103f7578063aa271e1a1461041357610171565b80636a6278421461030557806370a0823114610335578063715018a6146103655780638a6db9c31461036f5780638da5cb5b1461039f57806395d89b41146103bd57610171565b80633092afd51161012e5780633092afd51461024957806342842e0e146102655780634cd88b76146102815780634e44d9561461029d57806355f804b3146102b95780636352211e146102d557610171565b806301ffc9a71461017557806306fdde03146101a5578063081812fc146101c3578063095ea7b3146101f357806323b872dd1461020f5780632ddbd13a1461022b575b5f80fd5b61018f600480360381019061018a91906123c8565b6104db565b60405161019c919061240d565b60405180910390f35b6101ad6105bc565b6040516101ba9190612496565b60405180910390f35b6101dd60048036038101906101d891906124e9565b610659565b6040516101ea9190612553565b60405180910390f35b61020d60048036038101906102089190612596565b610674565b005b610229600480360381019061022491906125d4565b61068a565b005b610233610789565b6040516102409190612633565b60405180910390f35b610263600480360381019061025e919061264c565b61078f565b005b61027f600480360381019061027a91906125d4565b610872565b005b61029b600480360381019061029691906127a3565b610891565b005b6102b760048036038101906102b29190612596565b610a3b565b005b6102d360048036038101906102ce9190612876565b610b2b565b005b6102ef60048036038101906102ea91906124e9565b610b82565b6040516102fc9190612553565b60405180910390f35b61031f600480360381019061031a919061264c565b610b93565b60405161032c9190612633565b60405180910390f35b61034f600480360381019061034a919061264c565b610cfa565b60405161035c9190612633565b60405180910390f35b61036d610dbe565b005b6103896004803603810190610384919061264c565b610dd1565b6040516103969190612633565b60405180910390f35b6103a7610e17565b6040516103b49190612553565b60405180910390f35b6103c5610e4c565b6040516103d29190612496565b60405180910390f35b6103f560048036038101906103f091906128eb565b610eea565b005b610411600480360381019061040c9190612596565b610f00565b005b61042d6004803603810190610428919061264c565b61108e565b60405161043a919061240d565b60405180910390f35b61045d600480360381019061045891906129c7565b6110df565b005b610479600480360381019061047491906124e9565b611104565b6040516104869190612496565b60405180910390f35b6104a960048036038101906104a49190612a47565b61116a565b6040516104b6919061240d565b60405180910390f35b6104d960048036038101906104d4919061264c565b611206565b005b5f7f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806105a557507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806105b557506105b48261128a565b5b9050919050565b60605f6105c76112f3565b9050805f0180546105d790612ab2565b80601f016020809104026020016040519081016040528092919081815260200182805461060390612ab2565b801561064e5780601f106106255761010080835404028352916020019161064e565b820191905f5260205f20905b81548152906001019060200180831161063157829003601f168201915b505050505091505090565b5f6106638261131a565b5061066d826113a0565b9050919050565b61068682826106816113e7565b6113ee565b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036106fa575f6040517f64a0ae920000000000000000000000000000000000000000000000000000000081526004016106f19190612553565b60405180910390fd5b5f61070d83836107086113e7565b611400565b90508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610783578382826040517f64283d7b00000000000000000000000000000000000000000000000000000000815260040161077a93929190612ae2565b60405180910390fd5b50505050565b60035481565b61079761161d565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508073ffffffffffffffffffffffffffffffffffffffff167fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb6669260405160405180910390a250565b61088c83838360405180602001604052805f8152506110df565b505050565b5f61089a6116a4565b90505f815f0160089054906101000a900460ff161590505f825f015f9054906101000a900467ffffffffffffffff1690505f808267ffffffffffffffff161480156108e25750825b90505f60018367ffffffffffffffff1614801561091557505f3073ffffffffffffffffffffffffffffffffffffffff163b145b905081158015610923575080155b1561095a576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001855f015f6101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555083156109a7576001855f0160086101000a81548160ff0219169083151502179055505b6109b0336116cb565b6109ba87876116df565b60405180602001604052805f815250600290816109d79190612cb4565b508315610a32575f855f0160086101000a81548160ff0219169083151502179055507fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d26001604051610a299190612dcf565b60405180910390a15b50505050505050565b610a4361161d565b60015f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508060015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff167f46980fca912ef9bcdbd36877427b6b90e860769f604e89c0e67720cece530d2082604051610b1f9190612633565b60405180910390a25050565b610b3361161d565b818160029182610b44929190612df2565b507ff4246bde4c2b35ca1266f5ec0cafe5d0dbb2cc6b2c339a541fb710b700e60a2a8282604051610b76929190612eeb565b60405180910390a15050565b5f610b8c8261131a565b9050919050565b5f8073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610c02576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bf990612f57565b60405180910390fd5b5f60015f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f8111610c85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c7c90612fbf565b60405180910390fd5b6001805f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825403925050819055505f60035f8154610cde9061300a565b9190508190559050610cf084826116f5565b8092505050919050565b5f80610d046112f3565b90505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610d76575f6040517f89c62b64000000000000000000000000000000000000000000000000000000008152600401610d6d9190612553565b60405180910390fd5b806003015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054915050919050565b610dc661161d565b610dcf5f6117e8565b565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b5f80610e216118b9565b9050805f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505090565b60605f610e576112f3565b9050806001018054610e6890612ab2565b80601f0160208091040260200160405190810160405280929190818152602001828054610e9490612ab2565b8015610edf5780601f10610eb657610100808354040283529160200191610edf565b820191905f5260205f20905b815481529060010190602001808311610ec257829003601f168201915b505050505091505090565b610efc610ef56113e7565b83836118e0565b5050565b610f0861161d565b5f8111610f4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f419061309b565b60405180910390fd5b5f808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16610fd2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fc990613103565b60405180910390fd5b8060015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461101e9190613121565b925050819055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f07c0d62ae316652e5119c300b4d28642974938bc9dc91861999a4c778431f93c836040516110829190612633565b60405180910390a35050565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b6110ea84848461068a565b6110fe6110f56113e7565b85858585611a57565b50505050565b606061110f8261131a565b505f611119611c03565b90505f8151116111375760405180602001604052805f815250611162565b8061114184611c93565b60405160200161115292919061318e565b6040516020818303038152906040525b915050919050565b5f806111746112f3565b9050806005015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1691505092915050565b61120e61161d565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361127e575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016112759190612553565b60405180910390fd5b611287816117e8565b50565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f7f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab0079300905090565b5f8061132583611d5d565b90505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361139757826040517f7e27328900000000000000000000000000000000000000000000000000000000815260040161138e9190612633565b60405180910390fd5b80915050919050565b5f806113aa6112f3565b9050806004015f8481526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915050919050565b5f33905090565b6113fb8383836001611da4565b505050565b5f8061140a6112f3565b90505f61141685611d5d565b90505f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161461145757611456818587611f71565b5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146114e4576114965f865f80611da4565b6001826003015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825403925050819055505b5f73ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614611565576001826003015f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b85826002015f8781526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550848673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a480925050509392505050565b6116256113e7565b73ffffffffffffffffffffffffffffffffffffffff16611643610e17565b73ffffffffffffffffffffffffffffffffffffffff16146116a2576116666113e7565b6040517f118cdaa70000000000000000000000000000000000000000000000000000000081526004016116999190612553565b60405180910390fd5b565b5f7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00905090565b6116d3612034565b6116dc81612074565b50565b6116e7612034565b6116f182826120f8565b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611765575f6040517f64a0ae9200000000000000000000000000000000000000000000000000000000815260040161175c9190612553565b60405180910390fd5b5f61177183835f611400565b90505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146117e3575f6040517f73c6ac6e0000000000000000000000000000000000000000000000000000000081526004016117da9190612553565b60405180910390fd5b505050565b5f6117f16118b9565b90505f815f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905082825f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3505050565b5f7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300905090565b5f6118e96112f3565b90505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361195b57826040517f5b08ba180000000000000000000000000000000000000000000000000000000081526004016119529190612553565b60405180910390fd5b81816005015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3184604051611a49919061240d565b60405180910390a350505050565b5f8373ffffffffffffffffffffffffffffffffffffffff163b1115611bfc578273ffffffffffffffffffffffffffffffffffffffff1663150b7a02868685856040518563ffffffff1660e01b8152600401611ab59493929190613203565b6020604051808303815f875af1925050508015611af057506040513d601f19601f82011682018060405250810190611aed9190613261565b60015b611b71573d805f8114611b1e576040519150601f19603f3d011682016040523d82523d5f602084013e611b23565b606091505b505f815103611b6957836040517f64a0ae92000000000000000000000000000000000000000000000000000000008152600401611b609190612553565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614611bfa57836040517f64a0ae92000000000000000000000000000000000000000000000000000000008152600401611bf19190612553565b60405180910390fd5b505b5050505050565b606060028054611c1290612ab2565b80601f0160208091040260200160405190810160405280929190818152602001828054611c3e90612ab2565b8015611c895780601f10611c6057610100808354040283529160200191611c89565b820191905f5260205f20905b815481529060010190602001808311611c6c57829003601f168201915b5050505050905090565b60605f6001611ca184612133565b0190505f8167ffffffffffffffff811115611cbf57611cbe61267f565b5b6040519080825280601f01601f191660200182016040528015611cf15781602001600182028036833780820191505090505b5090505f82602001820190505b600115611d52578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8581611d4757611d4661328c565b5b0494505f8503611cfe575b819350505050919050565b5f80611d676112f3565b9050806002015f8481526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915050919050565b5f611dad6112f3565b90508180611de757505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611f19575f611df68561131a565b90505f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611e6057508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b8015611e735750611e71818561116a565b155b15611eb557836040517fa9fbf51f000000000000000000000000000000000000000000000000000000008152600401611eac9190612553565b60405180910390fd5b8215611f1757848673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b84816004015f8681526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050505050565b611f7c838383612284565b61202f575f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611ff057806040517f7e273289000000000000000000000000000000000000000000000000000000008152600401611fe79190612633565b60405180910390fd5b81816040517f177e802f0000000000000000000000000000000000000000000000000000000081526004016120269291906132b9565b60405180910390fd5b505050565b61203c612344565b612072576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b61207c612034565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036120ec575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016120e39190612553565b60405180910390fd5b6120f5816117e8565b50565b612100612034565b5f6121096112f3565b905082815f01908161211b9190612cb4565b508181600101908161212d9190612cb4565b50505050565b5f805f90507a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000831061218f577a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000083816121855761218461328c565b5b0492506040810190505b6d04ee2d6d415b85acef810000000083106121cc576d04ee2d6d415b85acef810000000083816121c2576121c161328c565b5b0492506020810190505b662386f26fc1000083106121fb57662386f26fc1000083816121f1576121f061328c565b5b0492506010810190505b6305f5e1008310612224576305f5e100838161221a5761221961328c565b5b0492506008810190505b612710831061224957612710838161223f5761223e61328c565b5b0492506004810190505b6064831061226c57606483816122625761226161328c565b5b0492506002810190505b600a831061227b576001810190505b80915050919050565b5f8073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561233b57508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614806122fc57506122fb848461116a565b5b8061233a57508273ffffffffffffffffffffffffffffffffffffffff16612322836113a0565b73ffffffffffffffffffffffffffffffffffffffff16145b5b90509392505050565b5f61234d6116a4565b5f0160089054906101000a900460ff16905090565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6123a781612373565b81146123b1575f80fd5b50565b5f813590506123c28161239e565b92915050565b5f602082840312156123dd576123dc61236b565b5b5f6123ea848285016123b4565b91505092915050565b5f8115159050919050565b612407816123f3565b82525050565b5f6020820190506124205f8301846123fe565b92915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61246882612426565b6124728185612430565b9350612482818560208601612440565b61248b8161244e565b840191505092915050565b5f6020820190508181035f8301526124ae818461245e565b905092915050565b5f819050919050565b6124c8816124b6565b81146124d2575f80fd5b50565b5f813590506124e3816124bf565b92915050565b5f602082840312156124fe576124fd61236b565b5b5f61250b848285016124d5565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61253d82612514565b9050919050565b61254d81612533565b82525050565b5f6020820190506125665f830184612544565b92915050565b61257581612533565b811461257f575f80fd5b50565b5f813590506125908161256c565b92915050565b5f80604083850312156125ac576125ab61236b565b5b5f6125b985828601612582565b92505060206125ca858286016124d5565b9150509250929050565b5f805f606084860312156125eb576125ea61236b565b5b5f6125f886828701612582565b935050602061260986828701612582565b925050604061261a868287016124d5565b9150509250925092565b61262d816124b6565b82525050565b5f6020820190506126465f830184612624565b92915050565b5f602082840312156126615761266061236b565b5b5f61266e84828501612582565b91505092915050565b5f80fd5b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6126b58261244e565b810181811067ffffffffffffffff821117156126d4576126d361267f565b5b80604052505050565b5f6126e6612362565b90506126f282826126ac565b919050565b5f67ffffffffffffffff8211156127115761271061267f565b5b61271a8261244e565b9050602081019050919050565b828183375f83830152505050565b5f612747612742846126f7565b6126dd565b9050828152602081018484840111156127635761276261267b565b5b61276e848285612727565b509392505050565b5f82601f83011261278a57612789612677565b5b813561279a848260208601612735565b91505092915050565b5f80604083850312156127b9576127b861236b565b5b5f83013567ffffffffffffffff8111156127d6576127d561236f565b5b6127e285828601612776565b925050602083013567ffffffffffffffff8111156128035761280261236f565b5b61280f85828601612776565b9150509250929050565b5f80fd5b5f80fd5b5f8083601f84011261283657612835612677565b5b8235905067ffffffffffffffff81111561285357612852612819565b5b60208301915083600182028301111561286f5761286e61281d565b5b9250929050565b5f806020838503121561288c5761288b61236b565b5b5f83013567ffffffffffffffff8111156128a9576128a861236f565b5b6128b585828601612821565b92509250509250929050565b6128ca816123f3565b81146128d4575f80fd5b50565b5f813590506128e5816128c1565b92915050565b5f80604083850312156129015761290061236b565b5b5f61290e85828601612582565b925050602061291f858286016128d7565b9150509250929050565b5f67ffffffffffffffff8211156129435761294261267f565b5b61294c8261244e565b9050602081019050919050565b5f61296b61296684612929565b6126dd565b9050828152602081018484840111156129875761298661267b565b5b612992848285612727565b509392505050565b5f82601f8301126129ae576129ad612677565b5b81356129be848260208601612959565b91505092915050565b5f805f80608085870312156129df576129de61236b565b5b5f6129ec87828801612582565b94505060206129fd87828801612582565b9350506040612a0e878288016124d5565b925050606085013567ffffffffffffffff811115612a2f57612a2e61236f565b5b612a3b8782880161299a565b91505092959194509250565b5f8060408385031215612a5d57612a5c61236b565b5b5f612a6a85828601612582565b9250506020612a7b85828601612582565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680612ac957607f821691505b602082108103612adc57612adb612a85565b5b50919050565b5f606082019050612af55f830186612544565b612b026020830185612624565b612b0f6040830184612544565b949350505050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302612b737fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82612b38565b612b7d8683612b38565b95508019841693508086168417925050509392505050565b5f819050919050565b5f612bb8612bb3612bae846124b6565b612b95565b6124b6565b9050919050565b5f819050919050565b612bd183612b9e565b612be5612bdd82612bbf565b848454612b44565b825550505050565b5f90565b612bf9612bed565b612c04818484612bc8565b505050565b5b81811015612c2757612c1c5f82612bf1565b600181019050612c0a565b5050565b601f821115612c6c57612c3d81612b17565b612c4684612b29565b81016020851015612c55578190505b612c69612c6185612b29565b830182612c09565b50505b505050565b5f82821c905092915050565b5f612c8c5f1984600802612c71565b1980831691505092915050565b5f612ca48383612c7d565b9150826002028217905092915050565b612cbd82612426565b67ffffffffffffffff811115612cd657612cd561267f565b5b612ce08254612ab2565b612ceb828285612c2b565b5f60209050601f831160018114612d1c575f8415612d0a578287015190505b612d148582612c99565b865550612d7b565b601f198416612d2a86612b17565b5f5b82811015612d5157848901518255600182019150602085019450602081019050612d2c565b86831015612d6e5784890151612d6a601f891682612c7d565b8355505b6001600288020188555050505b505050505050565b5f819050919050565b5f67ffffffffffffffff82169050919050565b5f612db9612db4612daf84612d83565b612b95565b612d8c565b9050919050565b612dc981612d9f565b82525050565b5f602082019050612de25f830184612dc0565b92915050565b5f82905092915050565b612dfc8383612de8565b67ffffffffffffffff811115612e1557612e1461267f565b5b612e1f8254612ab2565b612e2a828285612c2b565b5f601f831160018114612e57575f8415612e45578287013590505b612e4f8582612c99565b865550612eb6565b601f198416612e6586612b17565b5f5b82811015612e8c57848901358255600182019150602085019450602081019050612e67565b86831015612ea95784890135612ea5601f891682612c7d565b8355505b6001600288020188555050505b50505050505050565b5f612eca8385612430565b9350612ed7838584612727565b612ee08361244e565b840190509392505050565b5f6020820190508181035f830152612f04818486612ebf565b90509392505050565b7f7a65726f206164647265737300000000000000000000000000000000000000005f82015250565b5f612f41600c83612430565b9150612f4c82612f0d565b602082019050919050565b5f6020820190508181035f830152612f6e81612f35565b9050919050565b7f65786365656473206d696e746572416c6c6f77616e63650000000000000000005f82015250565b5f612fa9601783612430565b9150612fb482612f75565b602082019050919050565b5f6020820190508181035f830152612fd681612f9d565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613014826124b6565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361304657613045612fdd565b5b600182019050919050565b7f7a65726f20616d6f756e740000000000000000000000000000000000000000005f82015250565b5f613085600b83612430565b915061309082613051565b602082019050919050565b5f6020820190508181035f8301526130b281613079565b9050919050565b7f6e6f74206d696e746572000000000000000000000000000000000000000000005f82015250565b5f6130ed600a83612430565b91506130f8826130b9565b602082019050919050565b5f6020820190508181035f83015261311a816130e1565b9050919050565b5f61312b826124b6565b9150613136836124b6565b925082820190508082111561314e5761314d612fdd565b5b92915050565b5f81905092915050565b5f61316882612426565b6131728185613154565b9350613182818560208601612440565b80840191505092915050565b5f613199828561315e565b91506131a5828461315e565b91508190509392505050565b5f81519050919050565b5f82825260208201905092915050565b5f6131d5826131b1565b6131df81856131bb565b93506131ef818560208601612440565b6131f88161244e565b840191505092915050565b5f6080820190506132165f830187612544565b6132236020830186612544565b6132306040830185612624565b818103606083015261324281846131cb565b905095945050505050565b5f8151905061325b8161239e565b92915050565b5f602082840312156132765761327561236b565b5b5f6132838482850161324d565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6040820190506132cc5f830185612544565b6132d96020830184612624565b939250505056fea26469706673582212202ddc96ed214c2cb923348421678f59edb0a714892bcb6dcefb71e217ad011f2764736f6c634300081a0033 \ No newline at end of file diff --git a/examples/risc0-circuit/range-prover.json b/examples/risc0-circuit/range-prover.json new file mode 100644 index 00000000..f05f66b6 --- /dev/null +++ b/examples/risc0-circuit/range-prover.json @@ -0,0 +1,20 @@ +{ + "defaultVersion": "0.1", + "versions": [ + { + "version": "v1.0.0", + "vmTypeID": 1, + "output": { + "type": "ethereumContract", + "ethereum": { + "chainEndpoint": "https://babel-api.testnet.iotex.io", + "contractAddress": "0x28E0A99A76a467E7418019cBBbF79E4599C73B5B", + "contractMethod": "route", + "contractAbiJSON": "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"dapp\",\"type\":\"address\"}],\"name\":\"DappBound\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"DappUnbound\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"router\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"revertReason\",\"type\":\"string\"}],\"name\":\"DataProcessed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_dapp\",\"type\":\"address\"}],\"name\":\"bindDapp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"dapp\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"fleetManagement\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_fleetManagement\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_projectStore\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"projectStore\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_proverId\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"_clientId\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"route\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_projectId\",\"type\":\"uint256\"}],\"name\":\"unbindDapp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]" + } + }, + "codeExpParam": "{\"image_id\":\"RANGE_ID\", \"elf\":\"RANGE_ELF\"}", + "code": "789cecbd39af6dbdd22e94f32b7674a319b81f361201c1850411905e2124c80109eeff47cb76553d55b6c71cabd9fbbce7634bebecf3ce6eb82b57fb54d57ff37fffd7fffdd7fff17ffd9fffcffffbeb7ff9efffe7fff13fff6ffff97ffa1ffedb5fffe9bffcd7fabffefaef7efda7ffe2c3f5fa55daebd7555ebf2ef7fae5e9cf9dffc2f837c5fefff85d9feaeb978fe1f52b8e2fe580bf731ffff84c4fc0bff9c5f9b3abff9be643e73863a0b2fe48bdf0eb8b1012ce42bd3afdf7fd0ef8e5bf03beab5e24f3d37218a2eaff8e617d113e1e5ca2ac4bbdcc4f06eaabbfbcda9a7abd7ec5b87ffdb1919597605e3e5a5a9fa5cf45cddad70a639a370a6e458878e2e53462f51f0f6a1f64f23192bb39bc277fe5f07ee4917df818fe6323f3f58e5c623cbd784e727ffffefefdfdfbfbf7f7efefdfdfbfbf7f7ffffefefdfdfbfbf7f7efefdfdfbfbf7f7ffffefefdfdfbfbf7cff9f38d620921b9d7af985fbf5279fdf2d7eb974ff3757afdf2dd6b4b6f848fffcef0c6f498fa3c5ec7fafa951abc2eaf5f25c3eb347cc1fc3abc7eb54b5ef719f838a20a7a0ad14e21ca1486a737ca1cfc758d377cfcf8e48ae47f8faf5fc187d7af8f2784be90abc733fc357ccafdb58f17f998fb2e39f52ad0b35a9b8ee6f031cbd41feebbf37e3a91e7e07ec470e8f71f1f0697877bfce39df6fa152e19fde39336032457eb0ff6f5ea51197e9d9acc2084b1cfb94f20f6f90f177dec83a4f98fe3cfaf041f87e563efe063271ffb19e3e9b3ab9be5cec9c95ee5d7afea6465e9f5abc8d01f2719026ca573f4c0404ba337e4e9fa71adf0cfc3c76ee62c5ff6de7e9be682ebf8f876f6fd807d1db1af8f97fd102e3984fed08f097e5073ee8beee752c6b90caa893443df9f9838a6d2e920d43964f0eff7fae1499d0efa63fd85c69c4bf8589c8b42477dbebe0e4a9a6b0ecef3168ccfafc89ff7250717c6234e4b2cfd4bd7208f8fddba46088c69dbcc49d1b69a535f558f7a16bebcfd3f07e71a8baeebc77d11bc2b65fd42bfdf7adbf417e6a261db9709084586e508b3bc913f7e923a9315c2fbd8cf226449e448ff1faa300b3f893a74ca1efc24303fc944a6f306c6f149f093c8e61dec4f646e9761887eac85658225d4f0412e614a843ccf7b702c59e3e43d1fd7be73d768b8eba0980f16391641d7e9e3b6cd63fcf8eec7a1f36f5626590c571cf7af15a49d3487a793bae69b4e844d6738553ebfe4f03e644fffb8d04e7fd04e91cffb59cfa9a46bbd607302c14e29789ed21019e337b4421921cf097c3c82bffdb17b9e66f4f14e1db1da8f4d095dc265b9a1fd7e27a1eee0368f8cd53c310499d0c793927cdedf20e4c1bb11fb1752df5fbaf03e7f3c3b16d9a54e63e31b1f0fe82ffb3f4e548465ca213a90a8fd1dcf9c70001752916ff4771e6ed3cf4c3aec8eae1433699f9d9ab4afc14cda37b9fcbf7fda4cf2de198a7396e270d6beda59c7f427679d36b38ed512485093ce093faf7cf3bf36655ab34c59088e5f13d1b2b2e326e7eb2c358cb7c238053a8d76c130b1b174219de4433def32ae3fa20e2eda254d13014e3cb34b8fc934456721d92cf2762a3af095c1cb8778f0e1201e6ad512c6ab875efe46d518c35c03ad349fd14024edc67413fac262355fe3644819fa3013ae79c4fd8d16fb1bca4a404be6ba486d8f63dbebfc756964538cebdc1964208db43fbf4ec326809d02cff7793ebf4e06e1e67caa112615c797c7d3f4fde0cb9d65073a5235010f0b2a5e06706602554fe0e3c2d10426b5250673b5497849d4e7c207d4af635ff7d42af258366b7f5e08ab4e62d46b62aaf8f8d8f9798927c167ad744f2da1cfa85fbb0412386bfa2ea24dd27d29ca18214a8fb01f9e28b24d7de26309e669a2937887666263c3f0a40d934a7f52f72f77abeeeb8f57751f9818682371b3d9b47a73252f6d978e7f78fd642f7ca874111e78a7fb8f750945f98dcdf57e450f37e4bc9d5f353dc2bf87e931f6373cb13eb2d36cb20d6788dcc930766330de4a3051e06b2de2ad29435365a652a6814e5c65f85e1cf235f0fe0c1a7276fcaa2f6515b54a9ecf8f6b66b060581c72d1b9674a06042d339af0f88f5f372321020885ae7634c3f28361f120d20a9c853c8edd15579cee9c6b5a89a030f60b1784defa5e543999be9921c9eb0eac04d53ed282fcf40c157a209f3e7ae75ebfd24417d3c7fd757fc0a09e14c01d38be11e60392f008fc9879461c9fa3336f7c23cd07cc2fe4397dfa38d303023a2c0786340a8b7542005da6393870da42e4890bf9794ddede19a15a8c502d86e28a92e2ce524cd414164186f7e1231c210c17f5681e4723a3631aa451a83de2e268ecf56ed0d8013cafa820255090682b5a94d76e0e9e80b9a579386d4c2a0f34f2c619078ec1a9553525c8440df1dd1aed741da2f8639929b6b9d2905135f9784010ad98bdbb447b536918e64e9ada6a23b5c20b76996fdedcbb7e753b7fac56130065491c9de0f28973bcbe93ead7ca279f95577320b30b3cfbad5b730ae665622881d5c43bbf1fbe19ed5615363368f453eea6fa69775397546d9064d76cdf799ba6e728b37cab646989efc92fbea78fc745e57aca97768f75abec63043155a60e276f907398ef927534916e4d5fb09e26b8b8d5ba99e8961bbd0e462face596395f9acce5948be92ad6c3e4d08ee9df76ac937d5c03f22f694bd79d2cdbe076cf8c151f19c087f5f17a7a983e3e0de25e7a30e0fc8e1f869e18e7e43f00ebbda21d1166660bfa989639f3aae6a43db80cfa1b89fd20dd07fbc7671db6a7570ace9a5c4c3c6b5669c7acd9c1f4e7e6cde4ee9da53aa7a84e4d7b3a9968da31fdf169a7ddb463553412f4ac333b252f272ea6afce39889769cc390811ca1b5e87d458c319a2aa8b8f361d4bac671aaf52f553519ea3e62958ad53095c37f1ad13a9b4374ea492c45575f02141b82acf70db32c6730fd2f82709e3efcac523171273b4ad654272922d1f52e6e82ca2f1294d4d05bc4a51fb9444ae888fa92be6e0e289c6c5c392a31a9f6335eaaf5fd45faf27e021c2d1f89ab66923846ceca96a02efd5ec80f80903c4ad3dc5463e8c1a72b8e41965e2b0c40777abacba85a158c885b986912051a149255e396d68d6fdad36ad70d20f4310ef3151de234a12fd12ee7098fbeab45b210b9ff0d380a6fb474e009a721745e086c8e4050869894df303204c1b22c411d8cfd0cffaa270de105f3d5ff04b86514ce6e88321c5726b18dd98fd48f8d6d02ec632f75665f23b89139523408fbf9afea20d80a92fb73dd8db1e440b624b75d1b4d2fce6d4f41b29ddca9b18b487354cf398c8748644896726f29edd41473a9d2b2f9728bf1c20d06c374884600810372e7ec483bc9403ab29971c18a8d381a53f0f0d3e77f2399a2f595f9ea25cbad56f17dcef6a37407b0c378313b719272edceee9eab23edbabbe9ff0d305efb70bd69751aa4509bf000843fbb81d48d6d3023258bba0a4cc1929884716fbc0c1fe4e8e6d769bd95ea12cdb37319b903cfa2b895b33ceca774f0212791238519f5b0af2da9339cbe0ab1e10d04edc083a94b0635970b18128a2182b0e4e1b3cd4978617b3d95b47934047644032aad6517b85a9a74ed11bc549315c0e5d5b61d19765a72e0a9e904310180679422e70854c3751ac6859f7206751208c3afc94a8d17435f682cd9b019a492e736b4778d24ded34e4a4d870d5c46884c0657ccbc9787b937126dfa86f1c203b45d024c6865cde8eb8f12f2b175838c6f04abe89215ece4815763706e383db78984921a409acaea3400e6623e49315824989f8f41dd7e7f2ec70e37d3cfa3d79ac93ef3129dfe3d6f1496ed58ddb95a57bdcbb3e599939f95d17b7eb886496c59bc972df23d313b9afbc9dc6313a4102f3d286333e4c45c4a62219d951e6c0990f9c338e786e2aecd99f651d7ec6c797d256165c0102075ef823c63ada500be9864f8fe42307e0248dac9dbfc0c18604eeccb68076dde4f7fdec53559e2272bf0e4ccf94cf6912829f5bade0751738703bf9554f5aea800c7ac3fa23b27eabc591d213d00ebd2c172b5a6712aa684687e96ca7bb030a4432fb4240b3e4f8628668e628e151d6882aea664ab700bcaf033be727748b4182ee02416f15a9d294f38c22222ccb80108683e85a43a5dbf832eb7a21ec22ee6b80de13cedee7aefcafd0efa65dcf62efba3bfd9e221161854c0c7334f3b60c08459a38e606eca928ed723e6e8b82f660a2030afa8492b8d59f62b8d1b14d9c7fd1b1cde746c7becc9e691367b767cd693ad67b7039a3307e7ec56dba2e22cf275b55ad7cfb36f806312f82e778021e4e3a209e92a35ab241ca4454c29da89aa7051632553d9656ba3f9fa7a77ba20ee338d45c673d3e6242edfa390367fcf36161b2795d91c525e02043fa5dc2530384ab445614d4f23fb61acf2d4dc24167d58806818edf8a98336247b0b8c8c6b714a7137487674f534dbd14ec1a88c3e8fcc3add1aa56fabd368590afc60026a7763d81045ebe008cb6b3f2ea173efb31050a5a7690595c087cacbfc6f51b7d9d99324a908f048e631e6ef9909d3ebf241326685ab5ac69b003af8a9fd9870e43c53cf4b0b63eef7ab7b2794dbcd63ae3ddd20205391fcd622a69b9ac5ad1d6c97a1ab1ec067c7362d7465a9e06a1126d9f3aae7c775c85e4c38fed13ca96d31adc61bc0e0f5e88a3838fcec4d118bc875322c27707dc5f7fe8430a9d6ef9eb3d8d66d87d20d1e3249e1268e675b60793f06a126f77221c286af0c1c11921df12ddd801e04b61a63a029c2902dfa35c4b6183a05e77dd51451d0aee6167ea98a6380c9949dd33d05380f8d9066bec66aa05d06b903249280ae58a00d46ef7d81d632482948c0695d11d7d9964e594642064d40fc6ab44a9534338e5b107430b067f739ab65c9d611151ce33de546579c7a8c0bf5b93b74c71ca79515ecd30110f1cb3738530f1594e8d09b118cb7dc394fa63ea9c78d809196d868c2f6976cc4a560e60cacc1453346d4ad5d044b0f462225f83c86740250830d1e0125f0696a850892f034a741a93e8d40d5bf181cb66b5b189ed208ebf78e2f39f6f30df2199eb73e63bfe715b41293b9282e6392a718183d02ac13a18b6130ddf8986f14439fd9ee31d853ada25af25c7dbdb29783b056f22cdde9b50b3f7acb76a784fff9418a7900cb37eed739ba069b66e0ec801b7b806284d392b83452baf9093ab31c1eeb5e65677020c70133c7bc57c1c465511069d95f701b4e6c47a024f43dcc8696e6f3a7bda63c4f8b6177fc193cd6a41e01fa5a99f378d6e2cc30ccd364a6bf76eeed6e449135eda5e2a3bd4684d491d707bc2a9bb458c284ad981ea76a7b66176758bb7f4da53ad03e19bb07ad978a281f00e716c72e1b77d18fd1b085f568721949a858bcf2398e103868e4cddf640267dcb138063e6c32763ce23144443cd27b4494003b244085ef13c328d8acb36d0c7495ffff0666ed584a908bf1b16c50340ff6b4e3061a3c22a540c607733561c50e7701ceb913c1a2158000eef37a29c8ccf10f391049019c453a66007f3c5252c940cb07a325208f015e54c39b0cea669f1b894be15312c5a48346a48b47a48548a48b49a880f263d02a31c1001a4f488f0b2e911dea447b0b293540c93d223f8635eb6d27e3a6e7aa7fea421fa1babb7c42c0816f5f1c0e94ff79ef79b61e70994a12010778e7211e123e7dba2f376c7d3d5e0f2653a73828bb8a1328e4be7898d64fee1182c94b20e272676f17f431a26e2f8d7450f6882b721aa335e47e328d9151969e5b01510452f59d26029aa0b69b115bcb3246faec3620dc3e7c01397439801f8d366744440318a41a010c800ebd33bbe9f49c7ac75faa4cdb96654779ee434f4ae1d9d1d55b9b204aa79d4c9de432a0b744c187a6a4c104f18ba1a601ae63d2bc10cf090a9bb69ab8a39d7f2ecf8406ee7767f6ce12d05b5fa46f7e1809536a0702121b9fb71cacc35b17669b42c98ae4b724bf05c872d9cb92aca77b61590a3220f1bc25a7feb739a65509af6e1187bca9a53d69a32c694b1a58c29652c2963482d76d4b4272bebfce25ff878af66e1ffa824b33f4b1950be61c52b2eccc4d910b44bf0799a650d9ea3073088d9a01280d6deb69ee293f6de830e8d57128201f5808a4d6653660b8bb3ad56f53d5426e9acea577deec9d376ab206dd1b7e0605334a8837542e52d9bd695c144f2b4bc8e7443a99d51dfc12f76a343901e644ca9209902ebf0ca8601948ec6f503c13f993a5ad6a22281f327bc30a1f3e3d3b9e394523bad06de72ef753a30fb5785f14ae88af2b587ff8de5df9d347114f2b20308fb8824d5ec762348cc21b6c3a15dbe77a409024ef3bf500d7d420e530420142abc96d92a7577d1768db26b755da5eaae9a2ef2d09d9aca5e8fd0b60be175fba26f9a73ca315e93b84dd2b87a41568d5caf547bebfcf92ac08eb32d98348525a0a808fe6626ef02cf7b6cc275efb8154939ae5434072615b75a0eb22da5b5daa8253d61b935aeb23b15cb2cb7c0ebe0f6b7e9da45cee61232ca94e911ca330d4ac7d40a69482b04b8a894399164d3250b8f6221daa5535f93200c205d4d62ea2cb0b25978990b1565d74de21fd3207af86d0122c40346245456dc8c3cafc2e1a7bda4eab80036993466d097eb4e4343ab30f131161d6005378ff2db305f403083870710dc0bcb3ce9527dfc42e8cd66e55ce0d405a4c43c6faaddb1da19e71b72b94d305a5fb1b65a7527ad7f84834049f2bba765b50b3f166d51e19540f15b4dcabde45ed9946758ca35a86bc3ce4a150dc978adb20a2f622c66acff921b96a29dd6c045e5a42f191631b9f0d945051340df5902c97cb21d1f930edf282fc867dc05a32b3f42e40231483f4c6ae4a5978979c548fde9ceb00437dd458a24b4db68736ab25bb1e9dd22dca4d05331d1050f4eecb17a616a5823989d5c59b81ad608eef6edf552358687dd93ed14b29d4236aabafa0926265236dabd1b2746137edad0083e10f9f674eb77aabbd4e9373afd06e96b7128b2b7f889eb32c35770f415ad47a6acf3448d29d2944b68ba0f948ca9a812abe833ecdc56aa0f139bfc29851f60931034efca5e91e2529ab41add272d7c7beb2178c265d3f5552a71901d1b4c10d2ad3422e13a9be2f89002aa25c0faeec87fcf113be2103f71c06e663ffe8ee31d8e3fe4655c6823bf1412158fe4bc2b97d805e8fb3cd8b91d80a2b3654cfac450df2b98f49fcedce12062304144f4586dc2e11b52646615f4b72f32d931ac58de00adaadf70ab86caa70a461f299713874dd5c36f71a770fd287772edf771a750ff15d43bc318e90dfd36aab5d125b82f5f4a3d738680ab49832b2f5b684db95c7f9e800b6104ff89f4dbc39afec7a46b2000f777e9f7783bbc2f9fa46066630b18a19a2007e0413416a1bc173add4a88ba3a01ab5348df75468086b780d791be70d536b5b006f2c40a0aae19a806fee4c52aafdbfc528c9412e5439aa4b95735efef95b315e5deddabf4cfbc578dea33ff9c5ce86bfd1df78a6c5da489a8eaf09d6b046ae85a34a91936e3dae647dfdec899af7243e7b3d404e37fe0d76de3916ae901100acf1f458a2ef7bcd4034114d55a8d0488eb5399e919ea76edfc034a9b872c0034ff8bdaca5320b5df3eaee024fe0a7f6d50a889962eaed4391278e0467a4c7f2c5c03a9a19ca4b30d9d526230cf35d0e1f5494eb1f6417e4652d5b8c3a747675c475e43d3e1d1dbbbcfd0b41551abcd6bebbcd311afb9a132d821d6de93d16f72799a3f3a11dfd0c58c1dd49f268c448450058c8a841116c2106cdf35b24faf27e1e22d61b427acf64ae2de784e18ef02141343e64f94d156ca300073055e68f7a4d1c9509281173203ca3a238f82f888555422d99d30ec17979114f0fd6e675676ce9159aeaa43a1c2a601560853d52055cd59ad46b8532f48eb1b6eb5b02e72aa60b048af8901cf6e392c02b6acb56e1ac0e520544b500ded58f260e020c2fec38022c4fc9d66eccdc2ae837e738441c5210e2f1880f5cc1059205ee021846f5faa5aab7bd9a22ea8d8e405b32a21fa8fa5e6f4323593e7600442be5e50bc237959ec50882354c299501d74e967d39ea39b8b1e81060914a12449ad12be16169512303b3a8f2455d159f145efb38fefa7ecbc8669cc3db70a223f22ab98a738994e8cb1a7ed78003d7e6c66a21cf028e044a2811e41a44d1b26fd2c783012a22f1d289c5da2aace02574838a09b1e97d7ca2712f1975638d2fdfacd1e51d8a6c18cb680cd133781ad1effc69c693ba7fc27cc196bce2af5f5c6bcb96300279fed280b00688e6bb9c45e03eb6e2d90184e47fdc6bc79fbf45e6fc2c8aafc28b8c2ee470caeb0674c0c159b71518dcd536f4fbd97d9da9dfac7cab09c4cd51d09d22ec0605bd6c8c751ca42ee4800d1b8cf6ddc5e342f6605b67ce762b95539828f9a8c562a30951f765098039125c81568078adae85d6f75c68ee48184ae74f7eca31a769a7554c950698b7718297c55dc3d6ff25a3ca5c154e5ad496fd25a461564ebc5e0d452956d42cffba9c4163598250633d83b5a180a0c40d9b4cf2369dc08393d18d7b5877dcd0a1882f9e2ef2bd89753a82f5ff22dec6ba433dfe2be4e64e30ea0afe7c74de58c608746b063ae213b7b40d8a760392000bd7f0a42763cc150accc08476e11da31f7e91447cc2f5bf7f28613f94f525f880bc6a618904db1289ba26036c5e26ca8150b035db3c157d21728d969415826934b945e269728a95c228589e90a9dc180f42de8beb7a1f9cd5cf5b98961f4b599aa9a9f9ef0453bec3f9ab722a47fa61c9fdeebb6421ac3c171c7b89e9af9293a1dc2bdb119673c64572fe2a65a488b76b8e300a37ecace5f71f7fc74f28fe0bdd82fa8ff3336d13a483a55b44321f8b6fd89620cf54192eb52c3d324b9b273177cb7a694e4c3800a0e6e6b667ea107df89282993672918c05e9c323596434d01b24be26bad28d0246babbe018f6d2bff44733ae600ee14e64e93e74565f27c1d17956708f7b428118de7aa4a71e7e23dccbadff15ed7e7b6fa50739b29dd5f97f6f4fa3f9bc56493fef3f3d8ed0669ad0026f2e19125fce888d3db23cef7747bdd1e324be9bb6a3c28502eed790cd0e0aabc4c63ffde1ebae11b0ab1aa4a5224805c464cae772ba270f516b06c74ca47ea941f34a05098471524e0bb0f833628ebe7cf018402de3915f25b5b55e5b5ff1ef2e24332a162f4fe5603fc84963614606fb5b4ac95b48ce4b0c12e83fa6bd449ebf0dbc5d5b5ccd101c529549a112abcc9fbf279906486117b4556e059eede5480cef40d09580f54f27678aae8449fe9c879268707854bce596cc2cb74b4ee7d9815b2ba879db08c5318339a95a43e1e522fe8bd9ce84540647eea4f4de8a90fa067b2612c791498aaa743e46bc568fe7e52b7154bea5e982825b5ac7541dec087ab12a596f285bb2c2fd3802df8a06e7b506841aa6ad5676d52826dbb63a76eae5f65b66f2b63d8e1c1a4d0d993d892623ae7c8d2293dd029fe03582f5b5fa748d18286fe156237f3c3913c1e98f663c5de7cc4c2dae271e1562c66a3c25d018cbe5be565eb7be86cf36890725f2927f21e50ab8923a6c3a4a6e51fe2b3ba2347ceeb37b6540cfbad3bc6a88637d13ec56b11fe1bf2a57a0401a23ebd265769ab78f72242b06c2a35e2e57a792466d245d91aa238e894b15e6a3b456c5ad823655216220a495f0d9f4217ab4f600ed1f5ab1e0fcfaa425edf8e5e27b4dbeee36b995e929fc977d742e2b7c64fe33c098f35931ce724373e1ede0f12999eede5ca5fbfa6ac9097214a43a35150757ebdafb7cc8179fd1d075f3175b30cd7979301b2c9591e151454e31b3efcdef14c37f46ce47b1b3289dc843e43a39cce5f2eae613f9457587388c8b767e5f9ecd6e69c3d20774d971ff84fe8fb7d4d5146184144474d0a3d7582025753933e97cca8fb3938f0f38439ae87fe03dc7ee422bd3c44a92ffca792cdd69caec1262e38d1cac1846e4e88b7b08e607cd92d8210cbe2dcfcd72de9832d5337b43ccb573a51aef23f65dbb3841c4cf359d40e01c5164dbd048ea4e47be13f305ef5b196e1beaa658c64cd83566142b7c7bcfa1fddfd9b5cbc27e26e0a2c63b15e7b11369c6f9512c683842d80000b6df2d4ed2bee716576eb59e78fc0fdb35875b9dbe44e2241be704f65267dde2e80a125f121032326fb818af55d22f99aeab299823ca3eb7e41a2395dc90855be50657e05a022f0691130f850518c5b1bbeeeccc638c9e304ffedc93d7c796dff3acdb374102b54f09f8ccde122afddf04a339392d4104a33196aca4ca195eaccf3ea70d4492f40effe78041f668141942ad24bfc6b55a4af229158ef5a4f895613e149a1ce8145c684080ddd0dcfb39b556140c9d0afaa08c25e963f688d23401dfef14f9370c73537d881254110ae6baa36a25d14e2ac23d770500f5235e531b37a41e887c6da45859a06815f7270cfa71bdd62b82967075e96f4fc93be2019626a17457e32b48b4aef4efe3c3daacca1dbdc0cd62efacd8330d2486820823197e77427ba4828db3b31b943b5a6b67be9784934d5544c345ed3567d6d623b45bd92bb96d94f42c2706c5e2f01656b9adc59f9c57805ea278a28bf13235933c044e64150525dd85fffd4a90f0b6010aeb4a4623de670fd8e863d83ab8c0dd2b554a54994aa00e036f25aa9251e906e0cafbf603f4a526676815eb4fdaa8b5f00eb0f4c02b8d43ab7459a735552cc52a55a87a1a24ceeb41074bb4cc7f80fd9820b2a0814114b806ec3e20ab8b7e556afdb5cd2ef4a381af82ce0ac33d95bb768b3b7515ed9d234fe1b54da9bbc1c79ce5a191a0ea82837afd7b143bb04ab624653e989ddb8c82daaf8047f843ba0da5e3eafb6777b3f3ed4da83466a9df5f653fdad900e3c33218c4b3b033fa5c4ffa91dcb4bd9b0ecd1c58c94831da357b9d634d2d4fa8f972a623fb51364a0fca38a23aaa1c54354556ce2796dc4cfb27ebc0c8155ac9251890ca057cd202eb11d3039d87dd8f484aab2e35c98e3ccf0ecb06d3a71d134fc2c1b182b7ea5abe3e1820c862129277e9a4afefa061b7197ddb265c91468dc7731f080b09b91e62e0aa83c6f7d38b4b77530bdbf1f5e9ac70871c05abf786ea7739a18aa341b7ab372df13b412cbff7d3a58756b733ee60a52dd702d4ab6ddb0a1dc14aef9f96687dc9b950d126dd256ad0dcc02bdac716acb6ed25aa6a8ce448a8d587e572d17552069f5d542e96597de549c2c0951c7f7d2c9368af8ac74e27480a34f497bcfdf5d90f8e000b4a962cb18569146da3e61fba2eb8f6dc6fd41ac404b18b447eee5e9bfb4d864349c9f4554fab683cdc493a6832d2c2eb79ba8d1f886280e236ee4e0e6e86ca9e0d811a2fd73c40e1c87b88ddb2c6af08c7e6e9d604df87257670294f3f0174ecae925c4b45f023b843c2259fb2665609b71549b5e262e35b615ff635fd4ac0d9ec1a115c5d7b49fcd805a5ec3ed20ef40b9ec68dc55dd61d1d93417891ea80b476f7330ad3b43c67b0a564ec7335521f2ee4fa2e41a8a5d20147240a95db9e6063ad84bb515dd9b923338e27a782b5ccc35652b979de9e2a89bd6dd94efd7bc871c284b8e95a6e68762ca1c31cca9b29768cc4175842c34597aaef8649947d5e96f03659d5f70bcf4b3def6f7d18c28bda08676c17d6dcb7497d3c22285c188322f54ba2a046b48e225d2d26b5c4cf9d1ea3f6fd63bedd1dfb96047fecb916104e13f5e35f5f78d97ac1afa7bf686d139ace64abcf51ffc9cb934db92b83f61620e9521ffeed0d0ad6d65f007169ec0177e7a9959f264455472d2cc6d887f05e60e99233c2e690152403da85267b37f3938c7444b2cb22a0655086da61954813ecc23681ff0283343bf986b052f0e640e1d8d47abcb73a2ff818f555bb2fd6aaf65da0a0b3d15339aebf3fc29784c2916ad3f2c08d7a2ad3987813b6087cb998e1e86c32640edc2c7159bc2878fd411e684374298432b498e97351309f7650e59d0fae3fdf9f6c840cb7b50c6fe346700672c54b96ea77d34439341424b188aa326fa77a1eb8e2abf011450b0f9b926d84594673a9d2dc5c3046758bd8fd3de0bf905879f591d5eb18757e6bb1499bdecd546365e65e838444d45e54d5f4b47d1978c31c0540d3f0dc11e1b00533cc540434ed602a14e20e5cefc98b9423afcb10f7efc16e7dd8d35f9d47937d4be3f6151c64d7fbc8d452938bfacb721554dd2c5907431c64dd1ceb94b3be72eed9cbbb473eed2ceb9cb38e7b2193a9ba1b3c984ce062c9fd1c4b5c5bc51569697540e5f6e638f48d62000ecfe7d1df22a7cbbae694a151038d46f3eafc5e82b5f2027a2b6a2ce955eba9cfc45d3e16cd1097572889b0e64c182972a8a5535e502bb82a2166d7837079c746df641729ed460311b1045db31b1b502ce40770cc2d405be4fe9817637c4346412d786776a0c291682033c879b0c908baf8f3a0733bc4f42140e89f087c324e33ef76ca248ba876ce3b8f9a254540211ee98de70a856004bf4dd64cc20a2060acb4ef1f171b1f2092dd5d9e94194692eee1a546e88ae9f9314e17b8ac32f61edc67cb399163569e680c29daa53abe7e50672f3d1c143d4354d688413593e921425d5803bca11e184d9e65caef4a6538f0791e855a2c18768aa1782fca0a98dda56418896d94888eebdf48db83c535d6fba1c269eba0fd3d8631c116f4e0e05a5dd34c0600cd4ee653a913abdaa8977a13a05942a314dd88bd2b5189d13cc5d9de86deab030b9284da70070077f8fd4199eed20f76f6805403405ae4c538194824736766cc4391bfa0e6a99bcd41d57c998a5f7139ddb52e9acd9a69d3ca7195097a8b29a8b9db05bbda321d54c028dc4644e756eeba9ab0db54a5718b8081e81d244211b5c4e4cd02ca91ca45b5e9879775f2d29ce8e6edbb28f4e1e49ad30e82606725a32a7dcf438926c279e9fe4bdafbe8098753e52c4528a9c91910012010a56bcc9691bfaebb59f1da606bd4bc0c86bf72d27659c74c24a02807ef5fa2cb119b3df7d4eb93925aa2fd0e9101802723914c8c9af67a1346bf3b97271dbf922c4817535a8556e12a48726560df1a81286605a60e54ce60965276286cb9213bd20ab24ea2e6a1f877d3510f38b3465e0c41c50f869ff24e8ee6846757493a9cf464b17216345ec737895df997e8b82fca80262d54dae9e0314caeacf983d14bab5e9931d25343bca84f4ec8749340cf6f1598689ce0e93b21926556920ba8c52e728890bc25185a094909d25531e65daf57bd1c2e52753b51008564dd6e89af7eeb7d10109f7e43e4507d5dd6c1d49f79440fef667c4fa837450689800de091e464e4828a15942808a30c7331b3903d76429744ac64bdcd848ffbdd7950a1f3e3ca6186e8e89aeab2411f2fe854f1dd32d31d06d8dc5de56aebaf6ec946e2f56a68b15d3e62aa56b17b72e5cadd293d5467610ab4a7a1613369ead2504eb1dfc313f368332a77fe804c59db216d8c738feb15185b2b1e83e2fcb56e38efb2224b7d83024eca0ba2fd4239c0482e65435d65465636a670ecd5e98090da25152aa8c4acd8f4c22ca7e8d0c1b30ae8b5e390641e51db353ac598450f531b36acc2237ed454e470dc628ea623d3ea50e6f0194a3f2a5a29e3bf5fe989ae4a3696c0f903c6c91476a16f6c1a78a5390bc913f43eea709370bb71a27bda177c7a25ecddf66a9fb59b459655c7625b71ae310143feacd0a080e049c67703a64735d9dda3bbe3521885b622336c2050ea68ad914062740ae5264ae6400e68dbdf780a19c3698ab0afecc16cf447faf7a43047d6b60533b7fa0fcc8ee2abb2a54da35806a8546be6105ca01bbe9c86261d08b552146827b2924b433f6e6c3fe4526058c48a8e9f229ca6a9c1924544bcdafb791cb03e1e791e14668e22441144d9f8cd144551b54b1494f5ec33b11e2c8e2e93b8e9c3e9d43ef2d2c930d107f562557d24c4a265db08dd7dcdaf073c5da97e6dd7e5720413a26b57db9f6b04638f81ae2d3af63019b914482938384959414a5dc79ab8ff88071599f6211fc57c33fc3fd7e4e5305a277f0a14af1700f38b497dc8b7b0ecd99ec608727eaae34224f8a3f65ebf618dca792dbcaaf3752936d5413d780bf0d5a90efa0350673428f58c07a333e6abc6a41bcaa6f67a4f309bae9a8b00299594821dd83059bdb74a28e5f849da4030d816b9cff50eee909f5b2f6fe347419bf11ba1c3a10def2a8e4107ab0bc89c7a2a881da4a7f4cd45841e239adef56f4484a03e5cbd519d8a442f2517985650f6fb2e5e616fad5d595e0d35dd38c8db2d8cfee0162fac2250212aeb7536c2b8da60dd3bbcbe92cfa82c6063fafc247249fcbaf32efcb3cfc8333d6a711fc6fb1f0f14fa9e6223c755e4fa81dde94742ad8fbd891ed779584b6b27a9483cb4f2c6252778c3604f5994621c12f2b436c55957f82399dc99cf60fcd69556beab75ad326c8b831a7c7eac0eb4e7ef631d33407e7ea2a7caaf7eb5485c0655b8c8b7ef6a9f9e6ed2dedcfdd5e824fc9ed858506745a41b07694470c98c652dd8eaf85900c09072c9d0107f138045b30c62a31f6ebf5ae9c9fa64729e747704d13640f850ea003d186fd490080e12985d98d6bf776297741da3efda8f45fbf00a07c5bb5ca4fc40adbc26e050acd75d44c95f6081e58bc4add0c2faa101f12815b90d250a6ef2b57a36b0c4fd5bb6fdd8cfe5c2f0c42828c9e1aba8b528555d782cef24c3a8fd3719a10d18c178f48e15afc462dbf8bc9fb642d92fda36c2552efa55add89543682aed15569ba4ac2228b4bdbcae2452f3c1bd1dd96b0cd17cccb53994247d8808d9c6e4bdf32f46a531a6461bbb3ceb138de0d1939d76bc9d18e456bfbce293c00649d756aa8f2321064c2e2402f8d03bd5e1a6e7f61d2d9f5324967459b9154ba9192ce0a269d156b83669d74469a1255df9f1f0f2ecb1f12b9910fa9ffd5235ef5a0cbdf152f0879e151bda0c149100dbe09bc016d0de073dd6d7374beb85983eeb6fcf24fd76ef4aaf63266ea185f06393ab0855570c4fa84e5a3237f1625816eaa152f862d3b325d6fd35556aa9a06f47e61419dd03117b1962e3c80b845c28f55db497e216761e1b11756d4c542cb132d7b7d86fd741a8be8d0d76d2a552c4653ecf6797da6102c25eeb53ced4fd5c1f35e1006981f120d312b84b270b9a28979445777a5c297cc4dd32328248bc709e0a2d023a925ab45f995b5b0743d371c0a158834cd9a09f57cb03b6f2c83e296eb25d83dd2f1c8a25cc1ae8f8cd85313223d1e1594736f6ef477f63a44c6673a9d8a1444752dbb94bf2f0ce4978166aa50f9fd6c17754a6634c058ae9b44176f71f92365bde3199c4d78f6d4c6132cfaaa0d7c033fb6e863011f6ff28c866dae4c9b9ee0149de409dfa6c5303a97041f1954aae92418548222e66c3641112745b18ea796ee4cfc7efaca5672dc0ab11abb323934d46ce830112c59ac4e5d3e461bfb72605718514d401a55acdbfe6603fbe403153e6e8bf55ab5965c275ee4fd664b369a39639774d5bf5a39a36c628dab3661a3631bf659aa54a4dc844dba046ca0b48b83fd9be11369eda01cbcd1f809fa89f9479bed052201a91ed7d22b5978fbd10b133134edb660886010a38248555711757670e8f79ee300e94a8e6af7342a523853f5bf1aaf7cd3afbbff830d9fb31290ba38fc0d6860ab30f753e90cf510ac5c4a589d33d5ce1de19efa03d4099ebd010773f27a9b32bdd4f04c4f5a68373d9137309d9220517ce15c58d1a44c970e621cbe5a31ecebcae65d7db1eb991309da3f5c6acbfd6abfa5a25d126e7d467963e1f5f7bf69e1596d0132ae6c16df415b1809c83e498eac52162e111d548fc107958c94d9f94909f2d2cf1e7268a7a6a1b3f146cad97ceca89a31b38c8f9263e6634bc8c932671a1ebc9fcda4d9596afd2433f8641185c779abc72e18b97e16b8f003c9bd1de815c1cc2e15158ad3b66be3f216e5d57f76fdcc6c9bcde09d952beb77cd4c6261118852d5bcd3b7895a80d0be05faf638f04ba9f559a9299e7f2ab7da47549ab0cdac2fd9e4a35afcf61b79ec068f00f91b16d7a2f5ad6bc5d5727f1b5b60174992ae76777a855124d2d28178b78ceea8af64088811acb31beced394ebd85cd428dc6134d35c8cf9a9e22d5de3917b44baac732dd6c66b11691494dd37ad4b41e0cad0743eb41e1cea1f45394eef41b0f6101b2ebbc1d7c822338aae83258270dfa4996ef27f159d589769a2810996a4790f5c8ba34dbc7f2d4e0fbe0bcf15ed7332090298bf9e4e09645f61652f1291f5559ce10f23a14c08a54afba0030a3cdcd92ee743bd151dec341dc44e1af0967880e427f6cd81496d8128175f70aaf7a83208c3ba5dcea8542883b674ed0372a981ba594a6b8b94406b47baf94b59311f11ff75a8d3bd393fe95d105ef9faf5633853cd7ab15af9fb95a402b7ffc668d685d08ff8abb55f6377d1408fc37b959807ffad9bb05056485cc3a20aa86af5cae1144cd4e5f962f5d2dc6c47a4257f4d3ef710290fdbd6f0442bf4ee2887198620004cf5f5d6096ff04813483dced9f746dfc2eaefa8fbe36bdb0cdcf468277b7026f90b756ecefa9cd877125021de386573435b89a119aee58e3a06890f153bfdec0c4fe6839c483676fd4dd996c6295d76f02b5b78e55aeb11a838a2ba0cb4afac06b6e88db4f06e7b205776b1ee1b37da0b7edcc1aba0058da4d5498d3b7c9873563359331e6b4f0751581dc071147c52845a1ffc1ea7b697fc37029406882f546385177f66bc489f3f25626231e09134fa2d44f61bf2ddffb51c2a06ad1825d5674fcb8d774ecf05bb6fc46c3e689831e4a4087034bb755af5c4f1864d3cf80ea8d19ab757239dad93db00f32520b417a7bc981691cd8175c67998e9a286c153cad1487019a0d5a13498a2d589faf0f9ad981ab64dbaddecd7c1a2e014ace92a98113d8ca7ad1b8109e4a08858cd43d0a73d87e10d81dd161c94beb5596317373c0d8009836ac8fde8a438c7e9a12a6eb33f95807e0050ce442679aaafc5e6ed3ef8e5c97c3008d21fbd6f78300e7fd6518acad6a5e7719bf5f930026b6db2526705d5acc63cffba490071f330650a9d269348c5472d715705ae597215b8eaa9502050fc266a6c108f060f166f12ecd96d3918cecdf663b612da689148c580f49628ef39ab2af2f6858a989bf6340b285dbb2089b4c77bb758b821b6d0d22d5b5ea892795025321e39aea1ba21e30a34b2981be1ed4f7f548a0c33e5748f205599651e7da644444b881583fc5ad8a0924566f79a006fb95d7d21e0e83f31132c1cd16d3a435f8811296f58c3c984032586027468225c2e34792d9a55754b4106d5a9ff54beff94db4070b8abc65297e699ac5c50d69d436b107772002a9c9dcc8eb98ae85af66ed7ccd02d7e61606fe5a95426418f5a005caf96d95cabd939ecafcc1792ccfc703aa8707389b39c51b69cbed62a71995f6c53f3851f4c203e41ba64dd5fa8d64f6d07e6ec1e05b64e47f6c30b80a632b6e79741f8cde0fef1cc45fe8e145b865ccc7b5bd0e558b730222e13d52b1dfb9a60bd03ee669d70b0b626c55a19bd0e12267fc3233e80f4f5e9539ae8eaa3d83e9be6f87236790be0fd3a5a91765a4dc270cb8a9972d37790bd18dd74f227477e369882e321f7f83d1fde446efcdeb5e8cd5f965e010d8f93162f32bd7db4971f6435ac8c656014ef86dceed47a63c955072c578a330206e179c66d3e0214b786a8f41391da41e9f523bc302d98b26e7be5f9e04f6e7e22c5e0abe1b50802d02a01536fc32da1dba9db42a3926223e8397710147d80d5695022692d8ad162220338d8b0dae27c2485cbd51b37bce14aad9a4c8ced9c7ba8e715b8076d6a023ad3640fcbd8033edd20a11653696cd09df1f88dff64b5cb364d372d086c17fed643d47e3ec5185c387ce54c38953739f5f0e6ee16d772265d4ed4b2f8b02115f1fe311adbc0ed30193b09b097fa16edc19f1d826904b6a8ec0a8f982b07034aaa83f1813e93ec7b0fee9742ead45581d6381269f03102d59efd5462569a0926cf636bd205b7392e4b5e1f2e906496b58adad4cb8f37695ccfe994b15a7ece2067035117135cbde6c9f3f8ff50980ed6761ad9689cb9605cfe1f649c0d054817d1765f2438cbb3bb0e2f73cc8d4eebf47d5cd695e4e9f2ead70b95ccca3662786bc3684b82038a1b2695530f23d3597620f4cad6617ae384fd7c7880eda598423501ec426e6d04ffae68110407cfbc04255616f9ed7a4747f6195f1f03caa327e7b3cf9e96a7be7a3ebf6715192634001bedbbeb8e5cd7afb04a6cfd93de7fdeb00d69b073a8f8de2d3ed0c23697c72359ce6eac970f564b87ad25c3d6bae9e754c29eb9852d631a56c624ad10c1dcdd0d050145a28d5c116c9bdc34b8eaa2097518529155ea5864904962bdc785dd26657fce4de0a1d579da54940587b1d8b098c0cfcd8d4d98b7ebc1128f35f2c538f06540f2f390ff11c2a580755a9e85a8854b9ce7931478804872986c49ac19bb7a99d6c29d68cb7fc909190fdcd207535162f052f5e7a2445bfff3ee963ea7105425d3c050abe3db4f14c41b137369e096aa8a6e6415e2316cf5bf7a83fa4234159e61e374c3a6e9825676cc4e23a2b327ebf69834eb22a7fdc8483fdf88e09474182f0c4863b864a8667adde9a70b62eda8d0957688355246931c2f1ec21a681a13bc8e7a9da7d11ebe76d3c0dfdb835f2548085bc57657ff0d6f5302cd5495519b2ce0fe6ddf653b0ef5242fb8e19dd574cbc5061e1debaab7cc05a988b913798fa67cc3cade8999846369a7946cd3c5bcd3c698776320eed840eed641dda513bb4a371682ba75a5935d03f6aad06ea83f8c350cd089934d1383c34d71103cc832a67a0871a94094ca61e900fad19d42105ee819bf524e64b93868a33ffc639728bb8151a59c73b711388b56ac627818a519536be432d4615e2d5f35061791bf12f3600ba07ac8a9a7cddd17c87c7de1829897a071d6fc5bc383e6e6e0507fb3d4aacbde51fffb44707757faf757f0fdcc8249849e865085925895055654f02c57130a9bd37e8c79a040c33ece714a3f5f6140efe90db3a43283b2a0cf4da1d272bf059c764a77df52694e189bc20712277bd94c2cf2f48eaefa2c14164a84d884d02776a7b96b5a603493bf8d0e9b233bd385c6d14c077534fe685a39be380723ee4c243d1b424cdca7b3c81c3dc569918b586aa0e3b0ced87fcd1733fa82dfed08905daa02b30cb9a4d6ebb53ccd264abc39a6f5272fdcb44eae87e3bfdb4079cf87aed5090153da00b501797f09808bc2de8b9617db40cc64bacf1c883d44b1b41eb4729f31db2fdbbbe4bd4909cd190deba36efe3eed76fd748885923b82e29769b4c4546376b800b9e53a5e1a79702c715a5ed60292be2212a0a8f1cc5ab0f1f9d7cf12bf312cfccc09a45f17c50aab2128994fecd1d6c8231a99cf885e8b23390b336d68d0647265f2977e067e80f7d45767aff39472fc6234026450a21fbba94acbfd0aa9f3caf109a2be915301c76e054516fa07a8d20212fb73dbf7b2ee5838e7bd79dbcde22026777aba2a4703e4ae16ca4f0aa9162d9cf1d198d09a7b051026675860c611362fbf5da31c5879c7c0065372047921a40ba034794b179ae5338b745109c6ba09cf8e7ec1897e186f0354f73d16db2eb020edaea41fd0823c52b0ae510c8b92955ebfd34cf5bc66ecdae95cf5aa0ca972a41773f6ec003f670247d07396d9f17d7232fccfd0b2ec27082b6712084eb6fb3d8ef57ef899bb1e9f5969c60f1c0db03a1e2b96c81efda65f66c27f7a63beee203e8640efe4b676a5ad94ca5fbee08b391cc46d9453f834f677dea8976d6ff79427183b124ce8a1cac3df1456f702da0387a019f789af642497b3b72327b0f9dd0bec3273e8689e3b4fa3551b2b4d3b5e6494a0cf5faa410e8518c838050bbad6ba2130ee1e985d28f9ce5ac081fd3e324019c00715e8957e22b335380baac7078ff7408090e2113ecaec825b664d2162a995e482ff7e2e373046867a55c9e69b314cd8a2ecd8a6e50fa9315e59f91c9366074a2b6e0954c869c8b6e6a37c54d7a4da5592a5cb889d8faeda5abdf2fdcc454307a10d0ea3ac0536ef23969377362f3c634a7720b7d80fa5d6798b26dbcb66dbcb16d3c7a7ffd1b4f1a182dc9f888bc751279eb25f2d64d64fd44d651643d452a626aab86497c7f9bfc2a449b481b3b63617bed6c13cfd16ec3f9b80f0643a895a5819f24e6cdf062f63a516f44d8f2bcaabaa2204e7f5f912ee65d45a3b40a6fdf540644147a187add3b3711737e1bdd78ab7ffbaaea43f96a0349b426c86c80eee671d3e02aab6a1a5c0620b1743488588a71032948013676ebecdc1ea78e07dc4d8d5dc64d3fdf1bdc577a4c7a63d37cba49bb32dd23cfc4b7abd800cecb810d6b86f6b8b04b1406118061785db4316c4a50659067586b31e9530eb3f2d1612f1b43226e0ed27d79a3ddcc86883a06bacb15033e89dbf0e80c3ecd00005e08b567385535ae1d492ae5256523f5e2c922b0a9b68736b1a38abf8a24c57d953a884c1b882f04839b38aa46ccfe5df2d10ee0efad936ff1f26937dfe2e7f3c6d1e7ada7cf2b21e70f30466480a2ab853b47e0f827ef0adfa027f0f319383ae8106d7502e1bc9c05b8e462dbb43479f56358962fe42b505d855dc6c2062f62d1297f9316368897cf642d9c9383035594322a92f0aa43cac27dd7e4985f0bea45b75d5a53171a838a7f6bdec2cf425afe60c2c2c9e593e2cbc6df314ce47e2a59e14733e17e1396641b28ef81b41db7e68a3142c708cabddaebb7867626db6e5b22d61cdcdac04d63cd0dd2437710dd29c4c796f8b92e57cdda09aa0a7c455a0ed0a43b70907284b6a72faac2f3ce08d513a907b10df2c209cbde55804b7f5ba2f6bc2fedd1be6053cb83dfe2ec67d8670bb4405abce57f584289fc7760b060d1fe02bd36f3dab7abbc8ec5d3df58ae8ae7d5ad24add6f631251a3676b05221eb6b49d009a6772e658468a9e1f7702166fed1e4d64b8288d66c68343b5bd66c92324495d7eaa6d9d7d9abd694b888ba5782fb999126c0eee2dfc7fd223f4b2e3feaecba77600dd8fd29272a9df4f37cefec3c3fb1c73e1e63ad105cb5518f015c959c065799fb614ae52489f6d3514d107557738b2e0d656cc68b968680a5305751a59749524d74d390768e95c108dd79baa0ee7e5dc574bdb80f08d254e40741fcf6fdeb89ec034a5c11f858efe11ef9eb534deaa347851af6d319db54fed765d54082b7cc084f239852c6c86506644977ed63adced4d6248f296fa70e2b8d83a67c925e04a68b4dd4afbba76e80c3c6c3ae8a4d5b2f69364f2d5e2bc10748e59b61bb0c8d74ba7ac06e0657c79c740be116a81cc6e5754bfbc08b66a76d08f36de24d7ec696333f21a1efaaeb980ee4bd6ff280d172a133da688b9ae688b3ca98b9d38d100f226fbca8f1e9b8fd01fd802326b2386abd217b8e65b03e1ec93e09d4f71b7f5d2fdd43eed858691c5d9ffdf74e7106bac6e9048e43d1ec1bb522ae8db591198e106fd4c7c2cad88d61dad0339338117b1831233e3e480136d5315e2e9c3d27df9ad98040c56dbfb10389661bd72423c96909452cbd320f3b22947ff280b86926f62d1691fc545ac9ec6d903ea2927bfaaecaa970972963bc06cf7c7ab52997cf90f7cded1f65a180bf23bb0fccee07839fdc7e5e1662f7fd3cba910066591aff933438e1f6dd9de3d562f3fc9f13202c71c78ef40c4a34cc04fc1c16e66ef939a11886fb340346a1920a71258d1ae85f37ed44ddf00810f57805d955954a47949d9d0363170b912f193ed52232138b90accf77ee74effc16559ef828f98d48362a925a2827b04ede14982423dd544937ef3ba39ed3ec733ee69fb37d0ee71fc21af47b23af2f28ee9b052f32b63b0aa064705ffa86e5a65e8d249b2167bc61c1fa47b274a9d4287ad1e02097218599283808a70cc09588973a8f96d2f9fb593b9494d96d1ed21c53431ac2e142c84908cab91427490a5f9f8fe884d6eb8ad3b00c1a74825b6ad4efa50e9d50248362ecbe37e79baee4c94e49082f8c3d600548501f7bdec45c2d8b8f8ed2ea0aefae33e317ee27b64f0cbc0ec19193f39171e4b148237cc08758fe382885bded5c5765f4f78b052bed380be420fc593558f33a01ed11422ddeba48bc8ae1aac0860af1374cd80fca15fa21add01d3e63fe4e9923b731ffaf140883807fd4f1fea8c3fd5147fba3d82ad81cbe987cd8f4d2693b0c3698eec43a0d0d8b26276916556b79651cbb4598b684f01de6e9843f00dc4d163597caeebc54a147c8891a40184463cf5aa4115c3e203298847d03d5370d6140d0bb42617c1ae46248cf54a0a1bee4fc0680bee7c404d88c4ff06258b0439f963aae440224558717960c616309868ad2c668e619a273a8c2c9de36d3d1d3eae6430ce9849b5157417cd6fef2c6a0526579c763fc14210e0d85a14c726649136322930d16a20a1f35c2b7921ecb628ff190514c87c93c2eb699fbe4a3b16f02d64e164863635ee93356b1cbb3fdb2030469880af2dee8949226a64984c30f0e3f08722853dea71716808658279e8212f46b2d64a8483df5df44f0d2b4df8e4cf2e70a40921792646f0ff8b121350945d50beecd30964bdc6ccf844fe3da2fb374dbd0b78f973d02cb7bcbd8100075ec1d6bfecb6566685c441b2b54195a372bcb6a14efe0a0774f950e6f1d5c77c113ae8908d92c0d34157bd92adaf891dd04eab2695d561f7c9f7bf6e6d67635a30f58b2ba3a64bcc365724899c15eb88f8f9b87373e96364d69d66a2ebc30661f2f31accc2e8a6b8475d9c5baa7e38649063be99b8312fdaeffffa5edb7ba0ea06fc9986137453c77c736c5019c48ca00c19830245c2827e44061fe408c99c449d6dd34850180d5244fc73da8c2837ae2dee8ee494e7a69c9c9d6261bedfdc41a99ee68e649a8334f939d398e08234e76088365a98c045f5153ec2c18213ffd91712d9aee77147538f10fd98b48dc5426e1bd673bfbbbd94bfafdc0d51cfd37fef8cd94e279f4a0314339275085eab05c9c889165554d9ff2c7e7291e851b22d316d95604a401a22d69a3f956bac98104a83b331abe7aa069cfa6452a8bf08253450443530272162f2a9aaae285763a8a8ca0b4adabf0ca61cad9e995ead5d34a79ede2339b9b92b762d1669b10a34c7499967b73231867f893a55cdfc311825f2eeca3db95ac0bb848da0dfb789abe5cce84d7f4de1dee160df6f66e25d41fbad7d305fc4e1b1e5575b7a6813bec702df516baba0c5d55a42b3faf5064c29a17b53161718d42ce4804ba029d8a4703f7d689ae1cee20d0952b9fa3ab370c7912d6e4c0dd5225166d0ccb1905b4500a4ef1ecbed3a4249ea752588cb7d2e254483d81528e91dd049e94318daacf342de212223241c244210cdfed90f065da6df27d8ad778f1e8ba291bdb8c6986c94425d5d64381192af24744d4248b6f8c10e509e41306374fa351582329f36a1250acc777302cdb8d64efc057d91967bd99c365824ad32053c1975925feb56f5f7f39366d38e18b2b534e2f39683e954372ea6911d7d0aa19beed9bfdca2f8878650d15eeab53ececf984b53e3b9ded17bbd387fe5c282466a3c7fc70ecb06d3fce2f6cbbfeb97bc5ce8642a46def92be6a53abe01ee8b5dcdeb699eb894ec0ca76262a8eb1328130d15555ff13dc4c555f4b9fe9b779b2e890743446d29d8a44c524830a7adf05aa2e3b184e92f6f8997a861d82cae2cbc118041eeba5b02397df9010198fb7c56b42c0383694ebbf6923380ec502f1765df2f930d996106776212733411e94f72baa9a32b2da4163be02910d9e41204f9f5f8893f06983923f94169e741a788f74643f33a59cebf98c94b223c6444cc149013ac31da1c10e6938f3448e984a4a127a3cd551c7657794cfa532a92dfd50dfa96ea45028fe1ec9b3e7756811aacd79d17d76eac9a2ba350a20e75bc5cdf38428f5a34fcec9ed9fa8e868f4b6b187c8bec8281a0c7882fb752f63b0800a3a6a599741c691a6e1bb3a208cae22cc32ccd8fbf8be7b717f8c19e6080b561feefa3d10dc7b1125f76d2dd55d3937b5dcc2b30673a88c84f44abd05922a103f4e970997739c2012e091cb1159d573fe56b5ae0074a6a9e1b80516ced285271c627a995e2acf81d782a98b2f83a90b3a6706f3c100901735202fbe54f66932784ea84ef369c8f7e49aa4cee5151d551eb1a26d324e8777fb7d43d02b6fa2639cb00038e6a551e9ae474d984ab71e280e8df6ed3ecc7b5d1a1d547f59d10b18cdede18d0914205a86eec9cfaad3aac05fad305737d1622355fdddeb6ed46e77c4f83a6222bf547f4ee0321543761bcc7c63b39d5ad6f0c584f6be17f7816140973f96353a241cfa7c7eb86a278f8dd7dc8bebc799aec3735cdb766f87b1a67228a3fe80c549cbb2a48d357fd90145b939bdc0056c28116984e1f254b0a434c54c052a517f7b6274a20164b7c0158f48c3f7e274b3336b659d59dace6c14d410444177ef01f7394ff4765933b0685795d6564709e681d5ea2af5305013f1f9bc8a00d5583eb58cc77b6057f5fe64377b205db34655f6dd459ac44ec95c8c52496cb92d17235e2a59411712d57911873ed6c3e74d8556b2497cd4e90b6e23483f5b65ee1db0e213e55b8e49a57edd69db409b92837f8cbf46d3b1c53465c75afcbac3b539752618941f0a82d8aaa896ef68c2a4ed3ca1896e5a96f04789227eb66dca4f5089f337543213f60c95accd5154eeda218f374aa2c2301e1b203f878956871b20406aaf220025a99b5535926202e55d26561bae68c26adae45d2998d3bd38a6a18cd1c5b1e12a9850ac9b7b536f39357579749bc4a0757fcccd43f271483eea84fc915a8a2617ec4771b485867bcdeac3d136d6e979bff34a9c1bf5908b717aad824fb8cb456b807acba549e9aa767e56a5ed899a3e898c9b0fbfd1f2b93ccf46dbf649abdb0aa6f8e9c9150a149e860b5ea2d7653ac8be3cdaf4725d37abeb5c1693d2dc77c66be4de3d8ee7666c92c68396f15fb35ee2ae5e177b403e2ee125a3b5f00dc22acca74e8babb3848c57ed77be7576377660f7b6a4f643c335f265dc5166967b404dc69e0c9776266f0754dc9edc8f8dd64f2edc90e5a84817be4428eb70e3e8c2ae6f1f32951c7f6879f3ec4ea5980b55344f3f7978378459b9dad967e9f27074fe862cc723cb9738d8e9e87c398f1767de12ee64fcdec9f91b16f621bf842ecb736eb93f367f43943d353caab1bebcb042a8b5db632b45dfb8f0bd63733772b534f120cec57d7db47e6aee4eacc69989f863f7cddd90647fef0a3f78e1dc0d4576de75457d72dfbc70ee46aa7e70932b7f49ff3a1e9d317a9c368dbfddf66ecc4d4714d60ee9a62c52314e3d79a5aafdc4c47e732cd2c71386ba798d1d5371ce1a665bc8f88c524208eaed8107a0c8534f5d4e7ae255c3a2005e9767c79243eda5ca333ee83af7f1c265d570c2afa57eb6a580aa5a4b841de2b95e90d552ac8709bd8e6ca8a6d52585250fa85fb7845183a1d1c11f549d984b1f066c785c6a92e689c366aa8425255356e6c1f1e5915a6529d1afa5174d1daa5917cf2dbe21eb994f4bc780fca096422f15a2aa7560b924ac1a66632f581702c024b7fe82e08a9d9a32d9b336d9f3eb93edb884e13c89f5f0c9447fdb3d68a4f7a477088c049e014f78346803e5df35b49848af1ddee0c73c47c976f9d1a79c542a0355ada6e209e241a47cac0b736494136896c0c3ea2c4505bfb389667da5125037ada1ba6b586aa4d86871dc5677f526b8e067fc1a6b773de9fc63586d5a2a431e6f46c74c61c3f80cd5e3f6a1e8e3e45bd82c95295387bd396cf2bb5d67d0593b60676ddd3c944c6d22f8cf97f9120110fc427b7575a9830f7d00909cfa65cf631a212214b590e03b40f4f08511f01c09b9e48a1fd9fe0980c2880491ea702c5d4c71b1a25505ec3f07b2491528d8787dcdf467120c95c617924b065df17645929d68b359950a639be185066ae67b7ffbc011a8686f53b1100fdb2b31d72a0aac64f6580249e285a62c9d0ca5ecc2b14ebcdf39774fa5b4be5898496e44bc434a649031bb09f7ba06bbf97eefc631380a914fa3a2440d5fb973ddf1d1eb23fc9bdeb925517d73e3fa84ffe137cecd7aa4ff8cfbc64956ff26d76decc916429a2e84d1d06160192b13f572137ebd0a72af804276b21d1b97f55e73d957fcdc01d02090ee1d64f00ace5a2e39b4852d6ca6aa91356fa60af7359775a298fcc8134deb44d34cf3a3e6277c833c966624ef064efed152e37c8859a90e6adfacb4237c2b6eba8f005ac1b9116e65b73a8506fddcf23ebd41b4e4e7a4b0d920dd1ef1b041df42547803a493e2102a585eb29641a39e812a6c07403629c692502ffcd88a28fc50d2740b5cdff1586863139c3220ebd44fa397df4e7898faed9ca6e34ef2f3c713692082badacc052ef012695e92fa5739fd6a3ebfccc501283bcd7aa2325fcc381e1f868b1394ab64a471aed4a8af94d5c2192eebf9a78cfab854523207b1691be266d9e47f6ce4c474b3aa4f9a7a0c941bfff86d9d7009ca89641e38c01489ca700dab1fe79e2e8e1dcee90bd2bec6fd43d8aecde97e19c19b5aed3d7621c51e13e025bb9473b354759f438594a39131e89e1e01fdde03d6067eeedb61be09b4be9efee3c46530b407b9f3611695906b528bba34808bfcf8ede5d4a7813d5fa3582a243c2d3d5a4a12c1104de6d0d9e5c6da18562253c663517c1c3c5faa069a622b9b02b974df20ff8f086483de544f2b6a74adb3a2e90f4aab28cdbdb16fd8ad246b08fde58c2f3d7833cf1e5180ccd21a14672aead5cc3b5d5b0837cb832139959b1313494b6e126bcfa66fc97d16442320d802eb5fe2057e03fa75eca1bc3019e64411542973b78b3317ca61d9840cb55cf406a6cbd46019cb2ccbfea9c60726054fed5f3eec5ffa745649ab7bd7942f270dfc3daecfdf22f74e37050d28be1983eb5d36d361d48572e0b37b973247351b176dfe6e840c035c30c0177ac86f7b5ea04182bdd8b93d6fe2bc5c6c2353ad81ead4cca502576b46fb48ea56df92b0b5fb562a9eda455e98b3d030717e2460ea870ef47ba369abd5c1beeea203beaea7385b59bd3bb6ad5f45d0902a17a92c7716ac33676d10631aceb45c38cafc76b1ffaaa35cdac643021b1f65a1a3fcc6e9a1c9f08f2ea6b7f8641f9827fbb41a94e44dd917861775176567773c3ed172964444d04a9bdad524060715892415759e68e69a91d23f83d2aa2fcfa2900d190a312bcd8f2045893343e541c3084da2fc8de2c458e4a5b3f2ea31aa40b7b062419b2cc92f9e405bbe01d71c853831190fa1cc174399e7da6b96348b012089a82434fb5d8c693b7dc74183f1bb94ed919c9dd56aaa8a8a5361a2d9817a6e29efd86c1bb7712061d04a45e3eea0efb94861ea2c0d272631074bcce8010d44c04387312ed47d0f859bed3a248695b439c52587bcbd1008a632d148a3dd980c554c06ae76560e1a615e6d84195f8c22a5dffcf25fa04beeaa6346c3bfbb2e598c2e494ee75bddd10ddfe841113f34c0f80767dfb200da64dbce13884122eba4201619076ac1cf8a5509bd4f7efa5db66c889bcd536acfe827b0e743a399e29719d1682e7f099fc98d75facba676e86a4e529a8b995215b6be0b6e6701be996b04a5f62e286433f6297d62c8a2992836d70ccaa900895f09157bfb7ca4e53961e01a6892770aaae5e05bd858e4bafdc40254796c9183b55d8e6cc0eae2077b5ca9e3669f62dbf1f32c75aa9e71f3194872cb6559b879bab7c7ca270c3e0fe5563f61f2b575884586dd8f597726e023fbe4dcb4ca7d7215f5fbabc89f1cf2fad6908deaac3fed09f4309ab0e8e7a4301fb5f344f62a209d94be0c91016838c7b13361806e8f92fbaeffe4d6014a02a4ebf865ef10fd9eb293ff43293b8f1c8f13dfb01372eea5015c20d6ea73df92f6e65c6f2e4b495490eb1098de3a9a88f0c1cfd49388cbec8b20c0e1edf196d5e238c3caa59eacea0439a0e560b59ea8b018d1e96f456756043544673c9154e320d9659dd918bdd8494e22b29323eb8b9b327c4f1ca8bad69a524c2f0f090478f58f4285108dbaf6e0245e8cf1670b1b325e92a2eb87306c220a6756a2e45afd2e58dfaf8b9a0284431bb7f2217189f5b542a2d984572ceae0a8bbe8a65e965845ed6ea6193a3e08796ec805d35455d680af32b7c7c488ebf5f5b22bf7eeff5acf636cabaf2028c4e0a724d4fb7be6dba806f157e63b1e6bc378e5b7ce78c693bf345f72f0e9b8e4cdd37e60beddbaba21bafb09078d63762f6844fffb08f8babeb3c14e53f0cd65f82902bed257e74b2dd991806f6ec3cfd0ef7553fae9febeb90dacfd47ea48dd926fb9e141f7db9bb45257fd9eff7a55f0c4465604adb0c3e57fb7872b7abc9499b0033aaa2c3599e8d38dec3090281e72298928185c4824db340d34983195c7a5039d65c46fc01b9d3e619b8cc84d6d2388437a93275b1e41c8542a8205b702563a68385dc17a7016d1d738c1465a7733dea7d181f3e2fdea7416266432e99e60e87bd751eb39291ba5e8de46fb5648f1d376da8d37ca46142db8e191437a54250e61b5c3364fdadd864356976f62eaa3f36fa2d1ab41536fda88648a9a06a9f42f498a9d8b138eb340a9e08e0f8da6fa7b941f813eea470695ce84dd9198ce667a23a8f24b03170003b7e1cce95db5d1935ff08a96a9ea2d8cf944c9889602c6f2ef48e91b3f2865a7b9b6d50b296dae9f3ea52b5e6e115477deed2f5c09370bc79b1b311c2c13ef7d33fb3a9ce0cbe4fde4bf29e8d94269be7793bd9566d7c5c24c4d992a284edf74af3c18b25cc228e9f1dc97102dc8c4157737006c42508c6743e8b451f722ab7c80602ae273ec724af965daecbc33bbb8ca6f0b966416c786070867101bd9a842e3fb9778380760c0eb1f3461774d4bd5a671f15bae9691a9ed543101c179c2240f2a29593dc543afa1823b7451dd984be63c9e379f300e6282e862821b6bf9cf0882840ca8634e9b9f09b2a7a2a3dbbbe6c34e468474e0a5f7419522b0e20deb1c7c84e0ee5e8ab63dbc69cb54c70383ffd25cd956316ace0ebef6a46a5ff5eb3179f7d885f61830189f064132ddeaeb7612917c5ba890867789e5e99d27eff379e52aecb11433ded6a694c4030987bb1511c58e3c5244fd7da954e678a53e4d64c1ecbff9fbaa2a4e842152b02edcb429d25a7b6f32858950b47936bb4421cc0310d83f20663e91882dc7e88fc0039d95940caf7c84f46d048591a3de17bb4cedde8d39b6db288277ba5f2097d5aeca4c4507d1974a85e7f5c99cbaf1b38949b660c7bfb294f6bde5fe490f0887b1fed6d3fe5b4ffb6f3ded4fd5d33e48ec7cfdbb96d37e23427258b6fb6f51ed8784d1ff49f53f4c4ded37a492e20da9ec2b6bff3b914af9eda4d2c177ef48e5df8f3ac8aefa241bf947a785a8a1a1b85b1758deb82869e721357cb61a755aff1bddf81c1c14d6eb9ab04b4982d3858214dd631a6fe2cc392c0480eed2de0133f991c3310dac5e5f707e6b0c27891edc03faf54bb56c5454b02d6e341e0b108eeeb829467549330425eea82a5a03cf852f5b938ec26dccea22672d63b767d97f72d94649aef3dd1f9d362e0948ef726059a6f17b87580e6f6a23631dbf2360a787009567187575ea2c6de26c340daee4406d4c5995a5a89ad7e16328cfe3fd0b5b39531b5b26968f9dc3ce9f63bf0330115fda4bd27ec8c5047d7d4d99b08bcf4ef196b6e169ffa82c81a87b74c5e99b810fadbe78ca29a0806379e9f2275eb6b980db61300862fabd38479f678788e7243269f08c848e0c704a9a97fa11140921e21da3043b4abf026398f092422155a71662387dfb904a6113b55c4012752ac949ed07055030ad949147231fbdaa9a4b29c3b5c8dc53d4f36a47adf7254813c8330aaea0c1e3f21c046b4bf5701d9f02ad8c6aae9460dc4925e93752c067a81d4459a34619b9021fc3147a6ab1c354f3c665fd5a97995954c3a8ca0bf24e5d26db4feac2ea3891b74ace2a1539ab4afc8705a5595ca5d49a157a4907370bf22ec7f46ccf7f62bb46bfc8aa32340a6e0cb9c1b82daba39209e78cd9becc8c712e930632c2c9722d06563da2ee5098af40a688884c0d2ef4baecb2fa32879478cd6e0a939784b7ca72e3f24d2826439d0b294fa33cbd26733923f8b7cf163347f3481115c4c99801162e75ec4fa2bbe55832f6087a5f4384bb678bb4cccc68f90216a3e9fb9f66a8956faf294032aa2c31f68bbbb1460ae733798bff3b426ac18c7b0819f476cad6c800a7749759459d9457f5e80a36b69d1b3c235b7576aa81da75592ef4dce57916a2f7909289ed60fd3c5f0717951bd3a6d978d747f0d4f7738c0e1facf93a7423affac207086e8c6ed3d121dea72c53be308b3910a415736e21b25960a6e9e2a966fd800a0f2886b0233e90984536cc82aa0336e115783573320ab5033d7dbdc919398b5c8cd9331702f6108bf3c08507f7796918ad5bc978b0f10b4073a3b3134698d2cbf4e97642f67c88451f00d60c2a526f68d2ecf5783777551b47f638d6384ea620bdd489e1e57a3dff45eaa87b3cad838473e63de12928ab6eeafe6199c232a48c0075cf2e3904a00fbf1c1802e00f8c68cbdf2dd788e111db70966df81f621bceb20dff436cc32d6cc37f8f6db8856df83fc83642306c830abfbd9547b2080b258dd5c8272d6ea2bb231c5fde11cea5a54dfd11a2a95ad2841f219860a44cfd0eb1542361ae3f4b28b12e3fb2fcaa888880da6a7b8e9a0363f10e0c4f626ed1a3b2173da67ac5614f354da4cc0a9904996ce7c3723e6944c02959edbc1c3eae6d79add98c5897c5aacf03688ad9f15a7765698f6b5f963b79afadb1b15cc855181da6273df41992a866b44ee1530bf8d9c39b0f97da34958b666e4e2e52d504d8cc089ac7f8c92c68038ff71ee6dbafb27d62cc300172e5cfc779b39a6bb2027e60b01b10839a4196524ce30771f3c4d6600654d6673e2eae330e11b41765538f9f24bb07541c32b2faaf29d0da1ff3d785ac97f7f447cc6212e0bc20b1feff8ba2769a618ca03aae4475dcd14bd50a74007334b8ea8b9a5a6442678c8704c2f516ca5b158ccd7469064270460ebdb927fd9821a0939a06ad15035a2b06b45674fae9a5d34fb34e3f85c63fd5cb4b37023a0897f3a6df539087f1d05986ee019d8ca1a84b021e4dd7bcbd94b048da8b5131f693b4d9160fc0aaeccf0dbc5b068341885ce1e20dd08a7d6ff6730e91926f72f94233d159fb05888295c304a0460b77835213c0847b6afd04c3b316778d8a30a25e9711007080d95ecad84493f03cbb0134ea9ad37b6795072d63d2be181716bcd81dd9287c1fb8ca33177c1dd118738045b7218318e56c2f7548963975f60e81c6320a4b6ce635fdbe91a37134baa9109832601953f9d0dfb38651c83a6251b4de85d4eb0b1cc1b399c4773701d9ecd96b5b5814331e37c3523cf9e6bf3f77a7e71e203238fe27b006590c750a1a9fc3e9bd219b7e78be3106763c0d4a3197fcee60875c088523324ed34e50f2c79d77645be4aecbdc8885db20481761085b90a9c1ed8ed89e6fadd747273652c12ba81c260c55e78efa25faa57feff6d132a78bebf7af5e0a754cd16b46605b7a1d2245f12ede8db0292fc821e0a10195763820e9d0e976c7753a1e37917df6704c7836b36dabd191d394ab26e44af36f809dc9ca031e18cdea97b4d60035222b6cf7748187bbe321c8aaec403281f7f65e7296b2979cc166f16ac9396265ee2c39d7346023394724cd1d25a73b4c00f126db09a8a0a123b98592932533d6b60808e7d9947bd1995c6f76b6334796e94134caa8753c15cc2f4859c5524ad6c1fc6ce83863309f3f249e9374309f39d454181306f3f9c32c1804d15caf23344af14f95d6f288790ee61e61f067bc9320172b83589b6abe6110630a7ecfbe05636199373db29da02da3d5565e3358e0adfd24fdb16473de550b3be5e6749ddaed7273c43546c1ca7dfa0e3da5a0d697126e371b03d92bf250fca62b5177c93c4e03ddbedd693766dd8113806e5903ddb201ba4533743443470374fb57db41b3cc6038f3f31b4b28eeec98859fdf59425b5bcbf0f31b4b686f69597e7e5d3b7e3ef591f6c6141a4f4b56a989d7da0a9724b74bbfdf181acd530b1698381843411b4316b059ac31f4865efad5a3fcf31b5ba8ada650d89842d77373e24d8f0bee07d3b7150ca25e261a15ccaa3abcf692bca64406768d77acc17ede02ba03f40eecd5d10cea9da9254d51af619635121cf53b7271d3950abdabc30f1a41df34811868c42294f1c90a6ab83180d8646852ba713569fdc4d846dbf0f9dfcd585a6879319600a3f9156be9bbb692bff2e6181f1a4bce1a4b40a7efaca5b0b596fea0ad74da10557fecafadf483b6d2844af81feca68ec692f5c8246447c91a4b511b4bd1184b118d25651b95b36df41dcb68d6ea7332ee3d4b9db50af29e157cda2a9a95a4eb81a7cbddb630777f6317b949b55fb18a0ecf1bb911ff2893a8ef41b8338986f2b7b3e5164aba49e75e2b2048503f6b3633b5db655b68017d457ebf6f1ce7c41502580813fd891560b1d69d355bb84687a91c20ebf39f5efc3d297745adeb74ae9ef3c8074b5ac951eeefbd0e74a87fcc7b7c26ac497a5740cdb40221a54d1f7e3777efc6b64ea6e4adb7356fbd2d7aeb4dd55b6fcbde7a1d78f42670e1bd0e3d7a6f628fdedb29783b05d1a96cdb21558d5bb7998aab2d5d36a111296553aa793267be1f69892bd32b89fd34b0f72e32f82eb0f83630b9b3b795d2f126368a06bfae42c17b54aaae938c2d65a2b8cbc5128eb6086693984095fd199f57d98f8175c8ebee62ca2c653ccdcdebb5b7202fb20bc46570a707776670bb76b5b301361206eff5505c5bb72658ab456612d536a8ecd52af956e80328868cd051461a10addca9647f0f0fbf5eaa524b7d994a2d952bb5285757322484e93230784ccbe0c51e826812b88f3cba57e9a9b872a6cf628ea1c864fbe0450d1eede0510f1ef5e0e86fc46d4f7a702640c069f4c177520045edb56bf9319328f22c97abbba392a42d5227f4b24dca05715d95b4ba77625c560a7b53b155221ae46650355bd7e8d6ece123555bad6f9dbe30efbdb7aab877260bd119655cc36a4631950d34af07aa1318db4eca8045f25d4deef4c8cfd733d09b53070ae5ce6cdaebc991c35dc8c6b1892b43c19a383cb4a5945901aee643033da728096c37764c98dcd83252ab895d7855fc7ee4740b5f0ccec8b4e25559d068449afef83212cdfcd86b13577f1a9c11669b91ade6ab477686b3e86aa6ce32c9a69964334cb2214786f446d2061d72e4a4986a4f3977387ab383573d78358363fdd3cbb45186c1074786da5d41060747550e500db45f6bf0a2fab179585b8f72a6e1dcb8d2e004d5a6a23e9e7c75e4100af090cf35d2e761f9bc1f2c7fee96cf2f89cd0c50bbf9b9878fcb7e74ce7f5d673712ece9f375765736e9b3ebe8f63695fbcb94ee2f53babd4ce9f632a5fbcb94ee2f53babd4c52d6b1d8f6e3fe9d1463b3bf298108cee8e772ad7b0ad7b2c47c02937269c7f92acdfce30a1b2aaf1cbe9aaa42556118ec2b3dd400127089fad78c8041e39f889bde7b484af7e2b4bae5ff3bf9c022737a3bbecfde7e4601fd227bfb96024aa7e1053fcbafa33143e381787d59a8377c9b7a8f9861ea03e33d338e0d8d0c36eba8e2c88f08b118f446f3290773cac19c72f8c9530ee6948339e5604e9913cdfb2fdc6c69644220fbfeace989e328ace88f9e8300173dd8582c3088a09847508c2528a61314430a8a5ba5c5d53bac68d5176dbbb093df34bf711ba99baef9e33cc588b80838c579092240329a6c10d2db0c6503f9cd6e841121199719fa32434f004a2967cf50a0d4b0282ea4203f6348c170721470dabca473de262e22b7a26855cf07a3ea55d20768786f8677cbf0daebd28ca436adf06002a3f5aae946bbedcdd1b4a5d78ca1d7d0ce6bd6ccabdacab310cb8a365eb526dea52dbccb187897b2ef767e70b6ef68f38e161e553bfb0d06de2164d8da33fb8eb1a0ff6203afdcaaa4ca05b3aaa41b85f6cab7faacbf53675125dde9b3b1ed1d53ab4abad16715fef242fce564d605fd402d9ab497ef99772a9e79613c730e9eede0e9af79f76f67de95c5edbbbd4be1fe2e85dbbbe46eef92bbbf4beefe2eb9dbbb04e1ac49a05bfb0ea379bfc9c08be16ce015bacba0a215a54e15a56a25a58625a5a225a5be25a5daa56fda77b44d3f66e07d99bf29b2cd26012d9b6e5e73e3a8cdc9b7f99ba25c13e5e2bd6fda53c183635c319ad717fc9eb48c2df51a038f7cfabf8b7c550ba0af9a79df9365567f85c2e5435f295a96f9f083b2cceaae5835dd28d31194e90960242bcfaf40b7af5b795d68d84622e021d2db95d46669b1af1bbfe99526b54e2db16dd3fe46fd04bf6ee3f5e2573fdc4423223040e0ed1b3c3b1617c2345380ee4288759a395825837f0af1792cb3215534389ecfb328860cd25b32e85549aab469ca8a191233c74232fba32c2fdd1c9bbe6dd0cbe98145622c8e15587724e70e909cf996b635a1b96cf632ee90b7cb4a0d82f3deca74daca74c6ca746865ba071020de03668e6d69291629dd1ea9dd20611e347f1ec8d364ac4c4770e76a483e2a3cc580a93aae2c3888dacd0a0516e7c340583771ab2c107a01af9474ad206e18652f4bb48c87bd76ee65909b1163d89b74835df9625d201c267fac3896c0e9f4683de3494928175435a3803a834163fcfdfb6ae33d4520e603268211136373a57b4795049d50911de32127dd643308273b668c41cd08c3afe55492e1c8bb72e8efdbadca8d38c5cd49a2bf8172761bf49f8260ec3806b7fb064018075874aff37d16c2d837e05b10c6cfb3230f18ab77704ed22f0b9f9f5f5aeaec330d07f038a8deb4271802b5f984d1103699144afcf9e04b63dc3e782f60ae4095dd2d7ba5d53eeea4b56030f32cec6d19dd01b239fd6bd120dd445466a507aeecc9afe6331b24c9a4f99dda1edd658316e137eae7befc3c67b825b65e9999cedfef5049df994a20a4347014f6017335f879ab9c8e5b6c524933013d75578c8104f251356c9278b67c0cb4072275da051bb4f0bd1d380acbabab631543441007aec8abbb4c731422ac19e8596f777ee9ec8530d7a477b75c64404848d4a3bfe7b38b1dbdfca3f2a038e55d99af3cfb5a0ef772280a2edce2f8474cc7e53b247f26407232ad099b7663ddb3abb815834292d1547df2b6ec93b7759fbc29fce44de5276a63c578b82c5ca823b0b3ec6bdf866c3c233edb29643b05cb26bd72855f0376372815bae6b1cd1f29b19fe7394993e334e5f5eb2a8b4c23b1910d93e13a01ac7095b655070137991e758e8bcda87c7d111f028d22752378839d197b71d9041a43af3936548651b51222539e8dbaa93570d13845b09457b174a4c574b759e9a16b16c576b1dd75bd853abcb347da5cc6c8b485e8e34cd2c3b251e3100408416d7da3eedcc075897ab7141a6df40450b00a2cb16ed846483747e4291ed8893942f93130406645d434836254ea9c74f115a78a152a2146d859d4ea88f5d0e0fe8d095e784c09d42deea9fb1f3b30644c4a83698dfd242d25c7970e419e9cfa201e8af82d681bf8e34f9f1fdf82f83219b95e5098f20dc7aad3fe7355f3d3018e736ec80415f4cf1b02b3f845ff88115c9e3af1657182f1874d0eb1e89d6a48846ae71c309fdb9d81dec2fcc8dbdc93015a9e079297c36bc673936dc082c442dd2550feb61b31a65eead7aec4fcf5f5d93bb1a90680477597f45bcadd2ebffd75de4e75e39b7e907f1cebde8a88c1786593f6da8a1af56e63955a17a0ecdc68f6468184c232a47385d1771f72772e5efaf8dc13177c41ad0e46b6746e1d1a88c951bec361bde2d1485749ac20455f33398b5495d2d2c495c43a8ea434f5a2db986bc320129936370eed9f7bee4d12477e5ec4f2ac3a3fad149172fdf535c5d7fc759d662cff5ca51c5d13f0c19f3648699f4676c1cfe30b7bfb75b997c0c57a2529dc1d67181b5db0577e614254d77eb1afd735dbb2cc9db9444bea9f726eda586a9a7ad1f0645792dbf47195e20c744c92e9d5ffcb41347b6aae0581399ced2fb4031d5f83e7e9cc5a047e467ba5875a914220aaa99aba5f3226b82e07adb597eefcdf861acc14de2fcdb466609697cc63bc5136dead295c8657d1997942ff992071ff396802a12a83ba72336832831691aa3c68ae3226cbce39646705d10c99ae9b11831eb1f3a014f588035c39bfe0a623954f8340627a992d9f0745f4d17c487971ab03f9092c349962f4de30a04081e4d3900609cf1ccced3818a9e985ee01475781a8b5d6efb5c63ef6cd6f801e65b58d8eca4a78a741c628d3034d818140fad39b5c3f950aa811b22acf08532e3dde504e10cb90748938a586e9a4970406a24aabc40958708e479ac50970b004d0b094f0076e124ef26e8b6382deedd581de1ba775f1e92d9abb5a26e0bc27be53ad73ee52932cba689286050010154923dea2833f42de0c4f03e039a909783d814ddab480006e726bab24f646031d3fe9e7e8cab9dd7208e3d92582823cdb7711984775a254d7ec4ea1776262d98b159d522b2022c341641572f4e89cf36f92d83b51a9dfc6a54b7d34d9b2a65590c9ad1518465265d7a8f9bf8669dce3edeb65fd97de94d0f4c5388cbd2aa2c91f4b466ad65865ae3bc319a919d1caf23167a49a529aded6d2f4aa98a65faa697a55326604abdef8d707217fa84c7d478e5523327939ac13f3587e441c944feaa694a19d41ba010a8c53758fce471f966579e4cfcdf4bc7b6f6e397b73c969f926ac12dc75f2e7bebfe6a748b377bbed0e43aaeec21a5cadfccb489da55e06d7d3f874f1c9262ecaf7767a8aa8b3c73d5a60563d5405ba327783fe2e9ee4378660d12d1f8d57de38e58d4fdeb8e45f02812ae67c8ef54dc6d92570c3d06e50aa3bad4fba57a4a9bf686fb9334a89e969eedf24aa8ddab697c29ea83291dda876808f75a0b80f63e5720a31db032380eb19b61401d7db50b2b8640000ab8a5d72a3904a9044928fb96681f0a8e09e776ab3006b17c966848ebc63f2657e4bc7b2a68f55e9db63654edfb2db86f2edc9defbf3de9726d0642851a8b7b9cc6fb4ddb637d8f50f15bf39265874b81b301c492c7387cbd722c0112b001a716ea4b915e64a96bf3e19d696e06e6f16762f762f39c454df49dd5ecd29e5277231715f4bef25fc12c3915753272237844a5bc2b97ef4bf899aff051d2c0f26588e9659d2fa76d478eb24e91bd8a53caff56a67921ff04eefa3629e1ac975a9dac9def472ac9a7bfac7ccb48e9eb7b09b6122e9fd74c2451896d168595806964674e32626f9754fc0f10ac6c278b130174abf6ef3ca55888eb66710d1438eda13b77252a18db0fae675d37c7af4056566f42e65f6ffbddbb381f02b63d326e2f182d6f8dc79a536e9aebf135bde9fe5d631f03238a8d4306e7252653cb202f2d3162d7d3e8248a2d1ac05731427e29b1cbac9686c05d2450b383ec71730df9303234518e178c774292d15bf50a96eab18f490cd9626405383dc418399c4cdc6b837d969261bd53f920951cb84686442449910ad4c085a2604231396ba99dabc33d61d32c9b4d120556cdc04c34da89b23e1997c0e4c591c2dff6438b5a781d0309cd5c7c0d300c152b99fd415ea724237596997daa5316a1f5f2c2315fcb66cd00a2a8c530be91a1b2fa58015002e60c10a21db2704f90138f4b193b283f008cde2dac10f6d0ec5bcf90faa33e4ba7833ee35ea7f0f0adf1aa22376554809c228301b848d1d226b91cc63e5531f7706f6c76fea66df1da5507eca9bd003266fe65db5f616df74b1083da272a85dbba4e780083eac6af7b428398a6e8f7a2d847a8d9be8fc884d141633e93237571fd1665edda8d99e0fa88d49ab8dcee86ecea88d4eab8d5eab8d7e859171985665c25c4ae3b581798d482c6fd0ff5dd7baac13840f2f032f1bf434721a321423cf111483e0947d39dc37d3aea28c2250e92ca22203a2e21e72e10dae81b48a8fcdcfc32690a41582c85de4179e86df887435c9e09e0b9d28af9eba714dbc1084e07897ed14879d584ce7fc811e7561bf4cbf209d4fe714c1a797946a4ac9496ff7d4db0a896868cf4bd2f00a296efe769a9dabb9651cedc4363e6cebc2561e6ccbfbb5dbeadea7f5d3977386b20cc87328357841d39dedf5fddb5ac372f1f7ee93a44ef5c193435e2da7bf47f73347f7f1f1957fc3c9111bfbd71d9c2d1e1455b9e4e18ea8247e47d45025cad2a7e4672be8c0d9a43bc40967fff8b86e953577fab02facbdcdc5f2ec1751bc0f6cb9a223c51ce8756f95ade84dc404d5135d2e02a30c4747da88e67c2fb77915fe828650417792e088ae86f2e10b8ce2de7c7397d1c5eecde24db8e336bc21927ac76de6a7878efc883861fd873f159adcc95cd4bed32d41cc965c16c3fdde7b3afa51ec0e5dcd7a059b1fd6b0dd9d20dd8726d4a73cf869831859596f8fa41956e9a4d03f17a53184aa9141177e7f3ea0807e056d92d4d42e7a76205c1e3b9e2e0d4c72629197e972db6c837604ae139110e3bb79bc199813092e45aca74d833e48159b0aab7dd30515f229041093b5b206a9a624fb415eb85b42383cad16c4b1055d55a4e8306c5e25ae5b4c6c3d8912b1dcf437ee6667d6d96efe0338413a9ae8eb665cccdf7fcb66ec6e35558b50565dd6a5d7cb66127c7314fc1f70a471bafe5821d95c6a09c250e5bbc321154214e6b86ecee3f5738013f2d1959b5ec4e184dc80e62589468670245bbfef6540573eb9fa89d574f9970801b6e103e90287132b4797e237d8c75c1fa6fee56418e4f4fcd06ce3217b61bbc51dd684fd393df7f234053cf627127767d0fd8fc144912eeb48a0b6e8e4e4fcd83f55486ad4424a12afcd88e1eeb3bfea808b71ea999fc6386d7d14083a7569bb38ed3978249b01754d867aa97de2543e9d21c782e023a08a8140ee18f4ac49b6a872a6a31920f7944bb3e2a1e330660699d7973c0a656426ad329de2bf8da88584238426a54ac04eaf6e43f7846a365154834b636b8ad542d18b7dc7d535353f22d7adca902e1dce1be64bb2f4fa61875723dc473e63126e582250708e40af8d5c7df00847762abd53398cc8b948f940aecc0a46209304e1135a85d383ca253de9f929b1aac3618aa85b8a681c3549ccd0ca56ca2902381cf9c8a4c965a39a8063cc7f4266ccc3edb788ce92ae1b507095cdd50823de8abe993d18d9fb046572c3c36198325b3b958c37458b64488f3f6858b97d525d5b80da64d69786317608a535c1ec1f72f50b210a022da5c38f10f4935484f0521ac535091168354d572d5fc4c1bc80ed43260fc7faaa4411e63e06e01ab298114fbc603de08ae7102e3b8cb60aefa26c0ea4119808213cf1c579775223757ca0f75a75f307bb23a95b7d7e1c0991931574d5f8aa554c27299171b54dc6f5a0f4800c324ee143ea215d2a7cca6538a060a71dc41b28b4f9ee384723e277c73912d59071e5edfdf8a9d31d9e8f6d60e9530582ac0f672cb029d22894c57760af2aee1db8f6deee2a277b95b301feb897caf35fe2c2fada8eb346ba025e3a8de1c17d12fa10846232d566f74d5a0327099d4f5640808cf7b4420eccdd2d5b68858c09b301e8b340ae6d832e4555553aa367c63fcd3ee13b5eb19f226326da4f97bde2340e090aae691c59312c71076fddbdd3c0faceedb198f168aa3bb605f4bed038440b1a81268b760e255083a134daefab12481d6aab7e4ed227610a7e2573d426fde68aa773ab8294310fbba1a280514deef2b6e3200fa9fff1669d930e1678e8b7e351e21aaffbe092c264cee2c84bff4c557bb60031f5ef1f2b67a5a3af2ae7f3f3151f3df4138ffa97dae12c49bd2658ddc78fe4af8e0616c720729388254531e082bb39bd891829ba92c7505352c2d22b59ca5ee0b7d32c91b5311f2e185c0aaa84b2ce0ceacbf1ccd276667d038ba4db76941954963a4ff47659d3e5665795d6e6af09e681c9e31db2eba39908d53cdaad2200eafd53cb78bc077655ef4f76b30792d2d8d9c1f62e4d62a784becec6c9ca4cfb8b11759520153035c5378ffd960708a74ca597ead4a8027b2ab1c06d18e16723bcef22f1f94d6ec61bf652a8da86d9ef93b3ebb705fe4d55da04e1315da4d69c3d938d6c0200af58c0b7eb1165ec528b1e5146efb27cfd51caf83468e3274825851b5299ee91df4c2a98b2e117956ec2c5dbebdc92484c5646c4115c0fe582a2292df6b9b2e281a466091266360e95a5f6809e3a0aa5620e14816ce7e273e097dd1c8805d93194591ce4b98dd37f97e010dcfb79fa33574d6fcc8efedc3c6799c781577dbf8af60fe64c4655c570a343524a90770b336baf1d88146384ddc2c65c3f4f0958bce59731e7b0b2477f1d91fd29bf9d87329e926e1726e632090544d57ffd8a78174a1321ddc1d913f4e997fa52d9a41deaccc25d6fe2f94f5c66622b694534a060627849ef3273eeeee9871e43a98b9477c88603eb2f93e2ae288182ce32a95480dabac1b27abea9e4d55cde7019dad9712e1f0faa8c1878b2b9b8c253e7675ff77bbb0b2d306dd275cae1c094dc3f22cb52e51b28067670538007e50f6222ff09f2cefd66793790e18d9cc7abbcfb0f26dfb6cc4cbc72670917bd89f7995b459eaafdf40e9e3e5958aa9a788b21de6288b7ac9a3ba57b4a82a27677ac262e6175e65276ee0f8f59f025ade26c413fceea1cfe814edb99769952c9f43a6b5898bc083fc6a246c2b4d87455298f1e2afcc02d01f79d83c20858010a2bf9dc54a49ac44e21e4dee680c5c04500360a923a88c3e5e90b1f2ee5263ff18d58c4e01e1d81ad401b6ebeeb288a94006b2bda441f2e157e0e96091e98ae34d020a3c0946821612e245385446f6aafa952c258650cea7ce145d92064cafd61b9e787e5f461dd54ef522dd4c8b112bdecfc88efb6fd698d73a989ccdad92a225364e4e96179c2088cbc33def6423d46f6a705ba6129f6b8be715ac59ed6d6c7b9148881aa21c788c98c605dabf33ae6b58933b7720b6faadabbbae013ee984c084b8fa84d1f1e0b228a61cbe9667171e144c16ca70bfcf38825fe84876466d0ce22630141ce1fe1a5597a409f92993a071a6535f19c5628278b4bfe858e8fd3c6a77d3215f887444590c877cc6b63706c1ceea1e660c420e2fab1ed99b92978a00bcf724457ea2566dd63ce43ad27ac0e373fc66e3eaa66d6dc99329f52317c6cd25af7f514a222c89840c8e9d05a5e75d604e5d51254cd9be5ce83ccadcda5152ba3235d728fd169c24e956d25093ae5204109d5c668ee535034458cfd844cea532eba1e627a53cd265e0fe6776ebcc4a42911766cbe547815bc498778ff3b62e07b9a54679037c43173cc9c2eb7b12a5d7c91129835691e785a3a5145cdbb77d75465c44321122397f31ba3f5aacc5efd2aaaa3ae7162f8490452dfa7bf624ab35fc886f48529996fa143324d779aa55fcb2adad45fbd8531983607110f005a5f8e994a1f30a8500b49b2234d772236be3681ac445e9609dc1b4297db5574c9b23def7e5f3ebfe2e149994c6f6467288bf2d216e5652cca0b6da9ba31b4ee675c51e347a6585484724dbc7aac1c0ce028c56ac31616b22d7370f0c736ebd0fcbd6cd7b3b3abcc221069c99789f98d26d68d23eac398e9216d61a44a38599f578cf77acc08885b86184d85e793c6daf7e6329acabe3b74a157b7fb7c1d2b2fe4696919b695a0c75cfe845211e22ec931eaa241379c3f7d93f3e7f3ae4e006a3d1f1c43e7d2f674193e1ed9daa5385a41550e59ffa19086df5ebd3b72e83f8f9b72dd5aa342ea7a4f1ff270f78ed8ee0a168478ed4fe9a613dcdb6458a71d519bae685623452f6ad65ed4acbda8595637bb8a4428f436e9bd6d6db35d84262c22fa52a85f0e8f64ddb79c3363342a6724b45d1b271396be0e0cde6d9b86dfb3d6d8c6a8e55d34cdd15567c1954eba4b201b9b9976c0ebc66e4107bf02fb4c8144820d72585315dcd2902893b41f3c6bef6c6157eeeab519b4c77a16d701721bc7ef0855b9a9e081e55e1a066ba8b8d37c9c7660008490fcb258ea3702a4953e2f8b46cfe5d8b81f94d942e2d3ba66ada91ab2b19a675df3be3e21d67e18d699a5fb2dd9db6c093f2f8a27de836d49d7db02e703d8e59e200f6d11a3fb2e86a57dea1c39c16a1857a91aa7483d2466742fddc0d42f6e6a308133e60514cec97ea3610453e4201c78c6d9532397bbc41b8798babe88935484f8fec2614c86aeb109046c08fc48d18923580f94eba4ef3d441aa901848ea8b4c63956f9040ea6abb9180a591b0ad9180a19434fd972a0a4434fc9c43113c631134acdf20f0716dfdff29c3e872f7e7fc739c510d049161cf2fd82b2e833331bac155fca65cdacfc07289546a1b3ac7945d190adf264f11d371a6c5f861f1c60846ba52afa44f68a7f1eac570d9f86c49d45ed37c2cf3a13563875329e0d0f5255b270bfe7b640bf7f786bff8cebf753444ce7f88e8c4c6fe0d2a88bfff74e79d2f89e8a7ee0f923ebd7ff7fec5d6976e33caeddca5b807f7016b9ff8dbd1362baa028d9ae24357c9d73baab3bb62c51240862b8b8f061c64f4b910f5bdfe02ddfe5b654a5b12158bdf3aec6013a64695f099e1b18bee07aa56d02021b87ef6decb581929c712c8a7cf6dee2aaf2d8e534e7018abd692e8fdcbe259fbcf3f9fe8bba384a94f7db9471a06093142b31bafe5b55b17e9dfae7355cfaa31a2e7ebb868b3f1aee2fd570f1931aaefd68384b17d6ef55714ad5f3636e22f678036bf99ccf4423fc33eab809fafcfb14f2c48397f2a391ff3e8d3c97a6a65f56c9815fe8472153a7b6ef0c00cc9daaaedb6fb63a0346207f55cde53face6d2f7abb9f4a3e6fe5635973fa5e6d2db6aee4cac016c0288f6d162f95b6c42bbed5541c9c70e2173d7e1735c3562dc72e54a58791c7e4990d4795ddf85a19956e4992915276cf06bcf8ab8c1f836009617675f26855af14b970b81c62472aea7b6d4e11930371a7c6549b75c95614c7cfe82505b4438c35ae56d3ed7ad1d4e26b46e66d10af0417ab8f64c5e23b13a5bfa4d9d1b52417a3a2c23ea8b346da467690e85ead0dddb166d830ef57dd086b7d9dfd7ee219c10e5db02049cdddc56329bfe3853eb083bd493ec2378325a23f0e62970abf8f7e79fced82561ca2469b8a2dd8e2f17e9adfc47bc97910d897db682a8fabdd4742f73bc45834bb1deb405396f583c252e362cad90efd46d2f559d8c78b4c6aa4b575d7b92a8b07cbfd86faddcbe9d4893b7e1f29352be67d578d7475f7ec229b5e2e05964c75b1b5b16e1ed486e5d830d0bcafad9b644e856de6dcbe0e7323c4e544c367df1e56da908bc3b1ea3bea5d3fb63a82ff2c182afdd98e4cca2d38c4fe440258029eea5a167406cd83859d6c9e3a48873340ac468146a1afcd8524fbd566934615a40c914ff024824985f3b44e47488ae7934ef012b190cf69bcbfb0aa803558ccc0dc9f13ac404bb64a28293a3aca98b16497e2c29de637bcbd3a1934bb02a67f346905ea06ca0820b72676340ee9cee7e532db5d034c924950bb7c1747cee7ece328ac79df1491c4502b657048f2f60ea509204ac677835e27df213bc4fbfc5fb6cad8bd307325a3419d8c18ab791e2c55c5e936eb650c973e6aee548863d1b9f15f6f9f64dc186d11173aa8e1e525e10b15452d32c48eae44211b69bc6b2f6f52cb31bbb5da776d8f0606b3e0fc7045fa4789c8445691090836d810752b3978916e32e75ff00f42ac8b8bf2c8b40951a2fa5c6ae820c5440522fb5dec9217bc9fbbd393b4e8ef449653ad0f3590782f9f8860a0cafaac0c0abeb35e0c90324319c439dd5a7b99dc0ce79f170bd1264986b10399e97aef44ad70645e56651ebb2e942ad55aee7b95e51b5cb7861807d46c2d2a902a83c2bddf669dfe1b88b80734e49d5239ab9a0a0c225a5ba8badd1f32ef280c5ea35fbab561efd93a5188a3d85d8f44ca84e34dc0e1ecb59033b7a5faab2dbc7373b6b8cbf60d38a75218b76b1d1ae8a882675b0c9874632d0967841a96ec389efc5179fb0c2968d4dbb0408f202e99e7277da1795a9c45c2cfd76352633fa1ae03bdba4a7687a3b6ffafcaec4440744d710f3e14c4a09135c2d3491c81cdb908861d59f5b0e64703e5fe7f7e87ad65202e7e313f7c4caad8394f88ec921657d5e58f8b86723d16fe5e396f36a174af19104a5eaec6e951d15777a187bf29b318d7f948bfb09e77c7cd372fbb2494bd208cac6866d3fc508bfc93f3d6ddd596ee2f2f7b9276a58299b00f6c442beef5b776ef35233571c9f152b46ff7a65d92765d927c5ef936abab20cd587c230098404ddb4a5304c667872ccf63704dddda357659bf1cc39b66160e52ae47653f7a1290af1d1aa25bd78f02c61f72a4f2774085934f1616cfce139e193700e428f87125c0a750cd0e0746d6ec4f12ed7c0862c281850e57fd4cc244e712679771ad63ab07c1889b900719d76c318cafa26ad383e9e5f8d17a9f1c56165c8d1aa7f6103e166b8d20d5d92fa1ce48be786c8c9783f1d33a3be46f479a781fa08184287efa7be18b068553b7ed06afca0c4e3606c4e989cdb30840e260895d60db37a0aba04cda06cb3900118b867ca4f403abccff9c978a44b78cd86f573482c0cd39745b9d3add8b38b4989b3a1455e877296145ba9d7383ff1f828cf593f2fd95f723a2fde8ef7537583bcbad305d2d689e9005fd8e3cac606cd9e3e44524a348db6767ed2ca6e6f53e0de6b1bf289036cee40175eed6eea08a62b7a6c776f871bce959da9a0025d6efac2be8be9fe99efcf74646836d69207060ed810781eb29cbc3d2d13eba13a32805585d01cb08ac97d47b5f2822c8d174489d9796f45a99cac41cc656b98b95f997fc55b3265b1640a5a32e5b1945b321a292d696a098e66db89f0a5d0c632236d5930117278f3d755bd9ef9a5f8672e8d79618a9b3ff56c4a6e9cb514114cd1eae57ebe6fb36bdde5aa5bfb4b44cfd801956e9928623ea7466e0030cf33e818f809fd593afe96e6229ab69129bcb51be7235e7a7dedded761eb3d99e0c965337686e98b6b382f7966ff6a5f83cf81295cd636f8ac6d7c2c38a90576c08954ef3967a33cdd0226a630a5b806176fe329d5680f75ebb2c10016252783cfb18e708374b064ded4fa2b920894efb13cf6e492f1ff343029122bf6b04d5a2571aad9206bc3a3a3ca8d6fbb29e9ff55cfb6bee1d7be969078d957fef8cdcc1f629f6603e4d52bf57a027ba5f544bfc1a7e0ba453c809e8257c8853a901ad6885d66fa4ea3ac1d62485d3a379e785d396c94eb0605a6912623955d586412224adcc3cc1100325836e67adf64305feb3cdf2432a518845d58cbb41a0b281939e72857c670ee2f35b3bb0e74941dcbdb576bc63fd68fec8ae46b320d5fdcddb95b3fddc87eba91fd7423fb5c37b2fb380469de7fb21dd9b5c798e269c67ffa91bd251b41501dff8d7664d7a212dfef47b6cf45543964214de9da8d83fd5dbc7302046c68600677543d399ce2e5e154b62aac5ea8b0e5eaf6fc6caaf767d3717936ad4c7d65380ef67ba5fef25b65c9febb977a7a34c5178fa6dd4b244811bdf5162f4fc1e6a59eaceb790a7c7e2ffb78be47be5dfa5a14c93e014fd62c617c8607ff1e73f76cd7b9c6ff62591c0e9a7dbb13cb79273610f8b2eec4c429437b18c2a6fc92a1ab85a68b1fdeed6e2ceb6e5c07e776230fae9c0737187e82a228c9a6886e168ef3e53713bbcabfd8cd8ea4c022ecc826ef83634163717d11b7235f7e9377a6415eeabdf53d4f830b5fb787c7938d6799b0930999b3856dd65cd68d0dd9fce979b41bfc4a2ad093df761625d9bc87f63b0cc84dd6615cbdd70507db31cef3bdb31f2fc20fdccfa67d490062a25827d3fa5db0a37fc9b332843c7f103c7f3d8287d2707f21808765b6aefd815eb1a191b4e689dda19deeae4d0da7767e67cbc593f27ed9fbffbdfedf95660f1cf0faaffb7fb196b7fdbf6feecf99a1c6301afe06f578df0670fd5a14d75a8c4fa68042e5f3ef4f808203c8750dcf3a06335703fbf83a9e0a16d108249ea8ea1c8df79daea331b8aa48cb347cfe3de7cf2525960319a5525749dabfbf50beeb8bacde56e8944ae135071cbef3f9e1fe3b20fe052e7d5fd3eee15d0b99367fb9becc7875dbdd198eddf5cdee5bf522b6843402fe5205b3b66745d0c653fd7333cfb3caeb3d3295934d7526853a300b704e3d611200e249afeeecb1d9d804482a9b232b62f96fade764e7aef3d48dd1711b1ec002f1f839e3e60d00f2089f5ab37c5ab1725a4ece41706e0bf67a6efb54e273fdd58f7f712d63eadfb79894ffee5f4ff2b0e7690874cfbbaa91e3d89d949096c51dbe6f64b8638c28d707c2bd214d5d3b9483b29d0eb1350dbf26f3c5bc919a947c1a2f854c28b52faa98bbe61ef299ab089eef54ed4f852b625bdab9a0025864e08da1e7e391f4fe1293380ac772f5a3dc1e9e1baa5fb1d13c77969e8739c14fa44a4b226b3013f31cbc787eaeef59642f2af224aef6def974873983f0ef5a2a7180debae80057cebfbe637988e9b9d3f7969f770b26ace97bc084be67d6af81096b7e79e282f0627e6b09ca859aaad09986b90ab51121d04444283b5c67fda5b2c3b531d615887333ebf15c76189635691803a986cd7d8b3b508fdae88a741c9186af0aef8f7789315c0d23923c5dd2bd284d7fd3d8850331aa4942d92984171a2746abae62162931924084d25374e1065f67f77ec2a0a0140ed123b6ff81201e5718bcc99f70670796b66ac97711ee77b0f25c7d35fe664f8477b6ee0b15c3643b7cc9d68dae24eeb59d7bb3f9aad75dcff470da21ae4975f6a5fe9f938b621c6d62fb602e5647264030f8e44fe3fc5a7c5f5673d515f4e5f342e50b9b7fc76109e4136aa93750d4b7ded0539b9fe242d7c6c0e7a99b218e977d1c2fcba20ebfa8b35f9ec04e9873a39804162781f34715f9bd3ec67a3cac91fb543988fe5be2c60ee9a901a51dd5cf6b9dd13bc8e6c13122ce637a522b79a9d57a3a0927b054b5b339755d92d2cebb7db385d3e38a8bd717f7eac243bd706927c884cb2aec9930d60d23beff25abe7d7f47ccf4ad17c7a848617929146c9a990fda9901f4f78965d082df9109ab32777749cf781f8501e4b385bc3f0390a39dc935b6468ef5c798b9fb855cab9e77d500e95747a6edd5589d819d62f4e1d082cde7901c2e4b6d2dcdaa9e5e5f6c2117bb34bf3eaa76d9265cfdb693c7328b23f59d2e250a4c5a148a7300819a5dd69ad8b69bce131692f5806cfd5cca248b82366d8a327bca1766578a762a4703bde573486258a07f175b75a08717fd6173cff8b7395eb6a49b809e0ca71d673f514bb495ecfa545cf39c97d62356c0ca68b508b46399f17d859391d1f17ef05315626400daf350d4d5bb4cdb40236099e5b9d636b4a1fd0340396f4af7bfad87672e20027576c246b285c4fc36ec403f34ba33f74110314d3b18619f1e6dd65e1a73d76583a289253498ece4db4255e58f9f7cc3e5b3efa975feb5b5f8a8ce3f6e65b0576da3e9bdd7a82182a6b8b7457a3343140169a4821c9d5747e1ce06b4c6fe200a9f65ce7ec6c602f0b85302bc00ecf5967f3f95ce72c0ebecb7582190d671f23c59d068729f244f171014912d502c4238aa9ff2709836b98dcedcbcc7f6653f30f8ddbcdccf27883358774f902236d5ef732fd70012ffe32dc97b3ec95e561a8b5e30dd2f1697b6765af4011ec8be8e773f707eaf4a2bf247073f18daf35f9af4816bc8022d1a520d505e5478a018923d6335b87023ddb3d6e148d088841ea224ab073833440db6f193e2d064dde40912b4b0aeee91b6923f6bac600bca994bd898cacf1cbcedf1dfd048caf8f850710f2f530bd86edb876ff904ac9bb7ec974da7db3c2adc56eeb5216dddc379bedb37654f65479b73d6ae2d73b18c4b1044078ca6d174e10bfbfe5a8e74b0dffec96f340c3fd86d354d85fbce10283a4ff8eed4676decefafb3bb71b01cfb6d6ea0f14fc6fca225d9965817d863f06048ff1320e9f8fcf8a515c51ae5a64a11a877cfffb36319c0069203fcdbfebdc03cb339cbd6f4fa588038b02d126786776b5e845796e9999364aeeda04a7b4cb4677b81d943da3ccd763595e5ece8d07e79a9c9cab0fb7352bcfbdace3b373f0ea3b7f73e62803023cefe68f2705fc77607ee13d94304594c868ae3ea370e6ceace081ff1bd499b12b3a4cd80c94e19241dc514b202fd93337b9b38f275797a45a550ee0ce519547d096e3f03758236634c7aa4f3a3b9be51cd23be98bf6a2c34e15fe6bc0141801195afd920c344afb85c7ca3738272006e6ba35bec0f9e78665916edef91f250305a56b00b979db4b419028c32dcd220cb22ed0d604e493204705680e67204f5a4b03d5163078ca23ec8cc7a630894fc17a9a37913c99555d1635db14f9980d2ebc276a6c788bcd4b047e89f24c4dfa377c7a9a6e7478594535bca8c229bc223180be3fcf6137e50d60f97b539c5825f034e5794d333d0e4786ec99f42ed18f3bf0c85b0f29f70f613cf0eba48b4d48edbe25a39436401d9f52ba94cef9ea7d1fdfde354899fff457e926259792d312347c025efde778104fe8c2f0c48dd4a6dedf4a82988fcdb6ffdfe340bc7107d384753ef5075ff63039a2f9ef90207edae39c67a80f8e3577c25d59662ffb2c34a7e2ca11b7ee828bb269a35f7c8b37a7c48f53685276a909821a359842c7fc18e4d874f1b32ef6bc4e34fea80d25f5f0599049d63e6039ce2493ac0e1660d42c62cbf59e2dd291345ed33d4eb3233b267bb5d930ceb32211d6824c97383c9e3c344986f9f5a3e0024bc6267b3aa5d1c8d805be46c39eec2f8eb26ee2675af46225c7e11f67635d27a338ba7222d4a7f27534d8d78edaa63f3140f3381ff15248846aedb2d91c2366b28f1a6f63f012450515172d600d2e4567ebbc41381bd640d86be8ce4770392f4542c82cc9a52f5406de266d917d1a0246e77997f4c0251d525aa4e11323d33c0f7b8761d9ee80612427af55ff8b9d3adc1c23772705af410253c1d62453b63b03cee630ff32723e407c56f206c1398b8cc44046064a42912ccdc9c9f20fde210eecd63ca31c41ffb178e4c7a59d3b7c1cc13fb826ad9f3337b64a9ed8f7bcab377e56e0a6c64f9ae694b26491d27d3fc27ddfabce0187d9e3828a9c5c206266ebb647111d04c7b1aae121ed34774711a16e9b8a8e1d7b436267fbc3684ec3c72b857a1ae22bd4c55f9b58197c4ed31cd4bda5e7ea4b8704d0f6553998f5fa5f4faeb09b96ffbefcca345746bc3257a2dba75f6aaf4c031e65f8d3e583dba3d0114f38f9254b664a71b2c3927fe213f7795754f0bc9e5a9a049d093d867df934a0351512f8c327969427f1b5e1a42cee4537b66bc05e437d79cd4753bc36017b2a6f6aa1e6b836251c23ed6b27ea63dfe6fcb23c8c5c848b42d02b68b3b6688752506ff1b8305572c1a4e4471a97a855da052bb070cd8ebee11e6cab740915a8f96c559e733e896f7f3256df34b86611bcb3e0e3d6824feaa021ae0211c5d5691c424beeb8f6f25715225e50e4d1d3a3dbc95b7bc5190583e35a09ec3b0dbffb9e387b8abf698b09517d3308f38ac3ae1890db167a1cc769a7c4734cf56ee3d5e31c65bd899ff571b953d636fefb9db220f9f5d1d89ff9d39b234824fe1c6ef96ac9ba8815b4e18d8b36ceab9c1fc6b0fb58691bbe7680f4b4b0ae15565dc79b2aa9c629cd379b087f2eb7ed4fbbbc263557da13f4bc4a74f6c0126098898d5e5de138a953de2a3334e58ff87a3ee297f97bd11a2cc5d5dd7ded23a8263cbb194905f549399d0b68d49ab6998641f43d08ae6774fa9dfdc69e96d68cfc77d17cb79747618593621699a8f10e9d8ddad86fcfdc87f0ad3387e5af6a8114ef5cf9aa019f21ae56fbb2c815c323bf68d573ddc8d5973d828189d95152c52f902c31e50f87602d42176114958efc0a7e091e94471cd4dbd257c8f9b4dfb0eb53fffcaebf6cb94019c2c3c96effe24defb629016d64a3620fc57394b72edf49a9d68af3cb17b55972646078c6239727b80629088ab13f4dbbad27158c539ccd6c19201650fef3c558dd119ef19c817fb95a1c88a1bd0e270f41622848e1d818029fc524dc820eee3ca4b1311337a9fa25dd0e65f3c399719706edc99c0d7b1bd08a8f6fe8aac81ede00bba9bb2a24de2f8b308f2d45d6ce0c3a6f5e3d88eeccaaf88c53ebc7ac7aa5195168dfad6043fd31ab7e71e6c2df6c56dd8e7d1c5f6055dd8beea83f46d5af4d5cf8e62ddfc78f49f5cf9b54b5fe9854bf6252dd12148cf859bb6a5be3f69576158191feb386552bbf45c7b6eff65b9b775bb512f33badaaf6c4aacaabba51c581566df4c1a2bdd5354ff34f995dc10587df58b9e8705ae9dfb0b9c85fd809dd979a75d54b5dfc02a93bdb5c6447f567261765af232407170b6c35b966d2af85fd05948842a38cac34e9fc127eab0a499ce7fa361512ac77be71907fb391969e1a69beaadf35180917c77c2e8022f75ac7e04736e2c66bf663cd7c813543aff58235730f062577fd176d9af03c01371b75fc0aaf4539ad08f27edfa6156a3b59e079e119b0016c8804ae2b7446fe27e58560bfedd302331dd8fcaabc7ccf02939bfeb3bc4b139e5763c6b73aa5bf1c37fe9eb5a57ffacff29e6725bfeabcdeefdee3650ff6fbd4f32c55f859e1a52ea07cc5063ee22bcb7baa0cca66f0392a93e645e10cdc5eddc108b5ca298c9339794d673451e45087b20b46605877c51bc73be0f585c0900342c8fa3d764ec0fea9e4cb82007ddf02b53fdc414f64e000ead44bc6b27d74692d0e59d914824166b7ae822fe64b593055c13700ebaf6dfb1bb6b11344bd788ebb1d2beb2966b1019549ad88431cc6a53649308452bf0b0c4c50cb54195409d51644d0313f0c050a4bb2490e15ab59d104737a90877688f73afac3756ba2de1dc2b0d355407cc546e1c7d157432206d2918924ae9c6b2f38b43d5fa446a054d7d8765c9ce9f9011274c0663af86ff54ea3d456603c5b3b74d94a22202f5941932b9f7e6931c3ba98c12f665816533675e4c2646682a595e9c212bb5b4d5ab75e0c11ab8c2ca9bdb19851e29a1128072838414c88fbd5041a9ad6d6e5fcb5d55cc32bd42e653c3cef473f850797fac3e46995ba5f148801d776796c7f86becd079c9e8768a867e17b0c6e0ea27c83c3a082aefc92397c859926823957bfb6d3c8713cd656e5716c3434718f2cc8dc4dd98f3b312d4146f7adbbb21afa38f7dfdb333a2ed493d492d8d5f6f24bd63fd931badc35328af53fd332fa7a13c0eafca686d11675ec673322aea522cc957480c6391e17cdc781126987afbf364f73bebeb7932d6c12192053e17f290668f422b3507b70d2912ee786294038dde5e4a4138dee881707d8c5216ad28043b1e81f91255c98ed43dda999d9cffeea85ef08934b073cbc5846a19d4736da7964653b32eac2d6552eba5825f1d9406f5febe349c7f9ad16be6ee639d171602bb65ee565f0d6b15ebf458213f6add778790ed6b77abeb29b39f01985979af84fa5db78a02f28ddbae8b057952e2192d36f55badfab63837be249c1a6590dbb2ad8f77db31f26e8fffb8f32414761fdfaed54d017b4d4e3afa481be9ab9fe8c05fafdbdb69fcb9f3607f77bed9f6973709176fddd5b6dfa1ff59fd96bd33c7c5634f00bc465e5be774ed6651812d62916c2fada6639d139a4e59d48c6519da9bc20e68022b9ecad9d85b3016d7221072e4c87fa0284ebcc00712260b82f6b5046e22bba2d5dc61ece238eebeb5ebc1e1044d4c75a1bfc5a5f9e7ccbcf17fcde088f5f670d7fb9113ba57bf26592ed337dd89bd86db9fe4a1b76a2084ae64660c2efb2935dddc2052ed5c85786b56817bf920e92e380ded0f236e0eead1915e090d987ecb619b4cf8746d613555555bb629fcfaa543c40320ef1556c561d0180b23693f77068c8018e3083f0ede8aca5d2a7baf210f1fe170dbd09fa2166704a21c5eaa2b30a2c2ace416f5825e0530233027189e734c7da44f8849263f99848c0ea8e8fa147cd41dce6f115fe9db3bef5fcba4f0e8f9256a8e25e25be00702fdbcd7ad63c6bfebcf820ef35d571811e83a93e964cd12e14b081957158ec145eca3e7de46c1348272d0ab46c4f247dcdd13627c357c610eee08994919ae9ac3236b9e9f9d3b0bbc465a663862398e93e79bf6a37ee1b529238a1be27b1b8f101d333afea2799b02bfaf92f271302efadfff55c0243dcc64f3ac164e9279df0934ef813e984206d4dff2bd904faa71eaf65147686c86a6634c49a898d7f2c9181b7dda2244d166e901a2f43da688de375ad4dd9c238cab1929936771224618c0507baf8898926bd8d6fdb8ab815020171332982a8257d42774d102c4ec788cb45983c9e8f6e9ca514331291d02650f4d1fc11de05ab9c050904bd73e090d9f975f2722dc0439884feb095bd887b5c2046174b55ba30e5f2dcda3d6ead5d623106dce9945500e32210f3b26425ede2aa4c55d12042381ca6ea10d83314644edc58d2ef6534643a74ff7d43701897e2b57d46c11d9389756f3845d99b331dae9899cb3565fbc63b6dd9dded8d9b47280c9e772ff67dc059849f1eacbde5988378c0d423212cdaa7111dfd043752722131a5f094b0b9438e2e21e0890f94fe2914e5a88cb40abac582068c4fcb607b904fd343b085dd85866d5df989dcae5eb3160db216b919f84f364f0263d75ef962b2ef26132a30bbcded1c47e061949727773282cee59c4212553b34d36989bf85bf3b001b0ff6b0e460af76b9fe9d0a28b36c478954f81efb4d62eb89e3693af9b65888f4243d02cbf9715476e04b9df9b8def7cb6b6d32bb26e65c2df7ba7fdedcaba65acbe1556bdf16ef37b78207de47b2781d07b1ad0865dd66c055b6192558a8bb20a19288554eb76af858c65fdb10008de0b384f3704d98e6d1ca63ded85d183d346bd8d90ea867beffec52035dd65a8e3ac95810ce97335fbba34aeda192cfba91f79f77cafa738b6da4d5ac74e6d1b8eab4763a028b8e2eadef7b1ba5dfd77dfd08db2bc296ff21619b2d66fea4b0cd7ff6ec74df093d368b3ded7109a73850d205079f39b78bf92848b44df8f8257ce3764b406bad56edaf127cf4b72ea19b0cd94e46229021191eda928d126071773bfa07f3ca5a4471ecae9fef82cf9fedaaaeafa7ec8bb34cfbf907b6dba3447078bb4bbc35e1cce4eda3b02fdb877c71a4683e87ad4dcc3f4b126eee72dfb3e93ac77d150c97fe0b3e42b6fe7ad70446dd27cfa463d1856e06c01578c3ad87ec0b974099010dd00a5dd75fbbebec8ac9264d7a0155159be3bd00de8981cf6becf51c100192584ce3c0dd1a7bc2781d0eeffed95164ddf2fe5deb2c361047e628c1c8fec7af1be430b949141aef74b4600679f8eeb555c22a3206ad05732e84c6698f28074fe6989e4c87b0a80396aa71415fb0c85d4af6fa167d0b9bd9025454b0c392b625441ae74b630700eeba71f82bf0c0dd5fa1fd56ae2fa936b3fe824d36567f84fd0c3e56f843447ac548807caa2c31ce5ba55b4e389391cb6429a314ee8ccac25e2d49201f9917e3c63ba7d64d1c8641bcacda337bba9e571b95f63be03c505d9c8bb27d66ad58622c8de0d8ddf60f48f8121aedd57310a60b2327e114042648a2644abbaa2f0c53e1d9982d4e52062a1cf940f718f2dcad99fdfa709c4f01a69df17f1174cec6bf1a2eaa886ef078acbc442f868ee7af644f8b7ee63dcd29f0050e797da0914ede20f75240d0571ceeafbe302e056673e254d0be7be697e7aecf462b67994f96fee69cdc1a890263dc15ae53b41306ce383d6fe8b993f5b2ceee54081d339c546c7c7ebed3139bae4cb827a6ab101bb1e5daa3fd199898089e1cb3665cf415f4b918420c9eb8c0a37801f6265f8a3750921cac1ec2e1b1616a86afec09dc0845b1afd40f936429e9a12b94bec87750a2caf492b3e0a4660dee8020cd0fd643f75050df72df48f222073647c0ef65a86221aabcc95e75869269a66ac2089035031208802a3a640a96a593e317244cce9f41d6000c47d3bc468ca76adc52b88eaa42861a925bf3161d8275ce4058e0860b0456a83cb20e3a611a232b6ed632e2213afbbe66a7c92fdacc68d49c98e01e0b98d3bb0e6b4f1a70af36585308fdafe04778d3b0bce851feb1f7d49e44e8128340c84b85d3903515b46d78857a179fcc56ae2fea07e72826dc88ae1b6190f92eeb5e4c1246554d9136ddce693fc11395496f5523852918f14d07b12946555017cc85eb2cb1caa979ab72781887aa3379a55fd10ff9c09df69a7a8848d160d8c7856af9e9ea711d85319e9f562e43fdc67ce821b53227884cba685a5f6cfe5cfd3fa26bc8960d384760e74fa3ab265bd56256e2ab0ab878f9eea8129e4cf66a66ace8fbf4143cf06e832c07d9ca2abb8e33719eb6c699a8061f7d991f1b86a57a1f7dfb6ac66151c860004d9fce0ca08f09020388f2f786fbd347c7e5d111b4608b0e2738b5a29cf239894b2e12782c364373e26e7f0d0c12cec0a7ad9310ccaa5f353363e816058d5fea8112919f3c40be7a7a6ff34d0a2cc9c7cf0f1b41c77daa7c8c434ba9da58be0d60a2b12b24da20782b19b6d14a5d415b0563e1c49792f0f053876c4d919df2741461c7eca30b7a5e4dae453964ee24fbbece94b2d45704188645ef8c558ba665243691d19990d941ab2f1d1af5e0e9501c78ba8f45a990c6fa10696078a673f048ea0890f990c76a1d7256a20d01a4afa9031d4505c0d54cf7921dd4fd3cac4a2d05502747763e63c66d96c9640e9768a6b8a00450069f22d65b1155ea0c77464eb87d11e346fb7e967416b56f5ab46f42ed9b56edcbf35516175cbcc2a8ab1fe1cb15e4a6a7c28646a702d1ee6e25d00bbf6e5dfa5f9aa020debeedb8782ea382380adff53874136d24be98c4dbc103321e4f89fd506dfb6ef6474c5fb841c4ca9fea8f154b496601ebf6b7732fd5e5204c65a00fc4e7462c66dea6d585d9bc9e3731e780a454b79cc189259c6013a2dd34ac27d05f57243c6f011fa4041f6062caed0b3c819333d46e569b247db8c801ba01123ad2a90bfce169e26e35e59389f332b662e93559f3dd82d6c85e5886e3e42e27b0c96733f37775d36a82cfdb73cd1365d2d5052820d6031933397c661f580e0504ad9383573fb354f2a40053610b376da4c11e4c3caf9c16387ded6c497dbc2544171bc8a5d34199292ca92e7807dab0a982611d11c07a703adcbde30497a5faf8da1cff5a11d43919e9c8269d9d9faeca7e4e967e001099fa860301f33e30d2b66b20dfeebc4624d64b50b8592c5a97fda1ee1ffada89fef535427aaedeb8b9df5e99f45d32849e6af49e6af49e6a5c84269ffaa24f3d928db071be073a496b119aebbb4309f6d4a168b69176c9c4fdad92e14389065085a0fa61b8a8f326e9a288b24342c50a87c5aeac88beced671eb9c75858f82031040179b92c4486936588ae0d9414aa3e279a15474137b14e77026938bc0c366af59da4c14d4a03e3ed8216c5e9c0aa8fb09852e74eb39c0c8349d456f90cdd49ac7109e9df3c1fc734a56c315141deb9a289972d2380f6d46cdcc37609c5932d4bb87d25bc8246640d88e62eb324f808181b62eef9d74218fb05815536f97a117e4be0c738ce511b332ffacfb4bd77b9c5e75fe24c0b8635aad9b2c904489fb4e119023b3b94866eca20c796a241621022d2702e0bea63551dcd7e223a7625f33b643e4677a0bd1894324cc0645b2f8f9877dc273eca6a0caeb78880a8208e69642d5afea44c96aa39923348ece6f9da126446e722a129152138c55152b55d924435863e4856bacab71d1dcc6e4e3b1f2af47806763c319b1fac356df30c5805274ab456c2a6a2c1a6b3c4e6c44c5c5cf931cdf7a081debf186650c112afa5c80adc8c9fdfc70feddd1b5216aad6694421f29da9686d0c276360b95e4650886aa3958dd456c316c97b33d4ee88072ac608c4b8e911996a68284c4c4d6353fb0c0f6c0689bb974841d7698a4df62476164242c9191809191976c2ef4910b14adcdd3bbea1692e9873f07fc89021f614cd72e6f1eeff8bc944f09de93f266f3ab3eef26d982cc5cf34992f7de3dea55a7e9b9c16e9162763e9bf89e32216ffa9e818da3fc9939bb773e77092a8b0008ef8ac024ff22b93f1106f587027f80e4c16d6d7ec55308b07b1011de4a831e3b1051f135ae110b0b92348a387311b5435a3882bbf20b7467fe009baf79c0c835ad69f3308b21d15c702d17ae8b6ae5e46c4ebe007337bbcf41ff3f2222913cef9cfd1cf6ea3378310a8faf24d6fa52972fba1e15535cc395d0f1ec774ea5c07c8345980f1784300b13dc3aa78916a23278a9b4408913ee9caa7fdce7f7f884c7bc4c7d0a8397e201818d4376655a067535a84e2c428aa0a958e0bfdc4751eb0aea45004d31dd6be7fccdba209af7ba80833e35f4edc24b21404e21a73afc3114be7e3c39bbf1c48bd0d2b7aae93f157f39efbe3c9eccea71d67687df7dcdedbe753ad114ec511322aa88f13d363048db8d058acd77fbf19ad761db1f68da37e372a7240f42ac6a51976d84b1e16f8b3be76ebab6ae3ada26090a6eb153c9899e8beb901aa44d3c2c8e1bf62e00c464877af596c9abdb68c2dbcfdbc8cfd01670b92505fd820195fad2be763b6031dce60225cfc7517f57e0f765c287376d9a0da65b0c349e67b57ac6b1b16ab62c260c881736462f008eb2e42f3273243cb433d6e46cc58244e886ecaa2ce26184964d1c1db185c3892ff3c9793431276de81d7bb8bee35ca53abc84047f4894e59028cb2151fc2151fd2151bdc5567d90befa207d5de0647979745e1e9d1738595ee06419d2c205f7d811f4afea33e46bf4296e7bbea7652f6351004829408356bccbce2aa85e1ceb228e1575405d7540f15641599cb782ce9b7e29708eece11c8a15290e48a27ac8c3391c54b15d681f35bf343d5264210f20f1a4929e8f7f2a14dfbaa339e6a58480b67e070b22c2a1df3d341135ac83d4c7a55622ae982ac90f7062789dc2e0a730e89435f44dec550e19ecc7dbb68a9f1c19f355084f0eccf5986951960c634a527dc6e19d453b05838fe09b1d606b9c4a196b582cfc540c20d3201535248cdd9b88eac7e38b475e5734dfa611192ea2e0fb9a452194c2687f481aed0fce8d4ad133b6f5ba3229bd3b82c3e0d25e3c11345a7891b4ef43b020f542a32d5f97e806ad439a22111056b301c9cc5f5c8e301a157474e7c4e26e4abcba3e6d749b18262c9e6444f931b4d99c82645e7a65eb552a124f2c3d2e13e9e52dd6936906c1f43b0b577beb0bb6ca10ef13e9957dd6f3b0f441513d6248f70ad8b38c7b6b499874b431578600854a4d5b6c01fc26440743b50a3d4f8346757938af58b47daf41e69520c06a632ac3b34e40164b10856ad1d27a0f5de1394e463d72aa96589a8062d6be41e593a8652e59533744d382aaa8f9f8112cecdccf423590f55858d4387c1b6070cda0f1d66e184aedd2ae9e0f0b14b2c21dfdf94f890fa90b2bf8421553df0a3b963a8da3ba72b069d3b932beb9772216f9a673213b8676c222cfb31b714707188e39ad9d5247147490e579abb85ec7f513351b813b6ac29923c091a3fd60795d12c80791dbeb6159c53d455fb8bb101ba80ac254577f494ceead93a40d55dd0c9d53355c625661a866a84a4c23b3ea30cfffecfadd088b08277178998e2bd17dc63776e04a182be7da38a5904e6b16cfd844a6d109ac1c525234c39cd5e64c3976b78495ac3292d3ae27ab415174cd5b8275ec04290eab3f8d20e50dacc1b8686aa70ac59174ba3051895215eb499cd9297ef363dfad82d46352f9740f0d903bcac36542cb094ca4b0c0d3f9e2e3003ec2b457aeac3d427be287a060fd779d0bdd2d17e5edb3aa663cb6f5ed506c704f5f3f95c1b695ecf24065ee39300c708f01f5df961780e2f32c7d6b381203f895e1bcd06669dfdc57efe0f7e46be5fe17b9b9cc046c10a3c83e8af542d32facf9cfbee63ffa9affe86bfe23247a3300138a4be219cf8757062281f1226a30d7fe2a6ad0f6b919bfb19f3788b28d9dd68d1dfdc68ecbc68e38ebf922cbbb742ca93e2f21dca2cd1cda345e7035a63a1ee669e8af2c5ed0a118369be1171ebe27097b3a3b4b10be4653d0354fbb215a3046f69d1666076c630c4a105d7c2170b5d118f43899d62d0b032ace551316888318cb10d7073882988f33bef149bbb26bd3aa8e6359d5175faeedac0eae1b91b3e12817ef72d2d81a934348e64cbb56b7ddb0b5fa0ca2f4e22dc55edf3314e3622806134172325903ea18bb2275d452344d345497886f09c7681bce1d7f69aa792f59f5cfae2248a33e0e1b61037d6626e6fe4c83b911fe61bdf419abe0d43fed82797acac686f446e02a2bb25c73c33b988b5a8a766d776da29e70b7df4059da725e9e4bc423d057064012026b13d28d54c9d06c7ae094e3c289ef260a2b5b0b3450a84b141fead527d55a5ab8532eec1e89c4a50d83c8995c27782d6f8d28b307e86cb25d3c53102fd0a162427d69cf395e89af05f19ff252e6696bb92928bd5f68b79277742b381d0168ee5c2f3937b52fca05ae6cf47d3e3372a03cbb5d7b5910d81ecfcb03ec02c81796756e2cc053a075859b5898b9747a370cb55603a85f6895c0c7d1ab2d6ed1bc6d8b795b3ca343f29456be4ea6f83a99627532ba64d1633e5cda441efd421a852d59c6ea00be1c1c16a3903a98c35428bf59f155ac32a9525fa0187abd08895f5211b009d20c56c1cf2b1a1d7873665eb5a635afdaa4fafed0d8b46b4c217b5b845e35091ff61692e0680eb4871d6cf5cd4b94952d566b4e03810633780250250ca656d0efb5a6528a41e2923390b25f83b05b5487262177e70dcf170974a3bec943f0aa02cc8547c734a83cf91d98f33f065d7d61eb8cf5143394660825ba52a9cee45e9625f8784e855299ccc32ce88e260f13e3b7300e0f8488d0b0b0ea8808153a1663078fdb99e65e3688fd1419ee86681cc0a95ad7150ae901d9edac640ac2e70043831c0b4dce52108d113cea48a2d2e6c87e2390436a5f8bd3bad0733095266c1409fdcf79d04628259b4915c96b1d2a00b943582dacd41c929ab72c828e4d4a211854de4f4280c35d789c68b3ae4f4a10b5d41e170e712d9bd2c6c202dcd6dc5d7181d9e4a59e0448a5be882fe157d1fcfc39784bfeccd74f51c3cab305fae0b81c8ef48541a4970791f8a366b8aa42c797d669cdf2e2b10c4235886482b526ae2a1d3be66b897567b949c49ba4ea88c1f02e9cf0fbd88960fbcc84b9540db2ec251151a85b9ca581f8a40c2c58b3422794553114b403e72736cf5369d46ea1878ff9ab50d944f9698e0d5ded68bba7ed606a3d736c32f53a273163bdd0dc00b59d66b6a1b2a958375921ffa4c97b38b299f49d23b6a637ab5b98eceb9a66136b4ca07c2c159431bcb6543c2309c60e2b15a32acad76775faea34ab1154e7dad50e03436aa4a881d3170b7ac9f0f299bf04953c9ffaa2b34fa51ef23d360ee7d884db02653c76f4cedd138fba2e356d413fb4c7da32168ee6dc1e9e7ed4c5560db5e23c77472a33d632254bfe96ec91039c3900168f01cafd754ccd6da812ece93306f236d21deecd7301a4cbed2447739c6860179790ff2b8b230ed7d0ce131c829bafd935021ca1083c0139365b24533135269fb71f1b8e02813b0214e2eb69eaa49d914adbee69a4cb45770c6aa8035f4f7bb49e7df1d5fb9ebaa306e7c1753e77a721137da7ef4d4dbbdfa8bb671dd0da0cad7b7e16b9c3e82d6afa92da0f15240defb0b12814586cf616ef5f60a08477b302e65217bf65d9b7e5e451ae9e7c7925a6a21199b2f5bc75aeca9b8e7c31f776c998cca92e8b675d2e1df52646fe1a579030633f69d80e11ef7968976d8ce2d7e7a978f64d87282d9b89b88968bc3aafe57e5e9b7fbac61cda6d246cac913010a80d414496b219f15703ec80882dc1b8643fba6a626bb328c2edaaca87144a2946aa7597325b7641c1d6d7c3e5148d6a4fcae0e5fbe91882af4fced058dd00d7eb8d93307dbd0869fdb4c1dc5d0fa0140e9d5f7737ab45bc2c1ea16636bb7386e7b49a5bd516ed93b5ba5b1c8e6351300b380d0833c9776a5882b32b5677c117ce6005f607952ea939a158aaf613af46b19750eb2947970896b373817190035aed161e30480f2d9230bddb16b8c77df3c927a13af2a2670069b74c757927df6d8bc18c0d0f4ded56e942661879dc588951133734a6c3857120f57ed7fe7d6bd26426c8407435f37158cee5443fe31833c83e2fac3518959bac754459e930a200d992b4bd2f9ed286420bd4a24564811a300a74a40d1ff67b46d1b11f433c0cdb3cf5c2b4801af20161178b9e11f82b35f0044575d102b053186e9c965b9605938d613a8adf5935911bd529fe6c9bbd9f64885626c02bcc895e9d02cf5640b151d3e0d56922577b66052de094b8f629ce0c4e4b2262490dac61e55fb6767c320a6e554f4732c164c6e509bf247cdccdf2fe6ead6e0ef88dbdd0deb317d000d8d80b0a9e6dcbbc5cdb0b4d8266170603b4a13fe5e9da9a2f69d557091dc736898713915ece9790120ebb3cec0b79b01be7c02426eed35cafa72f5de2283c9f89bb2c568aabcc85d53a7e92c51afb24d66542ec794aabdd2fd10c3e6e735a5d28d5d204abe6f43857aec1e48b62b2ea398974e98f260c24d74d88a36bb7bf20a66071d5a6759c433bf4a8c16546393fd6b2837968eb2c3def02fbbbabe904f7e709271c568db2d5a0f3951be9aa34b30dc00cb7c799a215a0abc161597c75b3507c437b9395162f2e96f5d8f404f985b4f3ba035fd8cf65a3e6f0e44a4f9d5b8423fcf2eefd851cb467c7d8503621fe2e5df7cfeac5d57cc7e692437925ca0ffb03c610a009c24ff91509c287179399a3f83c33af42469cf7a2e89cc46d72ff170d77109a804fdf1d858f53b79ff51cc590eaaf2f0c65020ec725b06664070cd792d1cc376f5023acacb3286ab9e62d3a931b38525a0f24b1b270d32e33f9d9a5477934aecb19449bbdd703b4fb56a1691a511684f36011243b7374df249ce3a7dd947ac25d63bed211f4aba1272ed8f8f3a26c393dcc25ce17a952f9e62282801eb40f86ed9874eda97e72bf64abf994f5d9f6987975e39922df20147f6b89413cd501fc952cb38ac3744d4910f3de5d60c0c7b548ba934e3acaabe59436ae5d53568025282e700fbcf84305760cbe2d8d767d1795d0184e7b189c76004883a212bc0fd4cf9cf1acd67dfdcb722c5d749bb82559992615521735154a3f3b9714890dd0c102098220e101e8d6c337a2f1910a4a3d4a47cf0780853ab25db68c04530eb749b798e4a8a03d6a7291510ab3956ef8e5f90734d59ddaa5014282c204870b43ba205e742cc3144e2acc615c138881ab3e0f26352c54be2c2c1d6eca3db59e5be18121beba9c5e02f49bafd4baa16867e97b83bf13f1abe8dfcaea493ff7ad395bf27f16eb026ae515e27f58cf6ea51531ade7067b3c91b865ff454f6fe278a9b427b9efaf08e7483420fbf25089aa76077905cd52056b833da41945aff97f3a12dac3f55a766d5f3b46fb39caa1078cf5d78572c2d630f83cc3edad792b080bc1090d1f114390d6a691d905a9adeb6eab6e326612b215d934f5a155d16bbc5671efa32250af2ea75e4adb255d54e8521f1b5685ec1190ac7262dba97631776ea4655a092769d102595751df9cb81c9ea6f6f06b47e82d4162da6a232bf53ca8b2d87d8aaf4cd8e36d9a6ac7ab22433cc70a78009139169101e8d9f4471cb143cf9e379c133f87179966026189937012990345461a875f894c5b45265fadab251cf602e3fa109fa427b6adf86cc2ceee3e0cc7749b24808468f0dd405381cec02ab922b1152db3c351e2a816b49f68a10568bbeef58ae82139d2371ca7db4c03a0ad4cf5090c91d2e136f7c286fdbf91d76a1c8b3836e59903bb983e39adb1a82f1762477a8a683b0449dc6284a8beeedca39d24d1aaa0fb923880de2482f975ebce2b777940e57296c65111917c5ce82fafa1789d2ea4f17c1f1a17d24e54b6781c3e1b65928dffc3c42215c0f191de32896c22195e204b794920930e7423d889c3b35e223ba6a93bdce74b24d2c85d2e25921eb8ca24d64f3a9904f3b07afd78bc2395b2186ce2ef84f2bcfca08ec6e918d475df88a4391ea37b297676be298c6b0f61580d74b9d81c2707216ab1d0ffac87b0d302685eff82ed1e85d3c01f6a6acccf4d8bf6bb33d067853624aae610bac50ab93e1fee3941a7132aee1d087c268eb9c9864f30862498d12fe573fc3a22ee1355a06e94c1a41bb21dee8bfe6774a85f6575ae9f90c2ab4f6078437b91e8a0c90330a2e0cbee5fa0319881c7b79e170f785e0c570fbc2a21a56e30ef3c0f087a9e3057340e7dfdd2fdefe7ef2ad177bc51bb76389802580c87ef5c2e79c061ee32ef3a8d4324f1b9960bf418e1ddd0b3049db3a48d55d9d17b7d8caa72fccfd9c9ca1c48e1e3b3d932312e872a6105dc2b720a263bb39a8f45ef9804716281e5f8b07648d1c2fbc0fa9f8a314274ec3372d8e519fe9cf4371ae9aa6240715cb272fc428e15f24024eb39f86fb83a42008fac11f97ffcc4cc67b47e90846ca0da43e83411c4d1a0a7e8d4d6ce9b442636251d75e6126c16d326fc59de2ea36638112bbab81561d00f1a5d0612343a60c3a3e45ce8ae8d8fc16225924102f43e2901183902bb546f9217e8c3324397edd0e876ca6a3ef1aec8bc93ba5974eebca6fe60bc7e6aa0daef537686b754841cc35d2dae6da9662ca5a8be55f4d01f761bb3c6eea868f2446e2bbef3140ab07d219c0468336f0bf30e8ccedf11d27e5d0c4bd405306f06c248441d20f359036bf88478a41fc0936561edd6552d8200efe38b406006c366ce6a5da64cc689f305c1877c3357e2b63b32c50aa36e62112885449513b0b969ba786bb57913960cca13da45025c8f67f44abc750fe1fecb746793cf4fec1276ca6cca3d32322ba8b2d41ae863614904f104874193832a1a5dbb933dce80cb72db9f43ca8203020f4557f87684637bdf7877a7a9aab46de89fc19ed42f65728e92e1c552892221a678b61c0e0d1cf75df845ac897ef89e614bfc865048ee0ed087f4dc06322cc60913f88b69323dd754cd18c96bfc43e855d42e88cb05835fe2d083d714f99e07dccae1c0da18606dcc33322e454131ac12b7a4e7c6d5e6bdeefb15ada620278761678e4b83b47708f988f77e3a084535894935630870cec9fa42926ae8a80ea7bb325a4a5a176021a1ca406377569d60c6694119373553a29e416aa554494fc34313326949e16d38a75b58183a03581643455b47c9d958239e8dd3cdd3284ed13acf335442443638aac9bcc4a0ba9d9aea2a985dc323a9164f4951ad872259070692544bab802dd613cbbb471127bc015827cd6cef2899c6e16c1bcb83dcda3636c9b9b8a33a9c6a3e66b8c11dd58a9199e7c6d5512dcc1901c540d2aa7a54cb82c051bd3444580f87c5c2f1f990f94a46b2213f2a6be8b1574c889a62e621d4174c9dcd14deb52b5035750ac41aa9f48585083329697d98c660895435d57c520d7ecb6a0472c168ec1c401ff6aaa5b36d92f886dd43061bddeedfe4f1bc85eb28366c439a15371d403ccbebc6963cae8da30cf4b4f1ba04f89465731c701cad8ecd8e72a715d418e466a06d1bd23ea0f0167225e95427ee131fbc41315ba70cd0cd02081c07defdc46c83a6a10ebe84511d7ae634927cf70b891457d5c9078e6cd654e1271f33d30d8e971fffe732771f53d431b23c03bfa901fa840b8f903d428e1cb449f06d3b4c0f15fd4ba3d6bca9b45fefa019b30420a92840239a5fe8a97ca1d2f4e449cd67c4dd0c57973398a71920319403051dd4e0220d91d93916f262f1af0f733bbba9365f98b7757d27341b963a03f78af0d3e9afb5aa2f9873e4abac463f65959a2116143a0cfd9fddcb2d0e96e57cfa92c874bf50037b77f4bb24dec5d1ded8a2d20a2842a06820428f15cafeb82d5ab1508d2bc357c5b536fe2503bd425da269249a3d04dcca41e0145a3cabd8ab5a55924eb40274f6162ffd2611905e8f31f303a1f2a99d6a1cd3f5d35a11276b799c3f3222fefa74dabc0516bd32f8445968a5c90d83c1e9fa0dc19e2b444ae742244b54a585cbb02e24ba941cdb1911148ddf6504ee63f479a17fccfb5a3d2426d88cb15dbfaff22d5ed53ee56cb387c5131a4670578fa560e55680e7f950b6a9acf15fac206b972528bf9106f17e4908d93bedd4f7985632d63b86f3e694cb91cdd26a7d234c7d4aa7aea8e1147c133b649a85d7e594146d39ce45bdb7eb743c5ba7d57a58d74dd172d65e72c3d0f14e09d5b95c133836b0bae615e24e2cd6d909b8ae232ad9fb122b457be5a52a376ef943b480feba626b5261ec5721c6d796c1aaf305a5a3c53811abf2d45638d51221e508d6168db10c20666834ddccf0a30b1a8ef0aec58eaeceb2c5371cb05f274958e87d12a5525dcd8bf45ad9947d9de572ad1a7f2a973bf6979526e782fde56e43e74db57874042c79a90d07c5bb9476e745ef6ea8606022c0baebf77ad7a20c776761f47a17f7272412b4dd020c0e1209d26e017201f866dc6e013201e3302edbee1309fae8bc3c3a2ff3b2ce9be4b297b0eab9e923faccc9fda9cd0a8504822d2fc52baad343a17b095506feaf06c868073780f364ac9c3312719192439381d9f21e3b6545567cf712dcc0e00ae72d31436fc72ae236608b3156bddcf3c32611381f205caa1ab240322bf89d3226fbc0fc2489de1dd1bd7d055415d43266df6aecd4af57d617992fa53d1cba5c6558e4214b8f236cbc55b3edb3e1a35564c7e8df9a3a5187b7640d5541632dd6ee4a8e7ff79ad1b58b5d5eda2a33b77380ef0c50c9d85c23ca2c305868f046d48b8266303ce582cf1c8a9eeed266ae4613849a4f0f2a8ecd4d7bde08f65182f9c2534aadddd780aa462c80c7f008eead8509206374e1cc0b9b175e5892f102512347381325606f88ee2c8c33860d1e7d0d8fccb0021c72d59735105c204360bf58b0645b1390256b9325df69a0d1439c459fc1c7e29e7660a546378323934640fce82c063bf0768dc2219a461967083f7305c17d6600a55fdc86bf37f4f6026de5946f5eee990c7f02c4c34bdb03241d263ec2fe802618aeca8641e926549adb133e2d4aedde0b55c1208f5b2d2eb8491a31ebc60bdc1a525e9575c986dbd516ad02a0ce3210668c5aa53b3f56609e3d119bc01243afbb676717ab445f37a6fa9e2270601b77a54a8aa743551528563c27fddbab4cd75b31b733ee3c1f7088fb0e42af686cc63d1751d975a7f996a832d8512e60577ce6a62c999b82999bb2666eb2cfdce4257393317393d7cc4df2999bb4646e12666ef44bb0d0cd14acbfb9f29a67203b7d6e2923a35893c96a636bd6b11e6b36b35483182e6ca2722c46913f6f2316c16f8f5739c6ef04e2b3187198f98b65218472b8b7ab2c0537f3a603d3a0056733efcbfebffe358224f1e2df0a66622551512539d18b8f8bfa5f60ed60f7108a10e6022433bce21f235bb8cf03dfe776c9bf3a968d08b311cea096651b17134921098a8008e8d03a335a16593886e051503b3c0056176f986a28f670b2fe1ad812407ccd6198c3f26fd53ab8aba2d143fb1a0951b55714e9a9be552e8b34f9f6d66d3365fe7a02984463abb048949d1dd4ead0425377dd822c89947d28eb70866515bd2215c40367b0814e2723342f56a9b00d65c6f98ae25e43516b9e82b02b4b60ab2cdd9a9a057f65db0b01330464f263cdbdec42fc17dc7af31d4f41fe259563a0180f8602b8c865154b2f4b6fc1b9a9ae243c9aa8e1003cd5cc4dfacfea1792995e5922ed0ba3571a00693831cea01c73c43417efc26673709191fed58d45077b5ddfefb4b330547f5c4f1e85f69c19f1c2f6ef6e86dfd8db62db865fd337f732f5ce08b453fc9769bcf4dabaecc6c40768da88dd0680055c335eece4defb42ea541f4f30432e1419f666415fd06c0d621b17662292193715fee2ef139170884a3720ca548b3ba5b28a810b1fbebb625132708baa38c7fb32970a9fec96e0ed1667e46d500c5f3afaec8f5805d47b81139bacedccae7787ffc782e83b5174f1e592dc1e59981a9975af9bbb8cc02bec6f398d4643081d0c50d678413c16c954a74d90e13d58a4461a39c51b6ab493811628a26764216195fc8eb2c3fc81efc9ce385e5156c07219d37e428a37c60088aae33dd4e2980397d1572009c754d758a7277ae584a6583e8c20914b6070b2ac8d1647100fdc04b24016114432453485dc58f9efbe98616131c39237c34af1af2255370fc059ac09bf6406ac73ed9f1865981ad5631e1fb53b3b60a99dbd623d72247effcd064b2377edd25ee972375de1a7dbc1592be9a9a887f3b4bb89d3a184dd195c90042f4bd5806326b096c52258bd3c7390bf39dcf6724ceccfab7d1798083e3011bcd1d14deddf66493fefa7c726e138cd8a7d87576d67c5732373990b01567fd2c4744184f4dd4104413f9d10f4e1d2dec185df2da6ffb51c5aaedbdab300c2674fadef0d20fc3507170ad9e7cfad4b671b163cfd99936b60b521dbdbd2819543a07fb982576f0e33fb56b2eba3fe9bdae4c3a9d26b0747a2f22f4cfe44979e37ffb935fe19ab2ce43c6f9734cf0acf7d0bfa94b23f087f1d50bb6b59f6eb905a8b53be0fa8ad24423bcccd1f83d3de75936fcfa0dfff9545b9a6d9ffcb168570a1df073eff7b96e5438395faafac4b203ab25bf8f9e14df9be98f27d31e5bb37e5c7c3c00c75b16d90d360e671aa0b1860fd13f9640f83aa5583460508194a0136fa5fa6c73dfea139aaa76bd91d42806650b59896d0790edbc7af6ca6716952e5f11401c99c160a8eea291f1a3426d74a7b0fb6e1627e77e2d9b15dd487573097d66c69db424d7864417169a5626764783d93c2e67f6c2a5618ecaf4e45de4e85bc2121c9b4de5b6987c670f496372565148bce67c966041320c7bda0572fe8a15f2a8369d14bb907fbc477450875d546a7e78b6ec84ba6746b988915d80150213e78d48960c2837c51f41217297bfade51ab2bf1cd0be4dfda12d945905dc16c867c9b5cc30b504dad5fe9a6b6b7f7bbb7f7fb62ef77b4f73b2a6e66d632524d67ab22ac611dd7dfbb537f8fd2fa37e6e22fd05a09184fbe4069bda1a642533de37ccff1c53be8755e517ed1b44edd3dede7b832897d1bd5c343af93218d8dfd8fba0e1c78a82426004b8e74c5d1dd55cdcb5b23969430bf5a1df80f60d934c1c31186289b104b18e442bb6f10dc3ad301ebc388e092ce85a8888d78b1198c437961e92d4653dddb6623af8157e5c4df40d907669f7d58b809cb828c9f19306c87337efa5407ef4a4016a8b2d431d26bf48cc12d8720102897a818db71da6d571b45e3000ca37de626f49915c63d2fc4190c5c77bce5195a73cce3a602bd1c5182805e92a09336f7a87641955027bd35ff49e116fb79d62feb43596fe830664837f47c3e1eda588878419c483822c000a417d01f5a0918b45d54b166bd7ceb8cc704356c0eb6aa8d4553becf5ab2280496198665e40a192283f2dbd01c51f6870e2c3ccd7a8318d557a17b1ce5f17fd8f241f9927459a7863e06ac2cdc83c45bc4d2c894886d345a2e8ce8ac914c86ea675080d20134a5a767d3c2f4f3a3e68d12b872c56e4c845e5dce057c6bd9c2208b8e06269ea42dba1dfbecade3b87c49b9efc54bce794abb27d3af8968ad69d1be2f364a3b8d9c7c78fb1d8da51a779b4a7a4d5d6dd2819ef68f4a5a26ea57267392ba43df7d56ebaaef7ab12d7c1875901652516d4d464c10a3d8f42d2a27f16537404d0fddf070e42d054b6f78c1035764d90e6bcc73a22b4e9d5171c13b0f3fe00966a736e84f9cd18a6cf346cd085cac5deea51a146a96b4634177279176a0d517d0a3e5cc407693d63d83c178999c4f9444f64453d6b309418a328ae1223b69399eb0f2478f179adaba446022d045b37aa9ca798cf58349499169f6820f4411239c6d2aae81935ccabc9f6a3c52c771d93319ba4774bb3b2f70e3876aab1f6e18c50ffaf86470db9278ac24ad60fd47304e8e7592b1f54a4115c683106d7a2e89eaa769e0adaeac3632eea684e12a64501a2776a3af8e02ad198be83f9f38ca0fec9e1475836793b01496fe1359e39d5cd739e7542ce1de347ce8627690c1a2aa4538bfe996955779c5eed7a5d112795fcce454447d4bbd5d9572d4a662b90ef170d4f0c0ff87559440d83ad733381226985f586462590a109ef8255e25fdf5b6a6e7955ffb68c7af8fe43a1d3233de970e5ae50a4b71430f60607a16fb1d6f3580105880ea8317d808582d2ccfb870aae5017e9bca9b1db74f6b82333abf90f9ad099be3f5b8d1de9b0516c2b6e3e4ebdbbd400f239de77ab772203f2999f6e6b1dde05e26ea3e8e4dca97c30da46b93042c26a600ae1042db58a06a565a9d40af34e986d1e5ef7e4f517dc04b41efaed7de8adb2f5fbd1275b1ba7a67b1f386c54f49a8f585a64458506816825cbd4e535633791b067a2f84b632b4c894879b3ec364370085eac7755d880bcdfae20e9a53400306cfdc7d125f6316f8da91acdb49ad81d088862a4755d263d35dd99e928cd2a8563758691dc4af24ae1d00a655b7a8d29ea4c6b1a21d19c07813168dd3946828aea2c9e769f7b577fbb420e60c219ce23478e2863ec8b5ba187d1ef6b55145cafa17b10e5c53818389952f6ed9a14ba2bb63d4f929301b39b867a8848875b2ca87e973e7958824d232cc85bd6ca42dda8b977e0c74adeeb4a2046832dafcf5b1a953a9dc73e4e062555ccb1b456993d6addaaf68ad4b1c4eec7587c9bed5a0887c4882c1eb5b5de84d3ed52693f3f8704bc0e4a5fce207a2b2c4865bca09d5760c2743ff63fc2ef0942df464571ce9d91531b76797a0d776ba2084bd3f08914afa1a9c29328c8dec2341df8eb9267d61a38d63217360fad40ed632f05c2da49bd6d7d3a9125a138932143dda32fad7bc7512a800f10a6a148a6b8bb0f526cd32b9e5cca9efe31898f9982e3d32d85a17b6e1a38e528016af5bd66dcd0462ff8dcb1a63e4f84794be5d949e89ce34808e6e29025958880bcb09ac2d93c8db3083b1b7452fd6a804c27658b8e8635c54698a8eecbd2b23a2184b71155e9ecf73335c4d72d4e51e44bbe23c5f89be489b85faf02d99cb72346b13e7e3748bf058bb036c36c6b525aa878cb2394ab2a808e77104230bed75fe7f3b1e1d258e66eb85277b06073d5375b0b65cc94290b56afaa95b3a890243fea80c1cfb14ba9fc86db7ec0ab782d07c2c249f5a7577325d88f4dcf3608de3e1ba57540d3772b8b241a7b128f14dd8e1a55b3c52a775009d39c72335f693c40a6d1823c59026c95b6e18f54c185bcc3e6fb0064e755cee1e3cdfaef310dca5ca461f165bd3cc227f4f8e1e52dab851098c2de4d35ac073a54f011840d12d0c25b34972f2a91e4e7c8f605ed6cc24cf6ea2b0060d1b4013faccf4f0e18f3d41712773aab0699127643176ecb947c4977a319149c7575e7aa6c0f697e8512c307eeaa5ac9bc9b65f7682278a4c4288bcdd071f24e4ca26277636d0b3c4b0d41d9f96bae678e29dc8f984df0c8f8304a2c0290e296467e9c74581b896225eb2861c7c3e2c3a92437d78f2edb9c0407005a8c52031527727cebff5049eb8ba706b718dcd2e4f4e77c080b4db5fe9ec2cc26d548ba1cc0571bd4da00ecde30e10f2064d867d0fe8faf049086eea9c504a73457234296ac19850bd50dfa39f91317a2399fa6379250a02e052b6a2c55794e80997dbd8d2442258d06e69e936a0d6231f1cc589916d61c0e7ccb382358e6f51b06b413067b6ae4a05631390d9f74801a758601e179bc1b8a2247d78044874c00034d3be0c209f1aff3900543db7005089bb75a2157b24f1f2571354485832cfd2ea05ad9ac5956c2b5373498f53dac91bfb3edeacee680896e197c45d6101b18cae4981909aa499456bcf9b30413ce57aa734065190f4d463808c6cb2d183a39b7a173a1c92b51fe53f4bc3c74c4725996bc287f09ae216474f29028b1237f25393432d253187a2c42ff5183a44f304791a67c3e601c19b5153741c6db66663a3dfdc546e99f096e1b05b328626b5dd1d980b524d11f5bda2f9021ade9d3fb54047b4a1a15ed5742f490092110e0c9a811e539856731ba1603a8305d1dac00e616d84cd45247f00c909021b84533645d37ebd5ad3a972a0e0a994468b62d22da3936b0a013467d11015ee033aedc4089f189e0be299e05de863d209dca15a244930ce7a67e11d824fd9cdb6ea72bd8ec1351a0adad187473d0c29305dbb24a790ec4ca6390b3e1e6a2ddbfae107a42bbf3e50f103324b1830702804eaca830a45d612626ff6012053353d0a260eb9494ac1c4162c6913de5d23f02ddaa2db2520baec248c07650fea56a8e64bc423b29505974b270d6e5f8e7c637c049b677eeae9fe20b6e9e96b84606a56a46e4d0d53e14b0b5dfa3d2c61b0be82faf57189a10849f2ce823d5b9c0f5d3a8ad214eda8257cac81c3111d0333c3058cc41908574110b2c7240ac847ac1cb903ec85acebd2f36251929cf4045608a51b33044e021c5ad491b0f8b9905b6e68f3a6fb1e9d4e1a10f9010c0658b84b7bc056b49cf8f3623cc0aa2cd2f5722fc66e7278d3b52f9269b0863cb01590be737b09a222150865a202f8f4b4902c75d0679aaeb1928b584d218668fa0e59281dbc0a95aecf522aec2e25045224edc60f4e553404f23c358b37870e36d46456bb0539b09f59f4b9c10cd0a12c08be80d78839613de5f41a8dd41edd57ac34eec1b5498c7648ecf25eb60f25eda9f9a141dfeb67121eabd6edef50051134cded41cd458ccf66253899516551b85c5d2eb790d804b8c091a77c5cd0fa930b624e4fae28a074f17b26349b4153b3b3261b211af394142d70d6ca074d69bd8b744c90e5fa983e883733206540084468e9f8171f160e227715af8911ec3c9ccd11adda5fe184e0da3aac946ccb030f1b55f46301bdb38fe2b22031e101496e403390799732258da3aa27119d453adc5e8a684e4a92f70c0ad4394a4b2c2c74885f101a2d996995342a89cf8865493744c48096f6706862e20ab0a9d5186773d905683d383d2c39494169984edfa90c8e94d5c7d2766fb53308ebe40d8904fd60dd2bd9bce72535a45edf728c534f7739e7c9ae3894e1bf5c9c550c8e91d293b2460ba2a0dde27af27e85c5e8430f828b98514ae950ffb9b3d39cb32506189929288e4509b92a831f45f73d8a4efce27ee8f7fc92c57850a8200dc28ed56cb28d1652b0c67e7fc601850fe789552d842ee890df049f891d964c4c7171ce8f93925913a9871a041a8a3bd061391ccc69948d41201fce07a5b341a09f553edac1203040f2cb1641e4f3a2a14580e1c79f8df2c64699ee66b0f80e9d7d49057f2802d2164cd0da6614285a3a39256694b93f6bf3dd6b235a6c40c99ef5e5ca604d693662d15becf298b9b5282e33ea54751196e540c0f4343f0e884368d879feb3b1a02e34d55ac9627990e6f1a0a32ffed9b4490e677204e84ed2bcfda7587dc8c11f960c251f2a6ba654069e0386f21bcc50cfd0725c1d4487e4ad8e4332f5b54779ae5897f461081d2e79101e5af6c3cfc412d5b294d0ea43dc1590f9831c6f03ab3769fc509feab0425ff5d0820846ee19ec9e9ac7373c35b922aec529f011a7a26836949b1c5778153662d2d4d8c12f54b0fbbd0eac2da5cab1341f2a90705b6ae0489463912e177ea02259c89b7797370f569c8376a80e12f0db8c214d72fece63bc2d89aaf36b7301b6a2567adfec909cae77c871de1f397d767f245718bb131a77c5d7ec8faf78a803f5e106915423ee8f9928c86b196384d509eb15c75204e93c74f01baf778a2b87beda290e92df60efd88ff030a3c833fe28d6c7dae7ccc7ebfc9694c01a862b2b003175bbf5339d7034389e3bb66ccd0dfabdd692c9097600f73de77b9413811234721b398bbb3af8ead90a458339d4da2a4d735f08075a460860a521e4337e9b00b0bd9c8fed0f9bfb6af56d91cae60086219615b0880ac37a05ab723c49a1950e6ff05d2b2dcbc6e94aeba5e42c35a884c56c57daa235f1d9901a262b2639af8d9b357af4463a052cdad644291e435f119c8fbd128b4dfc19753336d18656b4a293a79e7f2a602c00e7dc1e4b0c22a0f42207c7bcea3aada0a591a05cbb2fa0e875afa2d67024c23be19be3eeab0023f05acccc7ca7cd8eae88f1ca94138a3591b46f862d29b0ad13420f5c859c9c81990bce13feb96618d2ba921b21ae3b21ae5742ac36168d47f1301db80793a414153d333c73b146163701b4d51aee0794f71e2ac7909661b16ed592365d8122f3c2ea129a6d09bb027c011f569941c03f090188b10c47330885f0fe59981b4e30f56537f5e5527f148ea51cceeb39f01160dba9e42c64f46111153af286654e613e9ca9b6346a3ca9662be33eede08570e2d89dd0034cd3b80919ab35a1de65b772d5d42fb7f872468dbb236abbc34d475c9ecab2c34fa73251b690ffbcec703998f76641be38916e77f772819c85a48d5ec2b36d18f666b7e561f11b40bba14742e78cc4df74192c4ba3ac01b53ab34a52befd1e10179f02e2e21d206e67cb658196c40d62cee037878f5d0d0005502f38b01ef65037017669006538b85ce60481dc84c3407093b846a7a3cf5c27cec3425e9a03ce8c8c3b2c797486a0d12d9be9653a653a479f4ab69795514866353233adc5ab24ab45046a0b3a879f823d9ae85d8be47ce79a59863d53b3d252aeee38c9de8bd381828003177a48fb77e643f00a60303c0bbdcfca14c3f7291d5f7086513404d165af5166380dddbc6a2029c8d6d7b2eac1a01fb404ac410a0573646c2a15d5627f33d92689d1a93d51b6fb0ab30b167ba5782651c6472958cf16aaafd034d7acd224ce227f300fb182aaf2b02baaada0511fca7f03065a8b854419230dfe6d15c8f1d54387598b152b53ffca27b284767ba48e417ddd8f4b887d6938dbc3774aa79e8c0582ac048847c7a2da07e2bc127514b822335a1b4075b9dc3a44a02963999513d062bd080f5d43d692de6dd53d33b8f280c6739231729e0a207946844b063dd211c5c565a02ea2a793012f8f9311b920c39d3f09d423fb0eb2fbe59843e3e5306c02c27e3b2b07a0760966cfb1b9e4a27f9c6b706f0e53d14c73c41d949ee70eee9aa3cfc1e4b1242a666fbf685660010cc621ca949a9ae38e40b331f81c4c3dec16b26332d4f213d8366d6f688f74591daadc8d36b5a43351cdce8d8677a562a2ea6b8e12da14f3d9c13ea8e240d82d9247e5b6e582ac4ba8e1178f2b2eec1a07887df676cee1e8f9d6bcbfe3ad20a282f1b06321da546b95c08a6e128259bcd9ee508d4bb3190581b280ca0307d4a3dad52cf2f4b53a349d376acbe84147ccf17152ca5459b094139f7d60b7b487d4bf90628deec01e9431cb467120775bb9ab80728c1277463d12ce034cc9451ea357e90a64f1f92c48e0f7c5138ad6a091a64dc439390d77c0ba15ab6450559a035e90ed2715cb8f2bac5586c56ac9d20ddb0bb440a055409616860c5631cd0688ab5fbb77d0dc8e53b4fab290b47f9a98a8061d355f457f3e137d2c2ef9404f456ec1f520dec1846a0f633c3fec0d2997fd04238e7d3f13dcb019a242ef07651d075b63c8dad796c3ecc0fa9ab0641463330b337a9838d97ed14536880cf51c0d949c523dd8e40196d2a1cef71bf8629f50123138c262b293e706e0ed0c442566427302de55dd76778f847057b944490508ee3ac0af2a7693f204ee4aa7d425d8b51cdf81769d234c2cf8664c47a8bc8d872228ccbacc80ea8f87d1965f5e2067edf5156531605da1ee2c8e2dc5e51c0fc550a8431a91fd908ed69c206c428dc25cb6372d6f778dc4d0c1264551989e8cb0bd9817f4d751af24cd12879f3c5501491bdb9ed512f205cda22dbe1743449a8ce56826f3305b6894ab30138456b50801755b76c9c413c7d6993a62ad3a747e64ece6f3d7080dd8828bd46caad2202b525d61623b5cc46848660befb9b21293a1638bd81bd6b228e075c18f603d7153a5cab3c305fad966176cdc32b40e6745110f600ddcac9dc51dc1c826585e5b9297319eeae01c463701d9ac42ae3bbc650a960d3e846214ccc5aae000b017c983c030da702431cde86bb7be55b27b5ab002dd598a5b0734fa8a9f0e8125989939cfacb6994d31547a87f848e98b20178b056a641b10da8e40b0f994e9dc15db8d04d53e1a7e8b8f852afdd0645c755e03c2c15df2e01990985b10b4a5d328b0dde87f3655315443e80e46e9a0df2f6360d0f33d1fe730d80a5756551dd7732696f67354fda6a3aa40418e8652f44d951434adc8e5f238219751543b2bbf5599fb4c70ba9ee243f3e0d5f1a037b62883738a725ff0cb05ea1965d217fc322896c9423640d8d9c68b4af00aaed9b71b79129c37c7300a9d5ff31cd28b81577e76cd17ef9a1cef77cda9b0a941fcd6c3db027b503f2bf42d2b54180a8d36f8fcff03d45814caa25d41866913a082582a32a69b952f2ba6945942140b996867a5e6e2e5ca84e18acf82574f0ed76cfd65023a81871ac33e091c6b7edcf5ee22d2b318946753e31ba89aec0d0a9aea9c80f7994436adb0418ed1c855897d38b827d356658c590e34e62766d131e6385281a05c6f0359ab37c60d3101f982fee4d6681a7e1891bf7cb651d977b0e3e9a9cebd41b49aa5f30a300c71731985bc114201aad30fdfaf2ba70539328d4974f35d5a7ee906b1c6d270994e37c530cde6a66573538839926a396e87d50c40862e2fde0168b66ec6503a3898e3aa0c5be35b82595ae5e25e887e76c9cf2ef9d9254f84085147c537620e703efbee7d4b8b74df3fdd778597ad556ffb2d246938aabd3f876b0daab7713d23a21bfe9e10f5ea30cd51c139cf4e5c0df3990a983428a1eb3f916dc78fa10d7153a2e41727d02546b122aa36c53ef813e2719cd9b3837ff8315525d2dd72c29fcf671cf0ac8edfceb1d88f3a8e753e4f5038d3298a128d990f9f7fce9d3aff0a72c52c0de9f4d5107eaecd8bd1efabdecd5e2fe063d408a4b7d6a787039f4ebfaefca45ffa9cd6a652cc0ba677c62ba3bd0faca4c0bd8bddadd8274307ecd7fe7e420e1940d3378db010310c5cf743a72ab8dfcc01375ca928f53e0cea3c404849f8f4a428f8158d3188bb1324b8086276f0a3eda39058e2babf486f131987954deae5552944d8f1c5e82311b09c605b99c4c4e88651dc6c1f6e2ae856b6173bcf986c16fa4dd64d50f1863498812f6eb3324c1296cd725e6fba5112a9aa27fda01344df0598f926ffcb64d89d73b51f7f1f997cd53e7ef6eedfb5774d4e752ff94dfa4de2634fccf8d86023acfa65815dd422fd372737227a4c7af52e05c0c6e94380510d25d435557b6f0669d32bc6eaddcf5ab8f8d9f74ca7179676d25672189f6650351f09eef52f6f5f37752cf5787992aaf60e6738f86bbf9b5fdaefdab7cfeef70aebd50e7c4b885f9db9080cfbf8b31fa5fcb729651a58c7e51fee70f76a7a56bc580fad81bba20f5046a5e3169ca181a1edccd1ccc2ff5fb9f5065f36fdb9e05d848fe93bb2bea6b3dbd55868dd8bb32c4e376ba98af3d19d2086840b3205e5b0dd9a5ffe114f138a78f4eed194bac5c614fbc636737352166c6e0c6185ffed01454d37194c58e369a50b0aee83b7978b4ead6e5dea6372370d6d15d3517199e46789faaf2937103eae38b3b8e29e7656b4a9e470ec9e93d9571c62f182f91a2b1e5373c087fe859b93d6cc8c7633b50f7c14236ae19dfae217a3bc3a1f663b41811716e6c8491228d38ca212a33e4ed67898f2d5ed116129c2f29cea24368072d009b7414e624bf8753b0d12759af973baac5ed74c490cd7b2e18ef21addc3923f4bfaaad56c9ea35dafaff6ef472eee270e17c61deb3611a3bb736c3c99b2fbe7a1c7ed0e86e2d5cecd3d4abdbae1eb3f2bf9c55705affbfcaa34ed69ab68cd8edbe857d16557fab7f645bb4f8ae1a42f9671f81f2a9d9ee6ddab28c34ff1e1021005467ebb359ebfbc8b47ec4210a4569c72046d5bd6e08786334451db9cac2111ffe4ed0d649ac7b11ead32672e8472f50ecb59a6473ecc405bd66462816cbd8ad37fd92fa63f70abff65aa7fe54a7f7659cf2bf23b96f6cd754cf3a9b08aceb3f958535c4577043dfe6f645bc3b89cf9cf4e949efc5498526f5f76a2d81f273bf0d98922620a76a13b72f1ff776f3fde1f0ece3f745d99a3372fafcc502a2308f5c5e7b9256b7efdec155c04215efde136f187d701be51fc9049fcfbc3f1c5bf3f661cfe9e6c27f8f7878b5d93bed5faf78c88d6e3f2ef77afff5ffffbd97c4de44b6d7fcd789ffd5d963f0ba176ff92d13d5d0d4626fca9e1487dfe77bdde37df7ffd7b2427bbd3ab80abebf2f7b1fcbd5c4f3d52e1efecff0e4cdc654b097f3e8f019a7b3a4e8ecfc715057d34b247325f0841c4e8c33f72d2fb28dcce2dbd48fbc953e1cc751184e2fcc0c24da129002b788619efe5ffceb6f37cd6166e6c3d839d9dd94942ba0f8a56e6de64c3b0f3847d7c5e383e3faf6bf4bcabd75d42063e9069c1897ecad8fcfb5ef24f38fa1f0f4707c6d44e58ec26242de46f1b5373629cfc64f12be9551f662c84a35f8d5a7b9706c2c4f514ac4e62f3b70641c4a663d139fe829b1ecea32a5f71cfdbedfdf9db775d98c0c7d72fddb3bba8f1d4e534e845644579915f240700a8954614332c35e65c2ee93fb94fcf6fbd36aba5a4ffc82f276a3bbafdf91ff027855f484c8c76b1bb5a584d0bd8ec4221c3fbf5800494c3f2fc287a53f4cb18ae0d216f3215910ad3c73ef8b389e0cf128d61e195eed2165c7717d448348ffef5dfb900dcfdef8ef84bbfabe30a06d0c5f41419a6f95f9c2cf74159af389aff2085e5a649436f760c4d3dce7fe6e4ff6ec1ffddbbffdb426be8eab80f8ee596292cf764faa682bb120330a9fbbf6bf37ff7e2ff6675bc4470dc076db9e57449dc33d37253bac0a719b71a268bca950b6978c1bb4731d91288d9697966da2b12d19c5b24b920a3a5b1415b5b6a4e16068c9d338ac46ca6a8e785eebce5007031d0ab8c444e4e6bbd763c1a6890fdca2555b90f09a6654e7f34f2af99deab230bde6a5ed56f651e50d66a870b76cee5d4e57127ee457eaa31d3d0a1f22865120bac295f65c8dc58d17fc3f4bebcdf373d0eb65394dcdf09a7f09daf7abb80dffae08b54f16bdb5eacbcda45b5bef5b3524e7664b16f47fe869bc654dfbe2b008ebd627ee71e5f33d1b9c8e82d43b7873b6567e90f84c903b2efe91da2f91943768633eeaebe84e977d943078807e527d2f9d6e0ec97d50520026c888b8fc14d838735670b07b729d5efd6bb3acf793981701e8a1c8ab35ab92fffadbb2f8570208229b22b1df8ad8a88e169d11932e374c8e504c2f0cedd5f5bf4fd46f288d917f7f5f97534e473f312cfa45edf832eb7e8407cacf1e1052638dc56f9c5d9e67b56dc1b3ebf5f74ca1dbce1e0993dfa4e7b966c1cc678f7c4b42be11c6acdceb405fcdc49fe201cb11819e768df668e0daf9c5e517d2a812bfcfabc2f4c7908ee145cdd97eff08aa2c02978ddf08677f52ac1a9d977e7a7b807ee9487f34160970e1438bf1f0d74189c3686f8da061f0578cf25c2ac5b50130739215a2099de38430f73bac462263d2c76c0ca896377df9e7c1c77f9a48dccbbaf32f3839ebfe963fb0d9189e6ed77c44635eafecba05d45962fa98234733d405baa3527fa204ab7f9ba3e3109dd538d9baf43e42598ffb8afe7e4572b5569b83249b5fc919830d345ef27c16de14e5f73fded7bea4530a4bea3f3e50d3a83484bba69454d4cca7463f48a99ecefc2af3355301796c974cda0c2ccdc4d5110b271b9a429dd7e66eaf12a2fc497240d21d3b137a424f7887a4dfbb875615b758656e658133f8844210829d7a437fbb8cd218c609d0256c46a9cb4e346e279fbb86e062a8a907c1d87d130730d7f9726901f3f28fc74a14d23fe3b7e14f1124f7ae328618e995b9803cb925728c4ca277b7a922365860435ce76664a4c322f4061c84c67573389dc55799b79be3251ccc17a24318f4066679a28540613097c5c92b336b5095cb03e97b5089bc97c58d6596e9c39efd2fd20b23bd6385cd795877072ac309af8e0426ad250b25af44f11021509264d8eff79536d9ad39a480b532b27e16fa3b16943a4391ff34e9943e3d1a5a51b33981ec2ff940524c80bce33463d6f22939206e681a2d27fa13ea89c018bf3318de95c8cb9370881d5bccf20d9a1379ceb39e96b32911ccca862130b7808c57711063aa61ea486659599582bafd810e8e121266ed3981ff97a41f6711352c314a1bd1c11fccd036712cb4c5042a2a0c87414e7e4f4c14c34b4b65c524a0d179290348ac84e8d71304273fe6a52f815c643cc776dbc90130b9678d8b4852669b3903acc093ea4e701055ca75e6841ca07e59f438884eaec91c96d5666cf97428b498b2001b7f9d5644288fcfd8750ce6b88c433cb4937f938340bfbb16f3eae225abc2afc8fbcd87112787756174d8c653e323598d5e55c9c4a2588e8273dc6261f67e29e2d07ebd789e89b8f9cbf983b98c173c75c62969779f78fd7fb1859179d3f2f19b43528b21f788441b12c2ced537488aa3df25e9ab2307d323572a47b6e0cba0938827934d19b530454ed527bc66c1c1e735ae6ff99140ad2ed7e6ab5ca62a8ac18649e35b111e7ca077e1a1d149a29cc66a611a3c77ce922ef30bb196452b5c2b072888d47cc1b4aa14d78c4ceef39e571ee442543fe98898305669eb5f35992c7a49d360128533c84e3743e6ed2eb4f92932ef9cc2689862c076410be45623496dd3b8f8dc6008fb927e6b194a4dfd414420a7c4ab55692210f4c251057c9c1decf2439991b3a29f14ae2f68053a60e39c6c8023174f414a5c6acf7441d1319de7928c5a070b708088679c8a268075645959f7a48878b39b98710bb04deb1938ce5e39a615d69b2186d23f2a05296aab67997f9f9dc3b5303f46ce7e1dc2b8983ddd36e10aaf069e075aeaba7a685c248d2b57502f50711bbe3e03da4748a7342e7db0ca94963fb42a56e9ee9426d48a3e10652555a08d0cb7e9c355d9c322228ac3c9d247a9ce9510ae2d9bb2709cd18bfd05c42329f12d91e668511a9d834b9265a4015d8c715f4f1d4cb4a99480d0e869c5f8de982896d8d6dc02e22788884b2fb52e8cca7f3566ed479d70ca64a0cb2673a03ae993a575225d44fa8c931dc999eee4362a9435664099d72d8198a70b07b4d4c95871a3ca2c0e745895520350de3ce614502f39df5c83cca0e69593bb4e7c787d076e1153a64e0435c383a84674387ccb67994399821603d5798739095de9cc9b9307980e132f57213f532556193576b72ae4fe32ba9e0cc1e1e078f7e6ed7831f36b49d4c1147731a0e499ae977f3dcb35875b963dbebceaccb33c21294a750b4fe245e14404a63062a32fac57e9f22f12120f33e41b8d093faaa536227298f507436d639f30822259c7962a780cea7892df921fa4d488ca67ac94cc937bdb02e74c81fdf34661f1e4c2d4df7158b6f4e7aa646cc534d7625e09fa230d8749c244d852d90c950cd11bc284c1d73ef91d1f8a1a1bb007ec8cd1573946c3bbee1a4afa44396457432f9469934c2df1c6c21929b59856f715e55854970de8af6c12167f8845072532a6a362dbf1dc26536e5a0f3415924cd7ed00cabf7c93bae72d39328f6b92080e9e8ee126699d77c3c6b1ea193eca9a94f277bfae3225172644e4e83354ac7f4b9ce1f1755e649276338b0d694f61e5d5cd1c2657289a8d18b99ba5d741c980b1f37cce2e8260e6044b54909bbc7395ce2aae667d159363fd1b8601762ecf98a5d3ac735c68310a127d9d289967930ea8cd9e6552e0e39730fbaa6b2973c8fee69cd69f03c4b6df6c733b318e8f34ce5b36b1e95f3922a417b828ed84467aedd20f23469a1dcc480ec9cbe9135ab92bd2d22ea747c36bea670e889da10b1e34fb60797b244ed7a415d6633f85a731907924074e92e349235591e62e24e8b757a86457a7d71d0f7e3f2b961335beb644235812c1facfac937e548d19458123231ba0687dca63aeb2c56538c278d5848721fd94a87707692de6262b1c1fbb30ba76813a393073e24a8c24cdbbcd0d46f2bb2ff302f9a96fec78c0d39cf0e8d9f3775300f0e3575ee146a7a26cad338703e25568ff5463c17b3adf8f48ea6cfc79cb86cf8346efac34d5207a730ab993d517cb819c3eda21968eb321d6f93c74c474e021e1f73d3abbc7c969154269cee8ccc9a4a6f6e68aee79d92d5c563a1e5d063f990d01d19ad550e7ab12d8a6ca209c89313bf760d4571ffd3f9b1fafb839a1e4e5d49d290e4489bd7ccc3794684241fde85c42ff19c4dd53945ab8aadddc5e1ee92fc3d0e71af95aa4f2cff5c57cfaf7054b9f3a6989a69704b806911aba31e59b34e2b6a4824964ce2c8ac7ce42c7cac41167121dadcc8af35c79325b73324a631573ac999de394c465e90f87d537ce6e699599a42baa2ca913b388ab9b4d689d6a143d2335c08473e44122d30b787e4badab0f02fd1ee6a6749ca19746b5a43cb3d4b5a38ae3543564382ce53cd6796048af849446bc8c14267419698ebc7c6a95c58293e309d0489bb5e76d13a9523d764d64ff3f8504b9a34af1845837b405044b672e88e77d9602ef5f9bccabbb635eb5946064594bc4e157bb4881359795562d3804357bb22f32e9f4b2671d9e01e3fcd9b44072045382509a18f278369467e06ef707e5bc6bd4e01283258e2141d0f68f4d864469af6e5886214a7a2117db1fa0bb33147e911af9c28743a0f09a5522c5c3a87e6a857253e86a5092e7d5c156c17dd0e90c3754833e72ccf9b4a3d3ea0cf20abd3287e55a2d7a7d36b8e9366b370c4a96bec64ae4612dd94946e9ace3d49aa913730432fa46ebba858595645a74f7dc221ab2247b6315c07b1ed5bb74e65e49a7406b31043ec54be4c324a0b5bc437a1c84f66ed411a5666eb90107954f14eda0db989aacb128550a02961e0d851d4266ec2ac3ecdb6a86190c065d89d6f5e952f4a22921f9f5433c4a3ecc2c0d1db2631ec3981b54b330079d8103a5a9259eb2e12a475383def9048e7343e094aaf8ebd9a981fd33727661ef76a1c4cb16b0acb0fa2cb84c894dc064be26b43ca2ec9c6cc6240d15b8d31696185e270e97c2a88508d129fd06a8f43be4a412550511849e3ed55b65796ab2205993b5b3e39a95c892c7656699591913569787bc85d8248fcc744575a79f607125f73682fbb39606aeac8b4b35916b9b0962ceae054b1bb35621e69071e5c9526639da60e356a3cc0de498786a86524146d998fd3a0ee4454143e5dc5e1567f4cb406e94639b3b312f1908fcdfb6c7e47a69ed88533ed42b93ba1a9ae1ad799af699476433c8ef9ff6696724eaac439e655b5aa5bdbc557a4841939a6137aa468c8ca94a19d11eab4bd0704fc9a04d6c9fa6c523ec85739d26a526389e319d54253a235eb104b3149045f11116ad84cff85fedfb4b4322d174992246ba40776160bb66a694dd51d5dc566edacf6184623214a8aca56f381a20cbb55cd3a4868ab8a0595a9b3738af2c4a271a069efcee11789f55af55754074d046c6e794937460926525f687615c4864962044e8193f61431cb495ee52489126349ba48418c758a8468fbff39074302ec94c4a758426585400bc76106ce6549244a49cfd8a5e77eb092b6906ef851e1635328a63a1b9c5ffe98a912354c9124fc3859b7138ba7b1aa916aa13e676cdc075015d3a8cb12442325486e64511f99cd2d92034dcb150ddb50b84af76bd426a0519311894de02a6fc25789a29bb324b24cc130425767314ea3a62dd405aa05b0e589026c6ccccde3ebe0d0ab62bde9902e1a139b7f1a82a72a006706ca8664a7e7f4a42c49b3aa4819f6c7b44dda7c958329f063d58b3b270a02430ca78c57fd551a12cce4c416999145d136224274f84d46a4228614f97fb2dae288258d4d268e75258311cd1f37b1bd2a1788b0a0f05352d0646dd37ca4f8e44dbce3f9f024e03d8a916a40d2c8a8aaa4d552d0dcfeccb2a88614f427778a292c29077b4f945b9896bac6d369ea44a60f3164e9a96c69745146e4013689d2c4c32140285b25d61185aa15e63438a32bd92c0ed51ee27845b1e4a6819524059a1851416f1bc55324b4405333a9d161a1aeecf4e29b44413a87b37b1609e19a8b43a38b59fbb2ab194a37ea52caa00735655686e6a228bfacd96441f8144175248d200ed18345027bf4e3a9938344f2e61c6731b20b7b2a194a3b721788c950e405ef4fdaee6adb270d35ce1f57cdafcbd3a6cb4dc18d48baa5715e9f82ded4836fc8a1c84735cf191b3be4de7471053bfb8db5eb999de5a2a911bbe8626b425824db66b5651fcf232993dc16f9a8fa40e02da2c03e279b0f0cf9587b24e92a4d21ae20952a12e79a1a5c92df5129a1121f7b1cad603b825468292ae69a663730b39855491434edaba40962f1769385bcf5168503fdc486d0e9a9d2ea48cfe329fcd2c79b6e38852a99eb10d1ec9a11610943d8781327c50ba7658b2658075f3224da5dc42852034c6ac8c824a9bcee55bc34c29f04bd488061999b9548c7f579f6cec341ceb2b96bb2643209a3250f9bd9b326f6d321ba0a905fbc5d9abc2349bd60da343e4e2e6c66d7e810bf45d204744de52c1969ab20402d3171695a1bdbed739f0d49f54705ea11a647230a514ce5cee2469b2c89f14c277551dfffe094731163a8ca7493e1af686be5f320a00947cf332b04c1139003f37109a12fa4245a0db2a2f3a5e61d99125385a8f7c23d6853538cc76160ce26359504356cd6044c0ce7191f4f0a4e4e92161a9ca33ba4adf3a1b849ca1a892942d03109fc7775ea93b9306c3127b6770b8333481f505fe843e3c38c07f89096264a4357228bfb4f4141d2a1fd61bd820cfed138c4435bd1b2084ded01c29069f791a0e8c4799d1e6419d81752fc67ff66ffe0bff3423f7fff6fff4d47fa370ab4d8cabff8730d50fda1f919ed73cf8f6a0f5f5dd08bbf208961987f08b97e9190cb4f94d186570ccbda44ed28b9241b526f08385c6a24ec08b2a5f244a245db1e47d38ed4828cf0fa0fa775667fbdfc43420a6999457ce38707fcb0a5d77f18dd13fbcb3f9ce9449d1bf7f6dffc9f3349c2dfff9f7f6bb43ffff9cc7ffe03fc7e2fa8c6069d6a8ad328d67ff17fe29f20dd21c90da4900039efe3a51bd0023f284594b960e04fbfd55f3eb29f7f7efef943ff905b9090ac0cb4dfcac0473955f61fa848007eb9f2637dd57f56272162397d4ece23589910f0a8e240b3de2c14c7b110d1d6cee971d57e603a095c395acb89814143c8d6ee4edf8462e5633b436854cd00305cf7e39b7d1d59323167d8804d00dafbacc9fa5a95ffba70cd4c1676f647f797e23705679f4ae68c2863bcd1d3eb488b485d6c734a4142139a852c67210352732b7b2e09ff7c4fd5b2bbd7b251cd5444e7d7316b0c678fe63defcfcfc6f98758c6ddf2f98da4ea78cbf81a1dddc6424b011c9819c467ce4ca6791b6cf8b6f0d8f4f39143683f31eafee8229dbb8821b9943a2d63ef2ed19b1637454a61a3e450c0ffe47f581f4b13ab1d418d6b94b7ee8cfd9046f3de5f7aac842fb0ab55fc8d64293c4edda1cccd3bfc2630d551f107ef2b855739d3ececeef83643a552a767c35cb6cc80a790db6c6d3f1fb66a003e7308dfe0afc20eddf695caa66fdc3a70b257e222d969caa3c3baa072b0ae26db21957924eb61f34c43f096d7f52669d5091c50f95cc40dbef65eff2b9d0a7e8eb35f39ced2bb27d9157df6c620747f8d1b66d951619200fda28ae1dcf4a009124c5b5c394bb2ba03ccf5a87b53fdbfd8ba7aacbad5b7b15ddca374db03fca9e9dbf3f9ac8bd73630a5d4cb2f58c0191dddc23413590021ff01127e7eef75828e2b327ec6b2fef8a7ffa4996d87e2a9990f216f62bfb2b3037aadae85deb35f46d7eff5fccbf23c2842b857b8f0ad67f6e3f5d132969a85dd8d9cb7e18fc0ff570ee2cbbde236c6b79c97574dc86f0ec5f3999a1ccdaafb516692b68fff9dc5f95c2a3b3b540a8d0b731c344deb0f45d2c8d670ada143bf70b59ffcce6deed47ef187f80d15ffe4a7e779f797111980b028cce5ef2a088760799b38eb49cb9826189b6aa9a5122b328986e2152bd7f04f0fac08a871a272a9b296f98ca82497e8a87eb4c9ef383e97b61cda4f0a95c7fb272d8167e3e3cac35c8ed77f3994aacb9f9027f7588ef5b8530d17cb352e966bbcbe5c663b3f5908bb30c0445626c5eaec4e0ca68e685c2efca1290fe693f9e7de23d87b1c5969669794c4e562521df93fbf9ac2bc77c47f6fec9da96b1b5344fc73e33fb89a17e87cffb5773838a220e33fb8003bac617f73ca8d835d43c74b82394989c92b7d81e09c0e370791ef87af0191e5f83e3507fa0f0445ad4f66d2c66741d75f02513a078919dd347666899925e01fa42692388bfb738cc4ac5786768654aa861f14ae42933b298522c69ae06f2acf1ad096ec50e202ec8906a3bbf29f27eb458476ce4d10b38a082febc30b176d02667cd6934a46adf8bf9926c43a4c4bc2f95e3e9dc0e1869a82b5e6c4858c7047e44fa0f664679a0b5b5105b07deb5c92dc969fba23cfe5afe688d5108350ee13a08984027bb5dadac174f742287f70fdaa98218d39071a175f8e4dd2cd100dc5ef9e71b213fd46524dbcb7027d6f14ece471d6c969699a2276bc2db3eba001ad217492153e94350a63bbac2f4bd7571fd1e0db6e03bcbc77a93eed08be24a341b88968beda127f7ae5de545a873f9da433f0d37ef1cb59b509551b2fef76a62b86ed1edede86213d76cd8d2eee222701a8e801c241c70dca5a7451140dad151bc1e6b2dd69166e04c5cdcf485ec48a8b34e85ef5ae12f852afcedef3fe4cb6556d27407cc9bde3cdb32513f12b93359561d1b9f0c9a2677361c1068b4ff819088fa5f465b510d6a8c2ef7867e9a902efed83d1018f20ef917b3d0fcf0a2e17ffdc71bf090deeb46e7d9cdb3ad535de72375fe5c9c89c2661ee35908bfcf229f91b268f3e56ca26db40ae85a4fb78995def37d86e05afe42c45d12910101e572bd0bda9761590647e5e54cd5fe60758b4ed78dc43aa5c7c34193231795fbf62b764178ad5a8b39913e112736403cb573825518119db9bf1d17186d7988202a44f4121004c4ec61f48b527bc731e2fcfc701f3e152ea5fe9cc39f795280c3651cdc3b2d1e5f0dbcbd4ad1d388b968c3806139b0bfc6a6c7e56bcd674d2bdd7a7af29bbed4e3c83deac2558c0c67d57adf32973886bea9c065cc5f92074b7ae4cba22c4ec88861fc3fd3005a8bfddc42b4c856f8cac2b55a87e19bc8f5bab82a79df5c6796aa32a4ba9735ef1a7ab01dcfaf28e5f35592fdf9828f3435c5d567b8bb25cc013e966188ed273264ff7d2347976c69a86d9437fb818bc8fd047871f341ce4f97c478592dade99fde99c6d9db32f72c0fb64310090ba5c18dde175a106896404d6e3f03d045d3d3126385bbd149e2bb09299d7e7e8430608e8e696e88413abeeb515af2c842e0c98a50bc87348ea3e2267d182b848a237ef51dfdd3a9cd089d9272de38d287bef3b85d5d23dfbcc5d685dbfde2ebbf3a74cd04f4b719243a5c611cbc557d5bbb68aed9bac93a7af726375beedfd646fc96d54763c653a490ef249249f39b5071367398086192237006c4d8903f06499504da62ad7ad3858ce6022f7cbbe4d2e443169b32ecccfdb6c433a85f99dac5d1e7e98d0c8379895a79e6d9403bb2fefe70578991b77e47deaf96032dc8f8001a03280ef31f12fd6c2ef15aaa7b4b1fc3f7bcf9a5dbfeaea54ee00fa418dcff94fecae202098989874b74dceffb756cfa3dd1b4544e4ad93c4504d39248f940e4abb750837e59abde2af2597bc204a4f3215463ef09ce7e54ba4f3763787b15fd28fc01b2aafb8768c05b36ad77b67ebf85ff7d9f7ea2138cc776a60bcbeb9d1cc6371d7fc5ce14b5b3d339b464e305461da5e65e54677d4b4efaa537a1610dfe04dc21288d89e9587ca7a283b4a42aebdf8b531228736bddccc6dd9dae3f56ac37debeee2a98dae4b53695bbd725bbb40b624bca01d5652befc0ce96e38ae2a7904d2ff0bae2bacb22ffbbeab3392fc6f7aaf302c5cdee9bdaa0fb69b09e7d5277d4cb19b75ec62ca3a8be083be9abbf7eeabf32c7f3c2968d7b751139fcdbeaee9f479c91b816314cbc91c81b06f5708158f0d36a6e7374ba69bc2a5c392d2828c5fbbaeab9b3b7907e161f452a3abbd3ee7f3300df98a336a25da4fd40ecab225dae410fbce29e11a22d1b9a5dbec8e983645a1439cd5896d713e2b83f5b83e66d1fe2cf321dadac85b0f41ab6617d67e5067d1b66dbee0606eab6e56823477f774bc5da22f5d968edff087f60a34f4ef8f30ffdd01b7489f8593fbb1e75ed2be6a93d5aeb8ed45ad75117946ca9e13526ee581db53a708e2f2596dbd878769b280f86707bfdd9c892de1f7242efbb2b485bc607aa6b0131751e1da1037458d5291d844dd1bf65ead56383c142b4c1cfe2d39ebdf753b06f375a3f143fb56137f51c80fbe78bbccd05e13989bcdf4d9113b591042a1b05faaabc8916ee93a4d46390af05f498dbba3b66cbf3fc80adc63f09b878f7db456ba7bb49015519b4e513207ec210eb1154c2adc46cbd7469b13f29b775ebaa69a9e2ece45bb0cf80cca5d9e23e060f4d60fc0aa9bd7074509bb3147bb33af4f6b27f3daf2779a9eec9051c5a6dcc16435f2a8296ebbf1752cb48d11d459dcdf4c79152c5fd76fdeb199d0dc833a2225825a572d55199f609661647754b8cefa30bb3ef9fd8367b7d24c031dc50aa4b7d67fcd9a8c6d795d50c1eadd610926de5b312763f31dc587e0fcebcaa90f9808eb46fbaf0bbd72424d34e4a7b04df2d3f9717f211bee2c63753faad8dd6fe6eb2499551f1aa3f181bf09d794a055f8e5ecc092be94ddd99dc41d0130d5d58429a2ac84660035ab49f1f582599254ab9d30de9fc5ebc75c52842fdb447a61463158a368d46d8be52f6968a2c7e12f6508b30c1d64fa742857c0e86b1a66e87b53e82caace3c8e5c74daff352a15d701ab38827763d4d4d73aef57fb200de1d59c6e481b3bfa9ade103ba21a3e18194570b31351f5d546e9d8cba603f1befb437d7cd7a8a82c14b58b708afc1db413f17b7d9f5d94ec18fd7be9e0f14d39f107d7cd68fb296a2b24f987d483946e50c7b5f92297c22e2db7b98ab3f67b7d7eadfd5ebaef57d128fe50dffd94ed99ba2fd467bce41f20bc2aff50fb768a3fd417723596a21c0a9f251695324b3782d748e1935e6206a765ceb2e8df813da44cea6454eaeed3d2dda0f511fc6522c71282838b702d47a3ff50c38772a8a97cb141f07de044e531b81855fafd06e5943a4d64e367c27b286b13a4d36b9504abfc1d0651f6bac78304d76511d55152c41db48b254947ef169e6d55a2e7a4f5ce6cfed0b6aaa4dd20f86ed0621b93d31995ca9b213407ab236a3b66c7b167ce6b338839c99a5e492a2a97e020ae02217049527535f5a25cd1fef3bcdd353f56ac5c9faa8dfb11015877abb8932b4951157d2953e434ddf1ed3dd4e0a16f6f4f373766fdbd9f905b41d6408f023f4db4c451ccd8ca3e106a411f4dceed99b16d24790c36f8d7826589b9128a66a828d6224123bacb6087198f2fc5c27f2dfe177ba352371a78ff195f6984ff62ab9890da18f4ac13f553e5279ef08553ee6e833de4a91d8ec787e5e1bf49e062446f56237ab49af6c075c037e1033e630cbd88504180ff26b126db70e2b1ace8fb6a713c7c2e1ffe8bcfb8c37816c773824645e0e2c4584ef49275389ec3f11c8ee770bc45d0ba88352d02271a6b11fd69171c0f1f78a5573779af44bf7ea69115b878319678f535e053a5f0df24f63cb43d635a5bb1a62070a2b182e8a31b70bc2878a888bd8a82d64eac290a9c68acd87af3020f0a5e241ea2bda73d235a138d686d84138d4512c2a3dad6c41ac4847ffbd77a790a44ea7ba6d398d51484072ce48dbf5685e443c4c3477b65eb886e6b0ef2487cb5d5d8ecf2f565fa66df78f9e94f5f5293e9ee59b9a5aa419bf76faef564b2f2afd3f80fe17c14708bcad854ce1d6853b20c5284fb0fedec8741352540c7c3fe249b0f95abe3dfcf9ffe98ffc48ffbb19fe5e28fd73fa798172b3223d713bdc8a452d1bf71afc7f6365ee4b126a0be90be94416f1c879e9a2644db812c513b04b53713da38ca71e55adedf5e6aa7e264d94bc5b05fed7d07f185e334a9c57589651cc012b9612ac9415f5ea1a8c9e2eed422ccc9510ac6998265db2861e15d4e81ba99ee44c8e0417ef1e1d2b7ed19f46aaa5799009c66aa3deadaafc388e7889add0817978eadab8573ddcdaee1c36a892e8b9c49a1af39d11277a9491481ad5765c7f6eb3c4d629423bf6877dc4e82fbe274af6391fac7ae9fc171d28e433e546d14e13b524ec5f3eaefefac449154e8a52aee03ad88c5875eaa4c597fa6e345df6cabf6d34c68dd3803bd36061a957678bd6a55e79aa41fbb4b479e86539b730cb75ac22c11ba80dd111cb0c43d403f04fcf09e6d9947a7a3cf7dab84af9d0437bdb9353629b95cee4096bf742d2c8ee08a12b99dd7958f1184f9846de96b6d10ca79880c16f484224bd17b1f101414d702f4f25eb0ad1200ac87d5a31f0c4e3dbbb663446b15225ed8b7ade033830b45560bea79f03be2087db2d7630a974841af8f0bf57973e7a895763dc70b7a9a20deb8d0e7015b4f128b04eccd00f76eb4cd59e450f18118ceba1a1047eb3752ac2eed80c7381bea4809cfdbaf5fc9963438dc20f0d3af43576311be43ce1a7462674abd83cabffa15928a681366ec74029585eb7220ec99e037e4ae9cb01f95a382c65cc82304f219c61511a8553381af78b432d72baf08496ae0a9e3d6c9bafe38f16f8b15f8e84605b530e23e58807670701d01f8fa4e86c5fd4e1835c62ad84237adabb681a5dfeb3e87ca5cd88e3e573673f57b0b7a19194d5fbf41e0a9b286ab15e454b82bd654bfcf33d297237d8e5ec23ab2a37fb3fd432ba25faced408298c862ebd07a422361d150726209958e0ba3b4d4dd0a459aa94ea08edb8934639a2c80c34223d7bd4134354de40e33e55d0f927981ee9c8ca5f10a5380494520994749754999ebba5d1db0d222d500ae4b1b5b1d56eb0965dc820a67ab3c20b47823e406bb1aeca99f2d95973dbe8e4d5fc0dd0aa4792cf4ef758dae7141fd4ff4449e44ab4412e25e054105b8575c755559b4c016e2b442d82e586ccc67aab14d47904ac1c8bb80a774c16007c602182830f7146c4184025ccc853e77bbd9c105fb45f37743fb7421e424c5eb1e42b95bf4a4c9d546be4c52b8e5844d6a7035813c6442e6d769333bcface075cbfb8aa721d876ba3363b8e00290637c25b6cf82b7912ab8194908375cb613fcec2b698315447284061f1aef68a72c0a652900ac507241b446f637f03a1d4a2968a51198783493af9bba30b9a2a49f61ba2df4ac18b307f406b574fda2b5c34bc5318b204c5d70ac4b5d8f5b207244c7820ae35fa50ec107a404660a9a250a5a5814a50b56586ea50f82e1ef9ec46640b6ca9a617169b99bcc6a0c70b58b94de517e5211c83c7e8334511fc5f6ab61566051c536a6c3b88095a79659015af730b5dbcd67510d8c1b191c69d53e4a416678af5804e36dc4bbd86e01bca4164d17961bc969ca5a622aba032b1b06fd39ce5dd71eea7d96f893caac598e86d691e3d8359fa97abbb2f44955fa7a6cfadbbaca60b033338320bb0416e94c1694c49212ec26423db7216be920791ec1f06ab8ff886b7a3ac4e845fdb532bda4fe5ef536955828aa22543900e7a69f7ae3b4af48789f861d21a0f39d17c956d2c68c74e217eaf0b1eb78e81d169cf87ee38956abfc8abae886d25fe8581cce2662348e5dae7b5e5de8ce2749a013655d47a03ed97606d936da21268172acf73e045b2eeea2718823e0c64f3afae61661c41d2aa060cd196ab7e8f07f3cb5ccc06f78145fab725f28b7d3299eff543cd31e3c43accbed38f57dce5f7d5a357234f35e57dd03d759578e72e648830461b1cf9dcfa7e382a5ef5d32649f63d063e7df91c019ec43d7bc2836e2ef08391dc9d90735fc6a67dcf74183baa92877b9e9c785d838093c9505db0a4b3b371ffa7504e6fdb1173b217e295c74e19689818a4a85555d2c9ae38592b57dda0d499f4603e5457fe36704e8341a6683d8137e7e1f9f8f07a9ff3351ef1ffaf90f8471ffc66fae75319575aeeb82bb32024bba3c5e4baacdbc1293aa27e01198aa81f29d1e1e8575c11ebf509d4f64ad577f256a9981ad1d8baecb28ed887513023ad5135ec26cc4ba853d4fe0adaedf5d552574d6a0ebcaa25149ed00d67113fa8f12cd830e18fc1c1cca8e544a879d890abe5204bf07fc2ffa1d5c35a61cfa4b1c060a1cfa57c03f01ffefd176f73863402f58681ec9a554b36eb5fd133e1d68e1fd50e0fdfaaf42ca253855804d02e8258e1edd83883af8c45275b82458c2bad5111fafca115df5d5dd6dd0278169fa9471ba7e0bde3605cf21f83aa02a0a82da19d36b6b87f08cf52376e519eb1da24bce405ff7115e8c1669cceb57a084d15427e53a3a2fbc058760a3e05f0b7a1032fb07f17677686270326ae6b76e0a158f58a443a00775c06f10333bbb89f6a2281aa80f872be11185505521d71384720aaa09b53229380cbb50db295bdd41a1352b83f88fc1a004f86922854ce0a9597cde27d11ad242db0a3111a82e402fadc363810fe8442c0acd143f825120d1bd5676a1250eec1ad14e48f8a2d982fc5ba3222b92350701045dc91c018342a154fd7fde884ce35c9d1bb08db13ac98008c44b1969b58a61ac8910dd19dc9728fbc746b681b80ffc7c4096ca87819f3273c8c582375b741f8ac74034a3510467277062158a03c3fe18ea2b67b96d1ad860f8806ca8bce7d937be180eb3e02b8b1e459aa33152958f4b6438743066324ef1b1d0844de62064878e39ec8fe6913931257ba974ab1215044a15b74bd5265d221f4dc45c6f5f3351b09f1e9aa4f538a4faad05e58faf3c85f202bdd4c82c893fc6585e5a5aeabac5147ba41f9d4da05ec6871c91521489428ff28231443ac358d3dc881cd1e5ec021fd558392d57a45bd30c6cf0862f57c74ab6c030993d78011d45f5ffea66977a8c17c383d725643c4bc44311432b38a8c5f06f68c18380415b8f7e5318623d06fcbc20c4305d9d083dbb094bea5ce2f9e15bf8cc7612e840d165c25b191934d9b621287333e3189218a0503818fe162ab8c39729d1b317d0d883c8b70de14b3546a32515cac34d7494a92015a20011b918a428a00bb4b524eb6a2daa61f47c75c616f49fe6461772d89252b090e95a38768a0e4b5c28b2b5d6336a1cc35765a43a58e8ac16bc426b55afc3da160c5bb9ea18465525e31720fb092e3cd230502359e86059b2ad41e9c4201614b2a98de4dcba8c3adf2ad161d57044d0f943ffcdf5dcbac6b701114aa8808167119dc510625e286251d99f3dac2bb224bab080d77eb567f4977a3e31e200444057934d2c18885c208341ea81d05cda0a53bdf45364c98323d24811192836bef298974aea64aed2cb61fd89e32de073863dd69089f9dc2694800e9913bf5d383aeb1b3dea455d5f5b476431928c56baad0212fa48d6c93c1f18fc2d4479ec50cc2fa8d700ce1965281edb8a4940be92d8210f55d1b8d42b972bc023199e0b050b22052faad297690c4ba1fc8c6701917524ba90b341e50dac8c2fa8d5e57ae20a478a1c86585b9c70e1eb0143cc18eb5e305eb0604405f39945b89022acf57ac5e22f4b5a0b696f283c3c26a464d49e1d6acf01335b1c25c050da0b694ef5e458d6992d9e751004099f5d5df8447b6c9aea1c853d42152f2b8fc28ca0e39132b7aa4da0d1e093bf35ba08b624cce4c98f5cf548b83c5262852e4905cbd5ac1687eee75a32e3481133cc931b453ae079c4aee1a44c978551713b08188d45a6b94d249388113053ca3c292952a12f5e393917264720ed17574d93c2242834d4a00b0a3f2b5448958c8c040fb4ca7e813c1798908db8deb4596926e997a5db02edab4c8a259801a09980a885feb3354dde727386c2ea7c9460b8e785080d3963eb414b940c606b3a52e09d21fa0061d14a02f62d8216cdfef20bef33d94e38f3428e5d981e845742756c69e485ab09a4b7abda025f38353578612645a658ac54bd81bad4f2a0ca9ca8947490159912bd68f605afa9848a022fb4b31dea68750c22a7638b1d0bf5683f9c789188adba56931f30ed9c7b49832a5eaddc46b5b65581160d2635e915968a5961f87a8b5074aa6e5e086d3d05fd2d68c6923a8afea1665b3682aed01163bd91eacbd98ead3971d421ad365ea8c78a0cfc660457238f37951c64012d24b8bf51cac32f1143c589c2f9964c15cc60e7cbb64ae305351d87ca2caaee992e73b44182a3c42a4e7889acbc59eaf312aaa4c1e7aa1267f8e0255b28c361a10f65890d5dca787db3a3ca57c588f60375ee7a9c5a121e0e90abec8b89afaf962893382a6f51047abcd9f1852b4e2df7e88d5ada9d8efa2cebb2788f52c71db8d4302d11cf67a9f76ed96a85307664c503c74150d4f1928c384afd85cc5bdbac96e66260fb25393983c712e194c4576255632266d4044e3e4cac19212eb842923d987d889b8f345e688c85489cf18e26ceac0a3d29f9163305c08789b66ecb94404e45faa19e89313becaec27a3152c0ba661e02aefc0bf186f394aebab0e10e7c5f786fe0ca20b38174393449c9b05f9aa186aa1b3d2489db407b51095b2a0972114b59300d940e06b20b69dd8e2a2f23a5f546d243d11542a9b49e4e2ea4d3654e2e14cb47cf127dd107cafc589ae1ad26f656fc520c7b296863976d5c5e0657c00ecaaefdea39b526718e541f9cd52dc859b761b19747f3a9174336cff313b8c30c99f33162dfe8e6c618b97f3f458fe1468bd1ef9c1bdfa1a547b1a18bc5455cb045679ec5bcd49a8f83da0679487b72b769171533cfdb798dd731349a97ecd69bf3c6bca5a898d5fbfdd52ef4f2ddc9acd6f373183a1f45bd175583387ae67834739e9f19049d24eea27bd3e9e3b0a180cbfb640725c64cd0bdc703122a49a3ca289ecbced19431d31a7e4f12b111372b327b35888dfd20548df1792aabb5a428d0c8180b11588cc2db6a90220749b11f6478ba75ba891c246e3141eff4f674231fa438a6893ec25e9ed71a5c704aa475617d9aa944caeffb1e5f0dce7bdea2d5c99901c383da725bce38457887ba439b360ea4db3767f57231e0e24abfb1582fb6b6ba50f3cf2c56327a8872d6883ab6382083a30ebe5671d4fb339325a356a3518d0b44de1b38fae3f3b2399c26cb15ac9cca0a70b3ac47d22ab9ed4c0321a03e751810efb86244a99305e91cd7a818c16c664a4ed4cff53260673db332a0670da75ac981685af4a97783db765d41c71c5d9f55b944b737b21e785fb63baf8659623fcc5079d31aa020e70e2e232dd2f5e2b20de2f266419f5300d528b294b26000b9cd1ae2f4e1d5eab897159acef7e3d6d0f0cec0dcb1f653fa4df5d7813d8a7e861a4a70e4e5dce9aa6917a7d0c73868e38a11db5e568abb06ce926af55563356fcf02836114f12b53e7eb4c5de7d76c3d378ce66ba786091b62fe90852133b1232643fc8c81a1ce131699d14e987ee221ebec5d877d9f6caf4e94b7fd49fd0815b564937a291c35efaeb3527def9a7f83a5cc0da38fa553c344df0ff34332b296824b94fcd2abd4f2871daf275b0a0795c705efdef23b56b08d9bfd50333b3366a6ef2a08fa4946755c3c924190a0bfc7954e34ad7a6126a09048dd34cedc9c6653cfc2d3442c369fd0037a2754503cd15d9c0737f299d6ab98dac88e198ef20a6e5dfd7a604deced12d2604b21747e745cd0758c821633fc3b5ed9e3da6cbe75fab36a4942bd01c7b7728943426d2fd836b0f7fdc053de47a7c85d45a41a6519396fb548f027c894c1fd12fd373d369b831a15817cdee88d7bcce3f335f60f4e4c54b36a4a2f0127b97fe3726ae39adc8f3bb44b5ccf42519dd46e94de7d3a7d869cecc6550f6799962fd70e91522a34bda997b0d48b06049fd958df1f579e296343e40f4da4145b93152931fbe9279411fd8b5c1f1cd46ede3e5a73e58650947474671b4c9ad7138d3ce5a777e6c6559ce49461a389ecd989d17f5f13c9ddb96d8ba5bed13f61f26d7d4f6df919fb4f8bcbf2fe666a157c510b5c623fd1a46d1962bf5df1badbc52a6afb7e9065282337ad2b931c5f8f12073ed653a7ddf67ae559a87ff604d93acfac1c25e77e94cfc98a4d2c27b75f36d38e099dbb13da4671a61fc58f3d39f7cd774cb2a6ad763516afd591915cb86abf6fe2b0aa2580fb95699728a68d38a296b59f9a571fcb2ce605b5234e1946204e8fac80b2d9c00f8d0cc62b8f0c0a4ffaccc08ad14193be3f72ef1f2e4aa0f4e38e8e617f268b2242dc28e8231172841cf6af11e49cf4f2f5566b9102430fe2072ebeab5a7bed43c89863a6dd18d9591a58cc3c42287336eebeb80565acc8b92747e95223e42869b3c68fba2ed5c445f698075da49bf9739e5add244372b6afb9a53f60191859286ba9ece30726a2342f12eda8700842e6fb91be4decb5cd042ade72d3d5a20596a2d5ca547adc29cf04b7b76973eb51264f9553c3a4cd22278f953f59531a788fbe99e8949c62065027fdaf9ce7fa8452fb15d8e38792bbec26b9a94dbc5e30295e661f237b832cb11f63bcebfd2f56b5bb4e87a6c6ac93b336821dafd0f65e37d75214fbb17542629603dbb8c5b8f3c3edaf3beb61a020b4b33846ea02ded512437d075ba7d68e3d1b6e0ebd355225dab91f7b2a945e1f2bb6ea087628f636df8702b89aec607ed929a6d5e980460f93fb61723e089e7f3839d0eb7b5b610685e4fa62c8fb9925d13f20acef8dd4b501f938c5b877e26dca29ece4c49015d3cd1cf7c9464d513e9694d7b5c85278815726971eaf73495debaf9c3a6f7a9c498f4ed0e364df8f938f5c8e5732a4b262856af9695dbd17e01fcb50ddc94fd44b2eca317ee0c5baaa1c6c4fb2c8dbc39a272d646ed27a9b502c329b36130d5d68fa750a3d0c58ad1bd9ba9742cb2fdcfcb2e8d9e45108eca9a64b603fbad934df9a6e9cd88f53397b870cf05ccbf71ce65b63d7ea1caf926e088fd88d63fa7186a4e9c2b4a7f85c4836ec94484df5bda1cdf4d0fa4205d1c94383e9af35953cf0fcd59bd891d2841b4995c40b6ea46f6173d8c888ec9c909d33b273216e36c4cddc5ac28d28eeb05844dc6af5a5bf702388aab5eb2c47ae9d2cf4c85625a7c9a1ed4e04548e4dc9394238996d26fae45e6e0b051ad6d5faf253924e1f72ab075ae266a0ca360361f7cd53aecb09822217c87da3ed30e7f7e5eec77597ad7fb921e6a9b259489f0341789896d191df93a6a4dd99e792ad9ac13a5fad1ba83f20fb579fe186ce83618e6a3a50c9fbf1ab6f9f0670921bee815ae1cda8869b3328689037e30cb37fce7cbfc5c9a1e9fc2905ec7cafad55a3384ff5ec577d668b1ea73606991a471f8fa0c7a936bb1ae7a8d0ed30b293a21a3a6c871eb91d4f233046b1baf79bcdd0659257ee70b8ad449ed4ded80389b177a7ec98c5412fa3ab781b791c1e91f0ee151f5673ce6ca4e9885bbe6d1ab774966836531f0ab70f3b3bbaa2bd3ddcb4237f5483742d07c66afa036fba2e1578c09bd97cffc2779bd3dd160d02a82bd51b291f1fc0a5bb89d506d423ec42ef6f3a97aafcf68014597aa04977725003013e1f924fa6d6c8d6dff207470629aadf7bffced0b9ff5e4b2af27b430f5c95e40b9e77b6eec49678ea481248ab56bbaa4597acbc1da7abca1be5c29fc6947bc2d3f57e70e3ecb32ff6d66c748691b47cb0a3b0c0b63448b0190c142e6b3b35b294144596ce9d31b5b27aa479a085367fe28077de2c8d90d98c035a7d186c63da31a3475b215f28a8f77e5f83d2f9721b92aa5bbd1ac8729b7bad9fa501c2d99cdbfdfb0b8051b2664a9d713957f1a887a9fa8fe6c83e1f654050a346aa7abe9f1ba83bc9596f8ddf8c74e4de3f3cc9b5e5979cd686eba7a68682f9ab797a1435e2c4777ee2a776de5b7a75a19dc5d167c062d0ca6de743bffd2c07f5648691ddc0167e523bf7cf95707f78f9086df8da7bf8979ae2c1ed82adc50256a978eaba89b6ebfa5ffe7fdffd8e5d757d69fff5d4b1386068b46017601a005eeb5c5a2669c0b655d0e207fa1af173235c95007f3fc5a8b47ebffc3bbe9545ff1faa0044eaa8777d4bb94c438f39c43c4bc60692e249e6cad2d56d1478bf929c829ee649185788596c53d86ed37a707bbf816cc4cf3dfb331d18d73dcf8357012e30379ac1084192bef6302cf2af33a7f43ba717dfb1e3eace450db0608c6eefbd5cf9bc58da28f5024a8b2501a55f6a86db598085650416fa3614c59c4f063df0da27c5cde1e8b4e96df21c183e3e801f00543e874a8b800a1dedf31115c55c7e92f8f82a207ee2cc24582912ccaa8595348452bb0d990bc337d36affd60add0162f783faa17616f3439ba6e61d59a1c20267a5fd47d1e574965fe4303c03b5ad355d9724391f3ae0b23a37074cc91356655a64eb1a4dcf115d6a0f5bab7260c57c65349ff376422cf432c1aa061f50f7d07641b96a9cd8f9ac3bb5e0ebd8cb5e9ead84c5276a895126c192acfab71a439dffa8509460a07709edc00f80a071e9a2c9d1a016379a4b55ea6705a4ca6ed45c46daa4ae67aba184f472b61abd9e1091b6a8ca735f63de0835123f6e590450727340b2c8b5ccc1c4a52f8c9d00020236a8656e2af11cac41ffbf801a93bd38558b6c34981b5230a89a5aec8cb2882fee00c90ac7ec15cc908241d6f291ff6cd92bc65324549587591fc82154b07d09a6a4c598056549ae8d9a16c34b7a49026a719350aad6caa975f55744a3615215699a1a079a8eaa3bf47e122c2caa5ecf2a220e71d4b56aae3bc807542c7d55e21458ec6a7a6656168b2c7eb16e968caacc276625d7c2908ab2c80a2e18290d47c712a8d8c0c0521460c383b964558a1427c1641986ed483f028a4900e54edc0c6f582bab5a6a8d8b001b537151186aa61a9f6755e5d18bc431118b2cd2c8ea402f23be772a11bc6831e08f5851d64fe8c9ec50c0599d6a1ff4746e4cc7a0f2e48d96dd7ecc8eaace037ab24b3c47f3397a51d6d02191e27bb401f5cd1123798b1eb925a669fa96d084abd7a93df10bb78c6b8f8cea541205099dd35dd0049dd0a12df92c88c7f2911ad774f61a6b12778d962666305da637429032d88ad931cfd9fde972c7eebb3fbde61d9284cad8106911674bd2b2a98d8b2a1880262f96e1f248b375ba7ec1a15f87df877583e9bc4aa45d69e093d0befd084ba7c42f6454fa665778cd620dac24954b5ad0ff45f32d2365da2d2a650f7c6256e3b90b57dd48a2539ab649b63f2420ca261535b8831414a24ada642886740eb64409468f239ce1e8838482f60ecbf95c61d104c1a7a64ea0a24a3eacbd2426c0a045b9ee0c3703964d4f8f1027a0ca76b209b0a25236fddc96f113273459c6c797ceccd6c5aa4caf8cc6119fd3a13519d1738080c6b417df3048e4045c13cd3545a3012e58b94d42dd76333224646089db607a46f0ed345f646d4ad30eb9f37e748dd4e3c3d748f6ead4d5e0e62eaed5e53cca771a8a68a7af2d509b639ea04d7db6a0bdacbac449c0faba812ea34ffa56d885ab4cda024b9067d4e4bb337984a9ef15a129cad49777180ccaabeca97b051e74126e3de7a72499cab702fb674666767a5389a70a6d0dbaf29a14ccd06e29dbbcc419f4403e087f829e6ce8bc084a1dacdd4f266683f7645b369c9b9b0d9e5210b34d92de592bc1a226fed0cde782d7898673b325b937d9ccad2ca81dadf5ace753011519aa680639f0b1b8beb3573edf316b75f254b765434b2278b5b2c9d9a27a9a03544c395b196e99d19787d372c0f9812991e9b90f64488d66185e1df0c65583ab2fd108f968871688b34ab52f98fa702a1f414b179755c2f822cde847360856a3b475180c49d394fa790401599f5714ca143eac2a4223bb44ad29300210acfa781e1aa94f3aeb2a8903d1e734673740b8756600ebda1b60888a6d7a3fbbb81d83ba566b51b3b00ffcf09a03ce5994db215b6df4ee330ebc12d682a3abb229511d5ee410c06a2723e08bc9cc700316af99fe8dc3c1200913e12dd88b06583dd461622f60c2563764942874c305e2537cdde6371bdb8f104dbe3f36124d6346787a7ddc006701398e8b99785041c63f1b0da75ab0aa596f2e9ad5f639a656e8b5ad4fe426743cd0fef95d8e4add8688aaccc9ca2fe95c6d01c9adf2ee66a0c007a2724b67a0f0997afa089c3f336029aa6445a72fdcbcbdc784712523af865cf2c28b107777c02a62ceee80fc0c3c22663f8149a10a9b7d792a483469b798d3938df4eeac520439dd5d30e42e58550b446aa19f04acef1deba4be924f9df9cb22750dac3e30e7e1d77ab98b7e431d9eba39894214529754cfaafa4afce0766faaa02ab9aa11cb746ac8440555d13c77c940a795f63748739c0083760aed6fb53ef11c8c9eb4a34d58d4d68db5dc4553c44f6259b301db1fd7bb47ce37cc3ac949c3c5c9f9a0ef5edb17e3f57c8701b40e6e663ef0fc08b8c5e8f9866721480f7e75ad4f4ce7bd020b41cd36341b80980c46e5a6679c1225d06ab094726e338012d6c0eac2ce27abaeff066626672b56824533375b7d54b511a4e8d94687c069f2c33d34335b5060f0d4f4c46c5e2524d6dcd689d9820283f356ce39a47835999fe4116b145c9e2424246b89e9d22c97040d672649599f17d2b6dad4ce59a3f720cdb1657dc9bccde7263925d54807fe69896ab6a1ec82fed8ca7030e74ef6a880c0c12fe68a4307c44af206571736e1d2b71a0c1c626522a52c440917e2e4745181c1b915d385d1eaea13cb0c97fddc7490eae8540ca1ea27682a8dd832ca0b1783d2338b93604d19c208fb904b8a9acdcff2890673ddda8e63ec0230ce728ad3704bb7bef15510550710ec053113a4d27061d113baa1fb145e66d4deee296e710aaebe7c2e271ce7654985c2754ae910acf660eed034c3045e71d49502533d0e6dbe30cc92a8654ef234948904eadabfa4cbf79b8073b58e903e82528a069686d3392951eb0bfd822a4731040166bbbd1b66ee40af1651a0dac30d69693bc1bffbb3312353bc0316a894520af7ac5d9afcb38d8709483f0f0a466873ec55a56a262606c4bfbe48305ee5163a2cdc60d7ddc828f4451a2c8ef2c6a52bcdefc1552549f870a821cfe991f0510186380b98b302e4ce24e77984ca28c3e6073333462929b1fb9f4ab4b07b60d14ab0aa074e4d076a88ee1a0e1af2c8e1dfa990c277e145c99839cc41315e42d63a403ba11c2830ec48b29fac2427754ec371cdd5a9e74993062ce71938efd416d684a209b8a0f6907c7367564a4df44299ede680ac82aa3d6bcea19c82c2b3700eb66830d0b326c0bc0273a4339d91a39bac3b3ec37461682ed666ab3c32918d0b516daf1d8d07e74e54d9148c52ab836e8765444efb05ca800a43690de104b1424ffd7cceb49e5a49d2ed9fc8831c3a37a1a540fbc43a0d3776364268ae41d6262061c2d908346d9b6139f36680aa0842a5aeea6f8aa6b1a6215d030a7adf8def57670648ae235c9f2edd42b272e275307f6fb67c6b3647cf2c5f045b85c00d240f64cf18485931d5d9bb9ce73f3a956351f978026c29dbd96c1c451a9b0c534b4b14003e899540ae8c08dbd792f130918c6dd47c286bc71158a3bc86627d8bd3eb3b2c446d4ac206ac0fa50aed6fc15c75dc5da331ede04408362bb8dac36669bc90e220b4198cea895c750eb1f343c09a211ad208556f47b842203de83e3807bbc18090351b448b0633095853891b645de34cb2ba5770d968b838cc308172ddd0df7d8238a38d2caa0d97ed9738bca3d351aede81608a580240e7bee3d4c30ada20e44577f0477b5f9d5041bb576752137237215cd162c23c62b6d04d68bbbdaf2f0cef6e624d96d32e453b8e8e8b3c8aa40037c88e4fb1d380dc638ea61c6d7fed04d8b9ecec382b4d1c8dac211de58048dd675f00987287e7ea80d7c1d2add99cbd79304a4716bcdd4e5d1bb113c4266bc8b13b05e6bc81ea3af6e52c61c85c6fcbab0d7327ae60f88e4e829770bd4414266a9480891a870c18bb5da4ae9a7378047307366ce9e0255855fc05dc30740d4746943b277dfec6b59fd0e0a4bd5bcc56f19982019a89e096c9f5558db2a9097972be458519a29f044b8b045ba2c67219ba93ad7a9a389bc9e92a35bba68c520c0e35bdb2e87b174e9f2c531a5fd9b59754b33a2d5d8d04eae4cbd4dbdb3eb65b34c5c3d3e494d92950aaf51502f0c0f79a306c2205fe4127117ee615d397058f7747719cc798b2860cf1985bc5bd163a6c8f198101a19421369f6672dd8ce39c44d307d4e684e972f498f6f872f2d5f9700d0a36fa3254be355725f775b0706fb6ac662bdd7e8fc256907f2ab45f8862843ce14d017beb3a9a2b8f9cb67ada6cdb2da8740baa069aae832df7c0e0dabc0c06d1d4eb60e83eb806b44e731d0a8cd8eb0e4c38d6d7c1a00ce03a58b94510b0a06eccd61ba173ac9fef40e578070a2c911b60d1dd0173e61641a0edc49dd93affc814d42a09af439570070a5c4037c0e23d30e8a078ddafba1a1477d6d6357c9882f2f90e54be3517e83837c0c2bdd9f2add99cbb359beb54cc29a0f56ebf0e956ecd55897f1d0c1c49d7cd77d3ebdc93ac1fef2179f0b0c9100a1aa95e86caf90e5415fbd7c1a039eb75b07c6b36284e100556e4d93c35bfab139ba092568bc32895087ac70681ccd46439492830da67c0a04172832bbd6bc18cb2f8d6f92028801f817928b4f7dae98f57df87127cb8bc0bc6df025bd21d3078dbe4b26508ad2d5b9fd68c5953e418181934d0defb86f5aab72038bde746ef5c6bae636ecde60e271bbbc721c6d500c1bb2388a2527cb543be28620283496a0ee0ea41bb0e07e918d7e9525f34b891f8576eed82bdb779ebffdd403256debc7808963b50408f1b8e8e700b0cee8f1b8e8e7407acaa4e97c19699ced41ba072072a1d3dcb302687c9b7c0967bb3c57b60e516456ac7d5ebb361d3f86b50fe1654ba0505e5e237c016730b2c943b60d0f0a481d59735ca41a249156d0ebbba2394c72285b30a88e42458bd3fc4d5366cc80ec2a74fb19b52ba4296809c9f8af31d26b6343048029770a3f5d50e5beda3fac2d644d7d1c54a35d5726b2b9af0c8b32bd30cfa050ee36aaba2dd005d7d37616285e046168010819823e9a25035bd6e6f46c1430871861bbe8f833743c70222df814ae90e54ede67c1d6c397a0d750c16fd2db0b2dc0173ab38b80106af495c07f3dd030b5350f0aac765a8ecee404138f00698ef9f8e98dceb720bace43b6050217163367e928402c856348c1b253cc89f0dd0f6072f2dafe7ca77e6ca7373d578769bac3ed2380eb6edcfd6438d66933f35716f02084abb821fc2d9de54fcde74f2074296f1bc666055414318418d33ceefccb55d543a2f4f80bc84108670e3dcf65bd3c91fc8d6491365364111b107dbe46c7c6b32b5aae0e680ea03427108d73f51f2bdd91490c7dee9a725404961d881cd9ce5d9a9a0be21e8f7fc04981d3e4d227f7aa8195ad452b129624489e106cece888de9d9ead351222df90eed7ba0e16431c8c9aa81e1461e3ea3732d702e3b4bc655d50de2bd80d2994f236d1f926e05e06235e0c883bca45aeb8e9f4046b9001b9a5dd928b8cac8e2da34daef2c88e914609e9d50fdbd9f6e8a956781ea152812c93b148725e0607b06f55491ca0fdb8055d9b17ea51de0c2e54cbb59d6fbf40065275fbb2a6e0261f7c01f86c9e4b4fe61985a3b98cf7b8d7c1ba85e45f9bce1c12d20c81d684c04d990f2540d8dfd14245c559edc4449a4fc81d9f279f3f03b3090e824f3d38c4670dcc7a1964be307feceba6a82e77927dcefc2d4e61b3f0504cdd61b25a2b94109b8f3f235793b0b53acc22fc549fca0d74914eea6d92d865a910658eb47fda9c085c460399f99834bb23f506d5b3301a5e8044c5fae69b1d34041353042fafb89a2e845c255f2177b4de1db408d90847bb4cdd6eb60e3ae33ab1e24b07466d21d0d62a7d5e0f46eec910ab0f28704ebe4f028db00e46e14d54b9a95d3f8f9b6a4e08ad3807edc09ce4840aff73c6c3780c8b948b0d8c11d7878659d4a6b264bf38daea7752a0157bac3e3477e6168f199bac7f9b3ec8139ec570b76a504d5ca4b1c3ec7908c02ecb591f194681c88d7cf3af5623ca7895dfdcfeecfd64bbc7460524dddf2da6ede066cc6d9d5b320d9110f7ba810f33b7ff5bdf03c9a6d9c926efa72a82972288194e756267fc0aebe08531b2cfc1410743a90352e7952a62b52f8c95db64bf5c92118f0b90be726eb7af1c62e596aa240bc140956454238bd4fa1cd962887a931a689e940fb9675347e1250110a6ed5724df9bf07546fd409c57a65f528dff790ab3a78d4ad3e88533f091df597d17d13b204c3206638bf3820501ef5539e0acf71bb3987827b7076c2b0953b7c33e7e13980ff777ba0ae4ab83cdc41e746894fd0d6ae3429effa85768a8a783d2068c84e820d33ad2072ddde5deea5d8c6d1dfda17647cbd749773cc004fd0380498c737e9ceaaa5a15eaf082f6b7ffec2684238e2255e260cd4bddf805b318b97d3bb6e1d5ef51730042780c00f1ed593b372070e7a03a985d50e0d62bea9a8d5066a6669d5fd3101b484fa32d4006c2e26343d9bfa4be5b289d81f582269083717149a9e4e2dacb2d5048ef0285c2e43d63aa806cc1ab2e7e4a13401f915afa7f3c1eb63d7c196eaa2b97f46a789a980e0362a17e38d7780a051a7b9ea2a9883094612affa3f26e487a2ac999baa383955f49353559f906a3a28679b0b5ef750537be52617f601a01be879cce6fb5990da95fe5780ea1ecd3c70e050f5d867da0e4234cdf15ac9c91d078e00d3821adf2e150f1ec802d15b44bfe2eef08738721f54fd543dab2ff96328b3a10d4d49c38d183ec95553028be8edda89c4b19a8b77acea603585aca71ca4c1d11936d4b3b5a5c12e8f48661f2b65b3bca630f01860fe61187c3064a6377f543e95cdaa6cefb015773b36efdb47d38ebbebe46fd37e76793b12e51a10b4009e68477e07069affb478b2eb64c9f06df81d4a9c4f5614d17d9e4bda86f65c024768072a66dbbc2538d058e21c9220d8da7419fdaee72d789c5a9c99852bb51904ce360b267f92c3e48c2b31ce1b30b5fbf55520370904ef359a8e134553fc617cc2060508adba04e0388c12b206ec483f72fc83686f70216ab8a102e85563f57e038646487d128c57bf9120e3de63d0e6308b884fd1873b759bd01485a800eb0a673add41c3ba068821fb09c8ea991590ae53ab470dfda0f1517b34be46322694287865b2c16173e099173117a36efbcd3530f4a245942d82a8e3d0460b38c0b396a574f389569e23c6a9ef83b58ffacd189234640d586933b38bf5ac9be16ef4675179d2e05ce1474bb71d7d94b135c8cc0a3075a82edb380e2e327a3d63756a0a79538e184042f602278cbc7ea08ba65d11287fb62552b5946b204fa75c33d34238ebb9b2061b76d4d793e51bd744bc73b7dc01f2f838d0e741c096eb764ade0ce3448045c2a17ffd1c4e61505fcbbbe8909905724acea0992f9ba60edf6858bf25206d37e15c26460f354473c91b3c2f6b539bd50d670bd5a44630dfedf6f025ac95580d2e634cf90c4afd1d4c533b91edbfeaefa9bf8f27fa6c42a3370158e5b160c9114f828e917548529ed0327215d4e69a390e797368ca553b9d09513a7daca38a88c1780557f330865de9f8428607e1cc329a6e78ab9624293afa39b63827b75dfe6483efebfc304c7d50f1a21fef060c3c2e3991ac0ecfebeb9417b9a4712bcd1430157b1fc78386bd106728cb70bb0e1e4072fe0e7340d961d2a95913d932d0c802fa4b341174a88956b0ea5a6b9648950947704dc68b68b7eb24dee87c427bd131d850b1036f5ceec4c144735170538a830d0d6b721ea6d6b7aea4eaa5a96af88b2e3e239577a57ffa5642d0e451507f81c7227f03089ca0f6a297f1060cbc35370103f9688ddef5450b739e0904ea7d83b3fdfe8e937356fb4b00f68c38d606838443b36da679b4abc2cbf082d40267749f5962aabfc03d6aaf86a66f0081cbc4def0734dc0c4a088673bd936ce395a4ddcd435411680c3ac23e83093c4638e1d5f8dd38e8a578059eff330eb084ac5c4c5b6d9828304a0ac52874a777686f93f704388c07b2f47ac1d5d883928c85e308cdb767753f60ced24dbeb9423a3c478275bc719479edcca03ce3103da806a2e0021b3eb4020e9e7240460ec18609874044de2e58cb34b843e62e9728734b5f2fa28f8b5b35bdf7abe0a64274f7c964f8af6fdd247b1083553550dafa107af204f3c3eb75e000dbd34d9df0672ee7bb7a6447119ed3154028860f466c3c66dd8746cb8dfb361e8ae3e23679ac1071270193f482c9cc551412677481db6dcd82f851f2ddd911bbfc2131460ad7e3fb85b8597d1e929939f149d16cedcb732f666594dfdc5e4eb401eafaf330d2c2a9eeea07acefcce4c60fc25fd40c52253cc8721a1955b53bfd13390f2679d6f0a4d88fd754fb42e13f5832bbf898bbc3eea76ad2c176c53776e7a8722a7823c5931d3f009ef3b53a9bf541a5ed444ef00c1eb6ff0f2f44f0379daf21f80b1c6c97daae1b48b2c51d5b38b08de028268c472cd8f7507a6c6ca7e0328d3a31327dbb46af5629b6ca7496f21f0c0e7740837f4e35611d30021635d020ead05ecb88970abb1a2e086c51449c2598fc9c567d39522c140899760a3503c049c1b1cb87e24dcb882522d6f1572126e986b00b101e13833dd7c432742a85fae3fa55fde68ba902518bc943d852654a60840e7670157de17801b820e8dd29541b3960a533b01074d00a69e6386f673aa8529f849e968b38c382d1a09078756c285c377ca85f3d3d2bb98670e82d5406c70ed2555841bb2f6aad036b85434dcb8d9cafaa506573a3cc745b735278258cd74d38d24d3aae00a386b6697678202ac82698a9e590186dc613a3cf32b2904607d66d64de4fbac0aa0acd60a1daa23daacc74ca4df981e6e24b4572553a6edf4880e57b81a1a02d0f7bc36164f460256d7e132212ed653d7e0ea1e2ee7720d6acf1b9ceff5de316f573f49fd24c66ebad106ae5f6c60f5244d6009b16b995a340db8dacab92b2997804372060517ba050e1f0470b5137abb767b451862a9cc17c2082f41856bab3371d80142d8b55687797bb3f1a0424ffb197a23f5d8cdc004e86d8ae102ab71d40037dadd384518babcc98050afea8e41d3a29c89bdee7a9096ec8a7635f48606c4d377e9baa0da2f093483ab5d8c8244e5b2b15d1cbd320b01cffced10d684de5caa47b851f36a530067e626527f81b4939f02c2ce0a790838ae67735639f93a1a0e1d6e3eaa048b6ce63a1e808cbffe3cc68abe1010f5d8899a8899aac70dd4d40e40eafb72b57dc12410445fae93a36a65b71e19c9979d8070fd5c865a75c6eb50ea9055169e20a23572ae9a26ba8c0bcabb9b55175ccb09e7ca7d7ba8290689683dcff8f4721c814d56d24e4ea661cc1cd02ace731a82cdd5234fcf267f323da87a0c921da6cd0cb86a5c341617b9b4e943b6dae3d7c16eac4c71a1fb2da0da1362b95ab97f07a82a3a770a442680e0de139c5bbd2fe7ed55924c57ac0d8c96891e29be28b8d8cd3674b9d56051196ed9d123ce4e814e03467560365b67f3f0c4ac77ab04adb6e64cc78c780cd8a721b4589aedb247e7cea85349a775fae562127c0f3462b42a108433dd68b8b95ba687ba70be27505c6a6fd601d864db8bc9c956bac95c0cafb77ae4a9e9a75b661a51643595edb96aecd0350ab086fcc284e9bc1a91b9f33c8fcb80182ed76058fd49b350f2070efb721e3809a69f4a42cd2914b373a9fdaaf7ee44ec6945a18ce1263b9ccc4e277fc01af613c6965744ac01d399f632b10aacdda1db70388815bdebaf43ad065d83ea5736b3cbb3d4807b464c9535d894f0e8818673851aefa87fcb1de1a7ca8b416c4f4c15929caa143dd5b8cdb03112ae7687b97a986bcdd304925b969f21e28abc407143c6a9dc4eac513e9b6b355ec45c55ef89e78e79b07cca68f021dbdf40510de731b1ed4c025447c67ddc6627521b0c3ac06f00594386edd921c132089c2bf4bb6b3a9096ae6e34e4d94d293299ba3937d2770088a9640dd07427b30fa0b4bc53fbdddd9ea6673472aa9a532bc0aa279e5730dc3d3f375bbd6adb74351337edaaeb6acab028b8383b5fec29092fa79dde2f6683e5d46c294b38f0494fc181c86a706e72efc09727e126e783a23101e727e1d4be8083de5f4c3bba030429a0fe6aa707839d147e0208ceb4ac93cad87c8783475365c63dd8148e77802acc35817c0706930b8767f91310986a7101829aef5c01c142b72b20a91686fe3048aee1b31f0689f036ef957dcc3f0301f64bf7a6db32510f1d8b82ab81e88b75d42b0f1cdd4cdb355d8700b7d03510b8417f18229a1908385882ca354b2b9fe78714f48ce027bdaa32eeaa6bb1e24300aa0987753ca0c1895a2534f887f9f664595905676b16611e798e44c56846eb686f07864543a830c6fd6d18563741ad7bf95e187b8a459cc53763f08fc54dd21f8293b6f7614f94b8d717e1c780db982fb9d3963b24719aa331936088e7aed800ad6f82967ad36af9dc551105f2f0fc9e5ad7272a5c96edaaecd94ca6ba6c2fc890eb106e0e0478b55f4d39f5e642871bd1c9114c0f3fae646980c94840a3c1163700034125f004abd1cfd5b3b63a7bb05205d4d00b041e9616b6ddc0cdb06e95e0fbbda7d40e4439d7e6948c28025585b2dbb8d53b37ce0b047f9f78ae327480c32d08122e856e0786705fffd7ba68e68e4f8689b9ab6159ba6218013774c4670596ba8d1be73c8293a0255ab98e3187b72fa428976f858b67190592cfda54a0ef7a3be1b65e4d44b1051a6cb46debc7adaf59e9e61a41ad483528688ee6a75e722f12ee0e15ab0bea9c8a0a26d7c8ed996ab64a1bd1e3cd74cb1a27fa17ab00218025c93880ebd66c2f6aa8531090c72c70cbfda2868d056c75a7e327254ec2add669e98279337090c72c3bdef50c3c040c4601424b9f1940c522352c7ace23655193d96eb2bef59c90e316735ef7f9f8a00e3bca196f9d99c9c5a9bf400eea7e4ec0476156517215a65c870132ba6b56e31d1870bced2bbf63105f3b0fce1c6569597564e89fb8d559c2368ed8a1467bf60041b049a675dda1ec9074c2712712572a943b8f1ac4a4e0aaec988083c4650108d13c09d82b9c4e5d9a72ca7add8af28995de6e0f14126eda0db9a1cdb8b01cef966b071afa4c5d078346a2d7c140dc5f07bbc3d6ea2f204126bc28f0c690e8390a2775bf19c0d095dcc14ce107676ce2a8fabcc50f0aeb4e8c62e84e205ba27670739799b94e79877adc09081c0f815fd5bcaf3e3e06452ae793d5c7c6c56c50892e661b2a64d1694070814c00d6722dd3053cfd442e12eeb8c0b5831c59164bc0426ea20d560f9e99ca6af380a0d7bce277602064292a857e0a2657b2fc28c4ba5f8741d48f80d417877e1e2663d7a99f05016dde5f8bf1dc81f1d5fdf67108e82e289a7f667dd6a61e0c5a0fe4c454a0efcb73edbd9e6c4e52aef27f6636307a4c97c073753688344fcc06a56a6236d70badb15109a92702cfd0df1fc316b311abb1e98c944e308f7c0e50f9d90021f553020e6ba3e18b460d2b96380483866ba2536c4f9a610740a887112bb4dd8ccbf0ea81088b80ac3a6c3c7787559d52742bec0ec4b8b836e9a052a7ea0d8bd8ac860ba943544fd7b4f4840ddd10ac5bdf28a051160516fbad1880d95034dc3207070fc749b8300b475db7f664d9b8f0053af63703244e52a5f6eb7742c77447bab3b6221b2bf9c9bd03254ec001b34ab61ec1e5a0e72b93bc02014f319f9f838b00c6d8f4e27a8826f06683eb05ef902cc09c0d2e94b9dd5b54cbc6d85f2a032878ccd55c0eed810c145167b830edcc9b20b90b57476c5377424da3c483d140070dd7920e55cf02c6a2a88926bcd8bce18cd6dc2328744aeffa06fbe1eb1ced56e936b03a47f755c4d1edbeda40fe624ecbaa89fa8bfafe0d18704ef989d008bcfcd5c8b0746c3536eb941baba344ed63c0b8089157b065c9b54daeb7eab73a67ce12a47a7782668b3c1388310ad0ba0ef2c0dbbe68c82a282fc6e0335953d7cc958b2010ecf013dea4eaed6a4fb85bbda4651815e4961bfbdb66c72f165aaf20e1d91b48952149d0a1293c96a869e0a0a603841e457b80c568c07555a07f13b3a4012064820948342ec6ef420855c3e9397b06d5cdf1fb2ec2ce8977d63376e566483f40b7be7875fdfcc10e98cbb5f0b1dc02ab41c21b70f0af1b70a0db5f87bb739ed478a8f29d1e41aa0fd89faa3ed0cf7c244f1264445c5f18483cf3ad88feecdae096b7690036d2ef93fd3e82790a41f9b39ebb702d547803249b29106cbe1307eba90fcdee3205446d5c1ca0e8873615c473af13dd82257b1daef69afdde264fd272c3b813f722181b6930115c766197fa7eb9b5aa8594b16b60f0c2f175b02a526ec081a9761d0e0a486ec0ddd838f597f58a8de77a7f0a6ab3bb99400758f6373bdc5a164456cce5bc06c847bb0e768722dd78e9dc870def12ba389a085a61efd1109a8edd5855edc8f63d6accadac6a6e36ee430dfd7d50bcf7cddd725308ca1f70a5ce2c0afcd84b1a4c75f07213e8cadf5bd72c92ea2f1e5f6a3c81a9ad6dd368aaf1c220fc6c8f17b57728d32db06a1edd80038fec75b86a2bdd8003dfe375b83b5b07e56390d2b60fd757c9b5ad8bf8bcc8c5ad2bb7c06a74e4061c38c5afc3c9cf40aa4c9032a6ee1468b0b1d0cadf471144c96c9450e0d8c10d71042ffa751cc13565772b158ec0c0fb781dac663cdf80839dbb0e07ad89eec0c199bb0e57edbad10e8fa9b9dc02ab2ea21b70e0a1b80e57a3ba37e0aa727d190e9e116fd13387bd7d300146b998ea2f95fbe12a6e60d8c9a301aa97b21564c5534d089c273bd8ec4382692e2041398a71bf998a82cc7a91d5f31817d521731fb2747356745b01a07aa55943163d27c4dc05641c625bbb1fcb851a8daeee82ad406d37ebd2cd7a000aae195dd8125b0382c549c79f025c342fd429a3eecb3098336cb94f62aba583068d7a56df418ee784d7bf048962c746794ca2a241a1b81d22a6a7a078acbb0a54c9f7638cc195bbe587fd8e6c1ad29b0eb29f358d67ed0eea158ca16dbb8c0cea4485b1708006c90272051836ceadf7373dddbf28c0be91d1329c527b096beaa7cbaac5afdf054c5b4059ff309663e0746dee79dd58e0800de0d5e606d76592d983130a7798b090bb9a28ed4750a0a0ba34ff842e1b77c325d6485783ebba14b80391005a8fd3c569b273de98795c876cadba91cfee39e14de94017dc76d31014350863f649f408a569b059213b929a5601d6a319e2f9d58b14120fc6b80e7208ea0cbd4963f89b56743c0f7184ae27940d73299cb65d4ea83be0e8dfa20ea0eb3ab50ce783d08200d4655710c2db3f95d5d469064097617d702cabc6b688cb485547dbf1d5c91d10e58698762d9421172c5edd8fb01f8261cb585082b357446e6a8ab89bb975b1d563ab4c01c921dedd3eb87653549693c1ec6b165e59e4e8293e68f5f062a9b2b3bcd97210c27bab20e1be76a3b26639a7a77a6bfcac2a8c6ee6062b0923486dce4525878db88f8a6ee843d5d1e4e064428e85d7c99db2287a2c0e6a74b7cb4394b6ec3eeb41af0201076a5148fb5de377542fdf29ff4eb4441d630b99a8edbdddae2b00916b57203805b9938b63078ca7018daadc1f1fea7a2578fd68ac3113f29912170db3e7940a8365d10c1828f796b8553dbca1a60487b4e753d93f8a38266ad0807d59e001756a0ab18a528d8ee45623f5e24145a354c33814cf753bda61cee454396300b82ebdb868cdaca2069b21e78ca4da88eb7d9fb270089b3f110ec8e8fddfee587aed89ec5a8ae53c9c12f7b3b1dddc2a535480f33a81851060504a817841677c77c13b52412433f1bb525b67108a6879b92bb79f2d837cbc0a1770f559b53aabb6b868c37a705902c3069d22218df1b18b24a240bd0a58d92eb60f7557b03c36f740bd6b80ba3c4715aa6a730da9d124aba883b163619e8c02ac86ffd4f50a9c13b56da9b43433623a60c7d865284d51d57590a00509c8b14366c13b0f0588a37949daa965d6efd5a5556b5280f64d05c72eab6af4c71ba2b9fa3378e0be99aaeef8d75dec5e816edaa31ec07a54a01b0fc9967c368e2c2fb88104e0056c213e14cb1d6c6b28b1c176cdcdea59dda7aec3363b420dc9dae0db5f688ddd24a184e8b2fdb10fb23e422420fbe68f3e8f264d24a64958c6ee6c0fd7593d310d3475af9b1f388ee0a08949a7170a0edee46f716e51a05778c1c2ac37dc2a70d0925610474fa32b5f15a44a2695382f5f5e2a63d21a0d39eb3a820b25a9e7a866943544b4198abaa38b1b93068c7c0909023defe7d020de499c4c0159dfee92a264687d814d2c1ef9ee77c4ee08eafa6fd0489276c6486e8f4333cad667fd5ae7267af9ebdc1682f87d7b6405e6c8f235fff1e500eeb5acdd6b0a76ecd183167ce299929a0e50e4a366072e92a061fba7bcc628030bb646b497e4bc53a057ce36e05b54aa896813525580c1a446417679f0070a4acd0e12bd7ffa76f5479e19308f8b2a9970c2917440a4fa55e92f0361c1b6e3f8908359d9f845f7573c60066fd40b3a7d058a1baa9b5617def525f1ba8ff7f60e15a07d95bbd07db7b79253fd19bb0e7e75a45d48625e4b4d183081268a8f3ce605d4070e127e8cece319d0603fc0eaccb0d8dcacc6fb8c3827c3516c38fb14820b56c45f7c1cfdb130d24522517df79be51902af701907213cf05ff4cd42356b826c62ee8a8ce3c96925786cc45a3d63de083dfaf2f02b4652bb16e12c88d50a1df8441b2a1f5f4f5ac09e5aab0db7fefffa37cf543258e5b86ab9f0099106865e97be0eed1b8e294a042c519a37bc96f8b81a215fe759ad54983b55353998365bc03812a35e1173a850d3ffc0d7a9b909ac25e038d80110fe86cc00a448efc2771de66d348679ed0b7176efc3199d77afc2399877e1fc3a7cfdcbf00d2fc337be0b5f94117fa521d4d957b5b060b31c2002fe6d412aae6a39bcc7136b3a5b42c723fd1dc60b64a530d9c3e85356feac17ebf414456e6a19fd3952a7ada6da41702a56bf0de1c15b2146c03d00658e37d3b575564a391c9ac856a98c5f877d47bd326a998eba5f611d9596b74ec79a3b6983351440ebfd47f57f547f3cd541002df59f1d49b1b3bc4099e3cd240a8ea4ad51062b3c23107817717cac93ce4d60d6348f6e83d0466b7393842c542e8d6c22057f3387add7a878b10365fff37e0b34bd9db8568834d45e9acd66ba06c4ee91a0f6cce63789bcc8abe243443e62df7aad920f619aba993d085e6e625abe84f57f6b0bf8d20526f6583cccec8eff13e4cd2ce919ccfe0ee0407b42a27a5058c6582b2ef61dcf00ef009c6826c872f0a55f1439811196ac018e92abc2a772b515b2a5523909fda5fe05d51280c653001b13877b11e2602f1ec8aaafb92c9cd076c34634c963152aba008e0f0988cd3ad1bb59450e42db961715de40343a792b42147a2e128c31424f17e04c262c7c19dfa720c538a42b26cd33509df2883d02551afc4de8be8711e8ff5f826e30b3deafc7a03be7147d0eba537ea467a06b67dde48f41f74dcc605f25c8827b976470afbad548877b0bba7636b0f31c745f445df7ae6bc2bd4bc559de75ab99d9d8c873d07d1133d8d948e433d075afd3195ec6bb6f41f5457aee8bf484f7e808f0ffefa12cfcffbb24c1db748417092ff32ade85015fa48edb771d35fb2e85d1bd4b32b8774906f73ad526b8bfcc03c3bd95a1568fe90b97d32c349a1409e040e566bca0c2e8dc68d2a890bf88f366374803e064876dc4b6048539270e992226874128224ac943c17fc96c417c4b9e33f930548df152d7fe0abfec44b05f45565208be45d6d29691358a4ee64d403a97da821ab4c6c5163a984e509cfe4887292c228c9dde4f7fd2ce8fe9dfaa829c44b8aba751a4ad32855e2586341974679120e3c458cacef045643095ff106d0dba4983ebeba35a8112674c894da065689ea52c37be34484a73f1541194276941fff5f93f42d853591c246fe255b5c8a9345951deaec335e2257d9df2efbe79b8c860fc4f10359e1135ebf3bfdc277658b4de433701fd9d45b29709844665ebbe96d8940ef009b1fbaddb8f858711728a9319555a16f23eeb9deb46753959c9d72526bc1d4bd8d82011ffa18f3bf37af371d8f891772729c7a3a4e38fb7f1f83d34cf505dce47f11b23676fc167ab093cd1bf64e9e7264b3f8bc8364bb155d33845f2678ebb1f1f929824aecfcdcaad16a914c7c676b4685f6b3ade5f19a5f64f6777df652fff61f6ea2b527e27f97c7c86298fde132fa9cd68a759e67bb37e463c7c7047b1d531bea7d457a6b28ad881b3342660d582eb6302d752d85645c09ff2316add10583a51854170cd1914646506685097d27b1f85b2dfd6bcef6dc69cb3f0792bdbbfdbd5caa6fc8a8f5bd940b1512b9b8aa53c6f65fb5a9d5ad95440f6792bdb5769d5caa6024acf5bd972beb2a9fc94e7adcc9faf6c2aaaf6bc95853f55c7963f9d7db26b836dee3cd0748c509392d82592c8e47945b479cb8a40919df0bcc5320891da4e920f6c3e5be649084ff6f1780ec2934d741e83f09c7efc2484ab9a59e1d896a92e3776ecd5365e20e2d87e21f156055ea2b5625fb53b467afd426eb60b09c780559be4876beb0f7d99ebb847d7f7dc455604177ea3ec7b50887acb0d649b41c1f79ce037cf81a80519b0b1981d86f82e9ae9e6d3b4fb63b33c7df5a67810191c74f03802c8e7dc1e07aec9817ab5f4fa3abbbca5689abc6b42dd488d4d9b1e253209381b24aa48c944920a6f11a22d23861cfcca9b8c04d30e5591e15ef2b786d4bcf8214ad530890fb716f286334645f9ffa50609df2fb3679eb0227121485fac15c14ebe715d53d34727f3bf4dff9cf4e4f16bec01af61c6b20f5082e814c4a1bd4d089ff37b9c3e3f7c0f25d9e64b58528300febf2d6a67249d6c4fb7e06d1e804aad8b5deca2a4160ea40461126e27315112ce27fe66fecad857485f3970baf157a6d3149f72031cf86e7851d359d98f59d4d86dc38b9aaeea78cca2c2f9a2a613d21fb3a878bea8e9d2b6c72c6a3f05422d6a3a17ff098ba2bbe46c51d319fb8f59d4b9d4df0991bd60611377d54e84ec0d0b1bc787e4c2e61c908f5ad8383ca416f62a0d236c3b580c17f62a2d236c9bf60c17f62a4d031676ae69ec68596f58d8b9b6b1a369bd6161e71ac78eb6f5f4856d3b4d0d17f62ecdc34edb9b2fd33cb68d33860b7b97e631ce5aee17f632cdc34e691e3b9ad71b1636e1dbb85475fe98854df837b69ad71b16f6aa9bf765c2f952f3bb2760fcb23be25d82ff7542ef45d85eea8af9148cdf4763eeb2f0bc1ca0e762b63c16333f9dfbe3f6c2be817a15e0b2e217bdf94899a1adc0bb95cb1a3983a6827873d2b580afc859ed8b3c993e9481ab385ba5ea9ae64221af9eff7419be93342b9448444ae27939ac157983982d65fb086e68e95d94ec4059ba81f2925aaf0dd19180563e97335385075eb2245a1a0948e804558c482b2e9cb7985ae49841443e0fb78ca1fc001450b04a77e5967f10be531adf83f0bdf032e423f0dd667b7efac4ae53244ce3cb7d679b109ae8e504cbd60523894c5d5e7cc97abdaf3b83e157a4249093e51efe2ba926005ec94bca17531b241598928548f4e21e60e5c8ab3a4bc4e8176e85a01a48f4c5e17dd65b51b93a566cb6dc3e5909ee45bb8f78e0fa5c440b007f9cdbb39ce7f62cbb5939bb5f39f0a82c878d0d142edbc8e3f06b07bea965e8b1dfc5eb248ebd0c3d5dc3af5d78b9f911f2e0c22ba18fc0373d56079ff3bf99162724db2f58715b91740a94815e58178ca21b4d96d832bc13499b59a8935c2740ab681ea27ff502bf522ff02fe5f55f56f22bb6283c222bf981f2dd3f1633bcc31f88997f6ea5a1792c66cfd4708ad84d4fe5a6b22a9cc46ba07b33483f1636b02237aaaaaf870f86f4305a1485661815ae7d3554d6caaf9a928f5df8cf8d5052533b39ec4794eace014acd4e41219b78b308a7e649addf683b89c2b8942b031436a69d55f0a46b56b5abc8db408c45b4ebacbd49a023fbf9d2aed46b8048d9dca440947543d63b72bd8562f8fabf98befe2f853a1858aea5be41bbf519571d390b0f0e990b7cefb02b59146f17ea05f1bdb2592bb4f79fea6ec59f1bfdb9fc7da8d4b21d5544e4882fddd4ac3af2dad0c5ec494acc5766f2851f5a5482b7a7ea28b91d7dd2d54a6a7f236b1a905ba4fae00476b665240623848c9f6e24f5146cfda504f92760bc93a6f6028c7d79de3d92752b97a7a0551e4bad87a2c5daf7c3d04acf44cb3e0fadb21b8abaa0052c2212f10b8d4744e499bc244ef648f552474f1aa7959ae08ce0b6d08cc1adc625e4c3ddb818d9ebb288c4972012525039d9d3bf283677adc1c61f90e535ed168248aef08db7d90bbdf4de68db8ed0fac74925d008359c377c69e12b0ecd89432c74504681ad43d7315268a79d654669271fec8078c517ff0c74e76a4b1e83ee9c8efd14742715ecc7a03b5fd0f71494270d82a7a0bb13437e05ca7335834f41f9853cfc32949f6a10b967a2159e8996791e5abdafff2168e5c7a285a2f951684dab11e41227fab6c41df99c113bddb83a41388d957799974d712791e6432292389f077a70b06793f55f6d2cf58811a9c5d52d995b920e59546c69c9ecee5284efd29d06c1fe0c814de4fb9711d8066b7f1b8153af558509e47ce0b81ee74f70fd03a04d53b657221bfa14160d51242009839d7489cabfa44090dffb6e20f5e90b38d775eaf79b8f868a58e8bcb38f8872118b8c4e8b00bb7a7d296bcf49e5aeefdce64f40f325d49cb8119e80e6844ffb11689eebe58f40f33c28f60834cf55be47a0796ef53c02cdf320da23d03c0faafd399a73c6db23d07cc12d54de71a79777dc42e51db750b3fa5a4cb155afe96cb9c418aa6ccc5a2f1d75365ad3752d2558910982ea71112d00e8ff0f15e2072398470872eea9087c5ae1e25c745899029464c3c9e45208bd5f9cfec243c9e41ea9758d644b8a16415c2dda320f17e58be0918ecd32c3e6163e8d551899fab253e06fc5666a51aa2dee36fd2bc867aa63ab5ee14ac98237ee84e6fd34c458183f0e31fb54c496a722e69e8a987f2a62f1a988a52722569e2ac7a4eebb41ac4305675535e69e9d673ca911ff4398b3d39b9cfce42af71317e7675c8574af639183e7eb57e922940343c8730270689e7cd6ef88e82dd2fa3fb194535ba931b4355f7bf96421354381fde0ccd2e481f52248e2c4e39910a539f6ce3f0fb52753ed3ca4f067543b3f367f46b553ebf1ef5043ad812d2f3671947dd0d2418ccc1831c2546dc1a9dc928b3f5120e774020bc929b6a32952ca564d08849f15087f283affd3d84c66a52d348bb8399b9436bdc7007f2163909364918b8aaa447322244637719b4ca4f908067a0fbe73d952cfc1772ee5ef39f8ce65053f07df4ba51d3f7efa9f85cda54aaf1f97d39712077f9c369792a77e1c9b4b69823f8ecda5e2b21fc7e6524dd98f62236d7baac36af96a4dfd5bda5dc543cb3c94ead92d5def24129f5ebe467aa281fd2d16e509589025c88d72da9ca9b91fbce82140d3f3ac415e321c1938cf6b3a5937dbfadbea2bb0cef9be144f6cf3d4ecd657e35b91fef83edc26f9e52f70637fc21371b30fc6cd3d18b7e5c1b8f907e346da08a9fc6dd0207e69fdc98849bd68e7d104bd08dc366b40f44e2347f6b1406bbd579c69e2bd882a154fadaf39f22eef9ba23a84cddcae8596570795d60d3b5c45c14c915d609bb77511b163d3f28167e2b3c70ee42d43f0d616d120902953c4c494485b4ae7c5bfedd1fc658c26dcbfbf4d2319fa37d4abaaf5b3b745b08d329f8d3c1ba2a9297bf129b0cfed491e8a40f96304b619fb75eb8dd87fcacfa77412b27728365cab4d8ab0209c682de0e7cb257e6fea5b0579dba610ede504796c4abbe649d0d189a93b4217d1d2a46af06d7ebc29ceea4cfa565f21fde48a0267e4d4867238ba48c8915ddbbb2f86fe8bdc9db36c937aea5a9b871e5d5ad41d3e86da51abe07f137684f09b6e178b348aca97287828a5b151a152949284fb0d806251043f73f0c5160828423292a72e38b9b51c82265626b75d43d0b51848d30cac1eb888d2d3205b17cff9249f82b29f2f9b7e14ca73ed2b1e85f20b1963ae8dc553500ee69512c3cf758e7912ca61ee35af47a13c178b7b14ca73e1b8a7a0ec45ee7a6b1225ab90e9a2273b5360a49054ca76704a373d7426927af957d3e73f9d5e3997ff607afbb7d3ff2deb91ffeeafa6f77f3b7df8dbe9e3df4e9ffe6efaf2b762a7fcadd02d7f2bf5cadf4abd3fbe7045115866af434bc82ef8dd0a99c8a5c9b9d8c2811454d153f5682e2d2d9b83e334c0845fcbf277a30e9ccab4626eea525a1a212947a4ee9cdeb7375ba21ab11e59cbf7c9c6e8dd4b24a77d4a5bd61265d3737a14ef8befbc38c249f8bd4ef14676c7f820416e7786a73de6aa80d40229ac295bb1a2e085576bfde6f708e2842fff53041978033da6fefef40b526494a85ad3d8d27d2b032e4d2a502a06ddf2dfa36894fec84f51743f76e3a3fc0bd29589afde1d72075fbac3d0316d4e3f0942afca5cdb5f187d4114dfbe30dbf8f8f438b151ca7b1d5b3a39f98e49a5f245de512301f3ef61aa7f6f87bd668b6aa8e8607b7ee5ed30b539762328eae1242111b8f8afaedaf15e8526a2f7b6760f6897dcd372ea88cadb51752c6dcc0647dc270bfc198b28feb859b44525410ae218ce45259079c4198a0d386584b456aea76451297510d6eb2a5c1adfa3ff38e1119cc04edb633921114281a12456cb5595ca17c9f252647a8f6929513a806ba42910feb1cdd3d9a629b181f8e4c34cc4060f257a84249a7ed01d242b6d72cb5f1ae970ff58e8112c74aa9d0c924e48b868cf12d77272f61a657a265938257a91fe638de7b2c6c2ba6ffea20a7fb6ec7a01c1a1411d76344d0a0423d514db7b1def72c2680b7e49381277939554541f57e18864c7ac6da6d50a30f78a4c3b6b8bae4b641f2f9b694b3b6ab2a45a3a3f39a65b9a475b676cd54d4a5fc21a0f41f95c5f84700b19bc0ce9a99c8ba721eda6ce3155c3b54599200207bdd92f1d48c24194be7aef59619ba912c9e280e4d52dca0380d113127f9b3f567cb872ab79eb58222830406f3318ff752334f93aa49d28f21556e595f7224f833cd2ef131d6536c5e541488b1cb37f4cbdcfd4eb3f69a5cb82ae697cb598f286577563a5d9fa794cfd4188425f34a2c58817b62aa9175e7893c951792d75f8619cf5ca8b692e7ff14148cf67303e0de9b9d74a1e86f41b45fc5c4afcd3909e4a8a7f1ad25339e64f42dabe51e4d99752fa7d72daf241dcbcd83bf2440d1c4cba968bff3c78e2c96f47da71512dfa7315f7bf1129fd886feca69f898ca1c26d377ccb57e2348f202ad4880938c1ec7536d3eb44fc7cb1d6d3909e2ad77a1ad2af13f1d3f54f0f43fa75ec417d855e87f4eb6c62ca047d1fd2f197f3a7edcd70df50cb41b72854a687aa5464d3fe7f9d29a656c90e9f87eaa58aa42304f9c64a5590a2545bc2d2be94302522975e3909a2902eebc42c4d7c4adef1dca48092e363f9e5ed98ab90748d598a5876b022a047d9baadeec08a8505f5f28cd3bd1838e2c6396c4b175cf6d79a033c06df79c3f141384f7b9d1e86f35c4b8367e13cd7d3e05938cf75087816ce73c5ebcfc279ae14fc5938cf35bc780ecef60f4ac8a64bfc836d38a8ba2b11f983cf9756914bcb2e59e02fd25428eb84e9dc1c2446fa55e22660fbafa2e9472b9afe154cfcab6979cd168547d4b4fc9ac8f6bf3ddf6f5f4973aa7368c1ff7ae746927756dcaf544d40370d77194de2e6b7e2333112a11a8c4832a1380a1b817306d543b0fddeed292be03f757b7e3b80d3a4da9104d897305166888bd51a99157d49b27e2f21fa2801fa500940978e152c825f29b2be86ca24bab05554b7ccef1df4f0cbf3cdd903492bf4640b54661395c141a8d074b6e9f722952fba40eac1776d584e21137d99c3b6b3c8997f7219f225f822d11f09ff84bd7c71d794704a0b27ac482b29a96d48294261efb2ddbe81eaa6f1c751fae1609012bec6b5e4a3b445ad0eb8c60141d867ec184f22db2f891248ab94e977f058b0d306e083109ef3523d08e13917d583109ef34f3d08e13907f183109e53711f84f06f47e6d2bfce46cdc3f6edce464198043fadb85fa83888320a6dbffa779e1999ed704591d6b6b2852c15009a20194d255260ec999b239369509bf3b3aa41fb79ea98e33ad46d5a586aa2a0f0335b5684dee16b93096249378512fa53ee5b9b172120e880b2cf3b6aae238da7c58645b77472e0d6edcfc2ef3e9730f12c9c7fac4e2cfd20833fa5e226a804492fa41db375c93a05b2e4e6aa604b6350788bd1824ba9abcf93422c6958f6f0405a08cd489d0f3a5ff7d7c6589bbd4faf0ac6d0e84a092d9dff421ef5a6ab8476a6dbf7adda2cdb82aaaf1496731993cfc1793e8def5938bf9037de8873b0bf6829945f8e4eb462c33345c17da9f2090af6852fd5bea1f0cdcb5e67674496405137b368e668be44296e0556df60415cdae5de3215694d2240a6ec85758d397f341dd134bf6120df618b54c8540b3256426a11875ff74e97692db688f1b2c86a30c22c8f2269c4e716ca29e24d3e4ea84dc2872f522ed8e9b8b4548b522e2bdd4f4057a471bc06ddb90a92c7a03b571cf00474494b7d09babeccba1b9f83ee5c29c063d09d53889f80aed0d17eef5a9aab5948429763c377e7f95c8c4fc438f9dd205590c2be8d668ee19dbeded62b6e31d4c113c6c662dfb68d87a5bd0fa290d2739a245bada529aaeceebc16846c195d61f354219bc9a09a9922d90e7038d2b5aa6253b6ce83200c7fa6f08a594ab50b49eaa922aa50554c9408c321472749c1f9a838574797dfe3d11d671a01ff77d3d562fe12edddbac735dd5ede9add8ea58f86115f6a718324b6998f0f5976c021beed6ae71341dc8ad4e00b652f566ac7bd83ede3fc7efe4edbf74feee737d0d8e48a962f55dbce52a571a5d336145f6b9bbd17e56746c8049f45226f1682d1672932ddbfcdff9fdf7c29e3e74a2178da208a249b4b8932cd393f865cf98ba80bed6ff2280c7e2f558920af3a4a6a649ca74ba81e84f31be93c5d8ef4109c97f7e13c67e13e07dfc98c9ae7e03b5d9ef6107ca74bd31e82ef7499e533f015918177e13c5d9efd1c9ce73ccf0fc3f96df7c7b4dbf16138bf4c2ecffb4b1f86f3cbf4cef920c5c3707ed93d381f5d7918ce2fbb07c37404f66138bfec1e0ce67df720f9eb5f87f3cbee4142e07538bfed4e99ce007c18ce6fbb53ec0bef14fb42f96c5f289fedfb747e007d9b7cb62f94cfee85f2d9bd503ebb17ca67f742f9ec5e289f17e68ddfcbbad9e9ed6237f387eb256cb0e471059408aeb76d117ea975c352698d6f531c3fc5440d72a981eefa59f69fcc44672ea87c61dab6330bc857cf808308815cbfc899e86392d0102de780328528b51df0e0290aee1f67253ab1e34524c52f4755d3ddeecfecdd3ea27090769e792037c7de672dd58db7e66086ba91e54b644ad474892437d8f755d4b005aef901b8ba25889278726c288024f6cd7fc9871d280ba6708574951645110d50920931010b25689b82421af506c82c2579e004d35536dcdd49961bcf46d3bf839a742ec6398621b53856d175858b90d5782114f45cd3c50077c2d3669ed2a4e8769173a8cb8cd2a3390fb1a4ae424cee074aaf101b6030e2748adc45d3049d40f75f4b4fcefea5cbba17ff8434e91eed1269b9a008f6af65e4d7e35b46fedb9cddcdf14f6ab9fafbd21befffbf98792a1a542772422417d5d9d2c99208dbee15aeb661ad8f6caa925b0573212b2a8b9a9d200e1ca5ff91d6f02e84a77c764f4278f93366dc292299d70a2cc9824f6a05d74b422ee48eebec6f567b15314d231a79455aca377db3a4efb68bfaa7525d52a9ece0d6fe28bbfc52f912f556b16940d560b7234842b73204963fa9b708a4dfcd37e941757d736d5cd83a648f596cf64c9d3888f197560f4a7e8276ae84a38ba159d4026a281f7d691c532e75807e0cba73aed4e7a03b7fc53f02ddf90bfe11e8eef459fc6788fcb3125fb0394fb2125f73dce39f69f37f6747f8efa8c28bf432ffbc1d717686553db90cba8903c48cb8f39d9b0609f3d8fe93d7a2797c492dea5a92907e7bc28c60af29cf7f49a3b768e1da97cf71353a4cd487934f98085f930c9c156d4ed8a02ce84ae943e75e84067cd3fd4312b39bf61949de660cfb16b067f32c84e6a99855c39f84ef1b719e4b797918ce53295c0fc319efea7d11b2f509b9e6dd032c0bb57317cf7af061870fcf5e7cfa93a9cb9f4d1d765e5b19280a6e4fb30c5d4a43fc92cf8d184a052237c86ef30cc363b02a31be58d4ecbb37786b1819049dac93260cf3babe71da532aae4fe8694a414932c86b9a22ede5cb43a44d07f1facc4e7792e42bf60955dc1236798c11ffa18f3b59d47fbc23ae36232cc71ffbe38fc3f1c7f114bd8bb16f7de5aff2e3a8b77df7981591a3e5037187d066e735907a40bc50b8da008736b1fb524d4e1d7dcd995e4b312dbf8db283490d61b34c642d06f1b4280c3effda0ecb83d40e3ba730a8a484d439de59acb47802fb91b3e8c7225f86e54b84520b5b2f9cf922efa7613d9752fc20ac49a0ffc55d62ff6eeab9ee9498ba437126222dfc7d910134d732142b6a458411adf880628aa1b5ad732293923521dfd22c7d9ce5abe7e04b49c06fc379ceefff309ce7fad83e07e7e9328607e16c67133f1e84b37b21ced3a5710fc379fe818a67e06cde79a7bc8eced3e5a90fc3f96df7a09d0d823f0ce737dedd6f931bee6fad9cf9a324ab9e82f46650f0aee82ed65dc05405494be794e57828f9d9c8e8e41abad8428117c4ec3370bea69e3d03673f9b08f3309cffcee53e9be6649a9f55ba5884270455360a9a7bceea4d02b92210f3a2448e1cba1cd2c058a2275f6eb8dc74ec61384fdd4acfc1996a195f87f394a5f3309c2733239f84f36c04f94938cf46909f84b3ffbb90288ad93f99fa0f2fc4f4375397bfdbebebe1c02e592d8a3a87df287a397e39f6f0d1dc9657ea707c02db7f70362d4380dde0655dbdcc38ec5a55e8ce1c5cc45e0aff89c3a6943346d966df7a159cd31c657cd388ec4f1906f345a47f92be3b19f40c52a35e5a3e28057165be280d4d3eca80e336812a2b8f64851959b21cc6956d4ca6a33b4f41f655949d8fc93e03e179c7ec43109ecf1c7b08c2f34aec83107ed5a19b0f4a3e05e1e56d3cec670d8427213cd752ed4108cff58e7c08c2afe2df6987cd93107e15ff9ab7f1af7f99e243b6c8ab107e97e2e35b61da1fb819c21fc50ccb3567f6222c5fda9b4a77d11493046e73db514c093f28a2c567a1a251ea98e155ab82228b336c0bc0bd0be10baef76720fc87dce8fe6eeaf96843132ba5113a846e134486751051c520fa68b2f42b24d544c9a6170e274e6748b742677f8ff0bcb3e14908cf0773fe1e61e11d69c747942e852ff92e3cd491045564c45fb09d1357f47d2eca3d4d019ca5b94e8b2c34a24c023aaac7b55e1b37ff9b90dfc8cc5721df87955e85fc6b79deeec4125f837ccbac7f27f2ef3db06e474d7a0bf274685f897c702f3fb0af15957eaf84ef2dc88326d8fb165e83bc7fb362b69743fa16e4fd5ef785b7201fc28bd986c4e52b910fe1e56cf35a51e9f73ab5bc05f9105e2c2ae99bef443ebe59b7896f1695b1f5417c27f26f1595147a7b2ff2afbd61d35ba54d79b31958deac559636cc7b917fa5dfa63459ff4ee4cb5b4565192466bc0af9d78acabd4c805721ff5a5159deaa55165503fd3ee4df1b012f2a59e29dc8bf56548a6ce19722ff5651f9dec489d2328ecc976851cb2818f1b8777b44387d515d665d75fda836ec0fed71e99da700ea404c244b8faa01dcfe489b47c52d93278f616473dc03341b7630cde04bfbe5b2a75f4e5fe2d9edd1b7bd1ada1c7e911398af7df10ed1ada462c7aead13120d373dc8cef1b0aa15f6214ee56bb7b771aba94e8a4d096b63998b88afeb782d8bafa873677ace1f0cbecfe31390a2b5f7fd31ba8dbe33c6d129756a8771d7aca0ce69f6b26b3128ca3920a713c97b4ad12f980d521b0191886bed866c0b9e736e25e7538626194910527ab88f7a811959cf8be26fee37e475002404918fb9b45c212fbb5288976826bb03a4a140a9cff60b36c4578546d5fc8572441555706b1ab988f4f436422630236484ef1e8239643cdaf45341dfb00b74bd045e62d81e4379c3942cafcd9eb8cb70e6838f28575af4e7377c1869a6b3458923a11ea151db41197de4de263e223e851de26764e9b410fac10e9f183b58992f4ac02af2d5bf37edc24a928785c47b54f298b2e5c52967b9457afebab8e4c6d4bcf814da2dfc1978b006cf6d2fb6ebf07d0b89f6516601b8eecd5b1622de19f02c52984769b54d3f89753931e11283fe3d779fbf7bd951dd986edb10e43fb3d4581874914771f71d1265704801b755350a338ee7efab0b6b7b2b518942fd859eeaf3c2486185d4b87647713d5314d60952aad0bf2a75c525d17dabb09ae9e66fe8855796d5edcca23a685967f1050d2ed31a008beb8380fb963b6abcd2198efc2727cd3493fbbb8718220471c9942ccac42a6dc52348ac07044df4c72b793effba92b7c7626cce3ce1ca26f951372f33a3102e6c3805d3aa8ebef7e8d14345e53fcde4410b99bbb73277ef52d7ca3f1de57f5247d9bcae6984f17ae4fc10824ef1513360f99a156a0e898a2ad395d2d39640b7175fb8a52847937c9295ef3427f580242aadf18e7ccd7d4b77e82f3b569e4e1770b2ffa3c99657963f75c271de8cb9fc9871e7645692abb9d6c99bb76970197685a1d33638ffb1c72bf557de4ef3ca4fbf7a3c5e6ebb054474286e56b91da04961bbb9e796996f6fe4bfc20614053689e445d78b68367844cf0be9e20a68a75573c9d059b08d39c3feb3ffc4b36119a8d09d49ddee2df83b7f431de14af3ac425869b35ffd9d7b5b7b1fe2389e2b36abb483d5de531548d89fbc6d9d1d3de5fd6344cc71f7e38da76443872bcb3e992cb7b313f4e13aa4c9f141bfb1a57378a8c3a8ed4b0d56c246f0f53a93cf5f5db39b766d59e13b57ee71dfe2ed7b2ef2f01347716b9349d91d830cbeab40668f421ea8f33fbfbb9730ee9d84f640676e7a310be386dd585ff6e291d122748020dc12acc0d421442b957f3bff4b3bbf1cecfc40b64eb100f5b721f66af828fd93850239ca9a23d63f2744667b49c7461d32400770acf99d3837e2ce569d7bf135f11791465479a559e24ea7f9734ba3e084929f8647d0e781a27deca8683e7cf9d71cc51f3727ca9f13e6c32a72fdb3db28be2d0185bea0f424fdd166f3dc6008b9659ef9de50089b1c09410450f886b4e278856d749f360c0dc21b1bf6b39ea55d83e9b74ed37f8669b8e91829509489c06255e783b8e6a73a39e5ff2eda87ab5841bdb9e34866b8d6149b164b5929ac8393767664ec868bdb3f26da9e91aa0eca7fd7aafdb92bf1c883fe395b96d198b41c27107da7952bb0e81320e82d19d907b224e186a2831a702619921d08602ea71ba85a2405c96788874566fbec50d2cb0516313c6e7ea382e2d1e90db8c265db88e0ad119e73357c730dfd65719bb03a8f5f6efa6efa0e571078d1b5348b68406805107cd151f3131081d74c3498b879828b30349b2044cd243bf1b56f1b0a9c0bd565a30b2b2a2b55468977cefb9739ff9b94d0455ec9d49b9982bc3e0b3f082671706dc981067ff00459b5ee481f5f69968cfea68a936a5f7c20d2ee25dcefb09176f0483e21ab52c54c647f22faaf6f3e00771610951cc8a1ada5d5bb9062cb21a8d2c81a44f895c85e5004f30631ed53337d794f64ab9f93d816c7b2acf8c789585612c87bf1ff8b4056b48dbbb7f771bfdc48c8108a59c19dc3acde6016ca4c505b1f5a698ef9ea03331b0396638d9c6ce67513e3105b2b96201c852367cffcfb7b4e6619dacfbcbfd7dfb3a7fadca1dc25fd6439f8d2aed462f9629bfdefdbee1a21960b8b1fe541903983b13c92a78f5232cdd889316d2cb43fa2a36f51664d12ceb05da5ba08af5a33f8bbf0642ba3d105129b25b57ddd49fe2c5a1395329cd35666d24465f15f5f9e10540ecb229372eddb84f4df33f428f9a093081ff63be92b406ba24d884b4907fcba317fb6d789163ba6bda7c2be0119a873cd31dcd41f14eeeb177e55ab312adb7c73c5ede9c756be3dda4eb3691e189971d07d810bb60e9442aa0522a7ad3e805ec4c2380e2692b8f7d3123ea164079949e7e465c8046afe282b87c08d70726a9849af3d8afbc77ec98234410d5d1895ba348dbda5d3d09fcdc6d854d5eedfd89c9acbdffba485f91d347711db3a3a9cccdb643c4e35fea43d8b4abd13093592cd73dbcf81bfb15efbba568f5305dcd75ec1fa7e250415cf4ba3b5c8427a11fc12edbd47a1e6d8cefa96c3ee3952b82e5f3a8b95bbae69d959f89c89d6dbedd53e84cb1cf8abcb98604eb7cfdd4aa3c93241318b0b4395b8b094a37c45e288a14499bf8edaea12febd7e4ba9a16139d009a64b2e7ee6eabf999f258eff6505c2894df2b94b254d4d550cbef94cf822b85c29bbb76b7eb34cad45909e79f8a5ae94cbaa23b8e553232e3c323ad8f91bdbff2b1394237923b770be7c74eb908363cbc1c276648355b7fad667e85a5cba5de6f447a3b3779beb8b2251838b8014fc7f12b75fc62f78e073d25cbfbbf83d9358b0e3743f92ad8deae5e36da17116591dcd6496ee6a333e2947f9baff893c9523f9bfb1792ecbebf025ec8f52ba24fb24ea0dc865428f0d92967828bd2eaabe417bb98ab032773d2ef16b2f937da76a590836fec776d715cb474986910c5bcef226bee309f8c13cf366c7aafc04af12f9b79f0f05c271b973bb40292abba3d28b6460516fe5a495616421b47839f628a87a8bff96310d8fabc5e34122c527b4c051e2d177f673a744e5548ebd21c3ff78a75ce5911c2a05522f30f8f25129ec4e773ba81c413772105e8d723db6a7e545300706e9b57c192583362e6e1de4e99afaec7aa29be6d18958ceee4de2507340883354c9b99f84658ee6e0559269b3cc8f13283e73fab4b3e44a2555329bbb4b3b997ec8508b47f7e6d8f7d33a4c756e71b2ba39da24ce159d10de9fef1d003268478e5ff60df90d31f322f553ebb7cceb37f9795b5fa6691a42f372b9aedb5665e7d0fc50cd8731e0e734f665fe5efad855cdf40e62d227a1ba6d0df8f1a05a312ffd483b076aa7fcf04c711f5d781b1fea159cb7458a49b847a3b4a117d11787fdab415d2a83a2a8f4407f65fada4d2dd9dd890f55bffeb65373b0c45ddd63946ab32369554ba1fca56b5b8b58b3568d1bdf5c10b53a2440c1ac326856c8c969fb2085db88da2fd9f68f6dff127ae1cb336d521df8a2312d5b9dce4c10c25efaa328107d1cb6e630f4d25c059c69c0ca1bcdcdc915ad7498a8ce81053ec3f5b7dc5d0f518e669af7d28b7cbfb31036e5917a197af56d60bea082c8330ded3b1c4a3fec2df03cd2a47fa4d9210d27f7ff32692624ca4e92a56df6992a8768842e52696e495b9b0497a665ee5cac51d6b91891a518a466ca0d2d442462149e3cc8ed58bae4b0fcbb091edff7f2a58e6bd9584dadf187b860649075ece523fbeec3b5434dcbf75f3bad2662d9fffc55fb617b3ba24985455ad08bc8884b3a3dfbd7dc5eca85c22efbef3b27a6c21c1bc2ff4a31cf5f3bb05a02f5adb21ec56ab29a54a58c72964e1076ac17c29eb2f366b24839d3cf8b560fa2744db5809077506cf9bcc4edff52803e9302d4eeded66110fe95549143e3ae66ab6864fa3c2f767e721e275d2d4e64e2b003c9893ccc71df9dfb826b7463d064bb9f7142946be61eeda3db2c7a1197e122350fe9fa919db3489da58480be1bbb4ea7138e2e6d47997649ecb423fd77306ee6c6c59bcccf3a147baf9796e9d0144e0e2ae6af6dc7fe0d27c04c8bdce7d0bd58d158c1aaecb6831669df8cbcaeebcaeb90a57a3e68d84decb8e42e2017e59593855ece65eb655051d6948776af1dacf47fb5f2cce71d8b4ee8896c5616fd604153ef3744cfccfa7b1cf867325a276a551dc77ce3ea2ae94bc6edac689a9d857e6d65365369e94a23affef7f9d097af9334f34adb45936813b6a05da6cc0caf72cf8350f7583d13a522144b3f55f58c6e4ba2c6132a20e58948174310e535e15283edbf3bd33cf3f1790e46eaec96d3aca7044151d77e511cbbd3eddaf7f599bcb12d91c20ac57be9527bacd8a57d17f26fe51ffadad67ba5fbaa5e243c6379d3614e95b6c9fbca1771b9b06dce35068b28cf1f445326d7e8c66e30a7f64b9d472b57206396b4ec60448964a881a915b3f5bf7993992f7bb9fadc0594c8235e72bbadd5753b727d7d3f215334bc39f4aa6c88d4a53e7ae1119e89d640e46fb6a7fd7763493fb4c81ab3f622a916d96157bb502c78f8f0da5c51a2d7155e9ced2b7bb30527c5cc22f2e7fc98a9e2515e7c336e96e1deeed0b8c94aba2d1b69376e6561f72a0762da0ccbc1bd11ec0f05d7e7e89059e1e140c238fce8597bdc0708461b8d15a7d0ea6477ff58b9212b9dab3d1ca37d6da4676c06e3bf6eb41611df141d12c8152a655d511983b8ba29ade5678323c3eca33fab0afdbe935a64b39005477a5eb7612a8b7669bbf7bd32ff45567309bdf73b65fe3f9798af0c9c9960c5b0f69f538f4bf38d7ad99131e9761b5c756d9b3af797c7e1410fdb71ceb7fdf77ccca316f26bcfc7ec51ccb3dbd70daed1e5bff22acb4a9e3cea71618e842b0fd7cac2656c6b1364525244447ad8126b17964c7a904ea97fb91fdbdc8f99d759fe07c9f2074954bfd1d2c21755c1bedfd2a2857c9ba9d09fc622fbbf78496726bd7a4086d369ecd025f4840e556d250347e9c63346051bc452cd57975b18bcd58cbb2efb625470e83f9b80fb03eae56bcc0c663bba3492e83d9364ae8295de3e23fee7af35de1fed70b39c88031137764a01095f9fed6e23c37a24a5294f44f8649dc807f0e20da97fc5e0ffa162701d14e98ac19da25cab1232226bbceadf512e6023bb39db7b115177dffb2665dc85f3c85f9617fefbd9bdfd03cc8283e27be8f6cf68d8d58ec363afc3aed24f2b1ee66bd3768ccb290f6bb16c73713b1164e69b2bb57528d9a1da0931e5832864251174411f6e08a90a9b1dc79499f9266700b5725c1149ac610fb32d3512759eaef389d2f6afc23fb916698c1899cca6462623ae1ba2920983b49ba48a2c78c409466e8a0069059c96a09dc7d7ad8d9df2554ee7db86ba4a1777579af2a0f46047f15139945cce4cd98f25f7f57c3eeb248c3eebc6b6480d2da784a1b769621107f902f0adcde44d83b4f244fd299245e99fa2b68c3557ad62a893f3866c925fc810e370eed2fa08cb7c6ed2cc4bdacb6abdde83ebcf68f9f4cc1c4e2153ca6a90d553eca391579c7abe77e481181561fc7ae14d8ba7f35cbfe87f50d7dcf79adfb2fed5327ad9a0a54b58dd5f9d4bbb8c9b7f1cf5a768b79951db41bbf4ed0d7aeb6e18e91c123d46590d359dcaa15a850d25d94ff47f1c39305edbff51a4d5ba51906cb6ca8def9820528c843ec8fa55109d3e0faa347fc6d546b792f4d6c4cd4d7cc4ab4bcbbc2ba2514390bdc87d9fc2123ee16f5fc6fd09beb5aed6d3258aff09f260b6eb6d7312bb478ff60de74a3af96e7df8eaeca422dadcd4afb3bba9885592492cf3998b2843232b9632873837d9cd391338d1de35a59e48e1e5ebf45244d98e0ff0ff9f9b43ae0b818358aa4ac9a59658a1d153c58ecedc0f3e772e8745e7b9706279e95c0e8b2e265bbfff23dd2f0ebe7e7a6ac4ab08be347f842a056a6c8be2a1a4e651ff68899cca0e65bf6c10067f14c67dec3982659b5c4ae86d60af82417c72cbe57650476f831cb675234fc3a11760002cac6045d379178138ef4c065903cbb95c8bf00a88de0e171fe0fdb1f2be2de15e5ce7d7b6c80869b9eb5ff31b7660cbb0149573bc29b016bb2b1ae159c9b894e69f9ad02b697b435ee879bdb5aefda79c134192426a49da081eb962f78fdf362e5f8402c4d1dddc75f66019c3329feea75f1091cd477bf08cc2199b7849be11fb75f9d482ac4b9fbfbdcdbb120fae05abe20656fb81e83ee5b8ad7f9172761221fb49e5ec921e7ea5f7977a0a9c0fbc1519e57c5b3b614af9adc9c0fc63f64a85c3a530cdb76ee0333f7c7323376edfb6dbdfb99d859bd8ccddc98d924524af775d54e8ef747a7cd66505ffda3eef56205d6efb5c9a2324ede9ccadb06d11e57c943f423b57b2bc6b6d57593e6aea64f7f74b34afa3d498b77aca9ce8d7149b55463a065f6b54605654a8f33457820d0669d9b46027df9576dbf443a66c706c5ca8004134fc0be23d21697172b6f5d91d20ba2c5021b2173514b4585e851172c18afbe130d2ff14629c792bfe9788415ac23f62a0b8f84d62f4359f1f4ee66b7a794b586a51500a48172944d9ebced79bba786400f5e3bd674bd6b7e3ee15705022dc6e879d8ad0aa50a93293dd02d0a605ee95956e1c175227f6c2ffe605930aff1cd93565d2b9fb8813f1dba7e2d90431ff88a1b9e3a4f3ecff1e417e994326dbe4ffe92592848ece6eeedceae75aa0803c3c231fdccfb53e7fd9f543f61b7b02bd2867968faac81083fce2b31b3289f0998a937a59e1cd0ea22cdc9b744ece6269413e58e345dc49365e4a9d1fac88a22fb31f43fb97ee753dddab88623a9ffb8e29ae096ee5c2686e5aed721ab9ca54e7b645ed8e7402894c41fbb571c918990132be90821591aad06e19d1dd90187769329e5d0f8b88e12ec2471b85d3862f0dd19b24b01bd9cee7f9339ed2db2dae9310c46d154504baeb7cbb135408e6becc0dfbbda13c0772b8c27c51f2d26cd8a0dd3265d70dd45c6851c79fbde8d24a7b518abe8747a986ef597e705ab3e1683b07a275215216f29860fef5c67a756facaa216c6698ae396366a73896b4864bdf488d2f1b9997f8632de64ef52a88e61d696f416ef5344d4826f3592949580e494458c4b10ea2626974a646adc13ecb6e879ae88ccefbd99040392d7662a48802c7fd5d1a024bebd655ffd07fca16c99e05d2ebf08a5184ee64fac68ca4295250d7772f6df0f1c9a250b80d63cf5c484f5141ce0ce24fab200fa7c68937ed7f8c1acb9fa9a78765729b766a9ca421add6efb4533b92bd3a73decf563164fe68bd9a868ffd912973bbc35a0b5cf3c627b1cfa1d5809202d96a7326fb15fdd49e1f24063e7b43ded29364d3b49e139ee96b45663985a4138c2885f70f4dd69a0777c9591aaef66edef38f6d4e5a6ea8eafa768e26e5a63870d2b94a52f8c3f6d48dd3583836af58183fba23ed4f9d17cc295e4b93258a1ea41cbf472d3a0b9efc8f290327b9083fac0c8cecaae5ed4fd851048cf7d628f96c9a19a2d2157943af3571f8763d99f225ecacffa2734bb4be2a49b8f4982ab245870a371c1418fc44433762efc1b6eb3784f48ac56eb2875e35acead267d5e933e258cafe43ecaa100a1d0cfd0682f8cdf573d8a08b155a9502ce6428b967472e4c90c9dbff9ca0af7582ea7e3a878f036c7de73260b9881865d6b7634b5290b1ca6f77faa66beea3e6e99cff6f07c9f29077067e60012c5d386c5b94839aea104590532d48be627900f491d5ffad6811591de1ab4b13617b58b2b29d38b28a763b447a180d6e8ad7512fed4a28dd7b7be49768572bfb1698baa1f73a6cc9f66fa27f137d7ea2ec958267ca6dfe166173692da1e6ffa1437430c9e74eeabf497e6d92d7de8790816fc85a9d5668cf7edf86ef29af2d897fc87e2335b7e4be77135b4cd3bd2b84638f7a51b099295d0fa1f3da2c42db5e7ea87705a5dfb5dded53dee2b084b24bbf11925099b61b276ff3421029d99cff7ff6aeef4772dc38bffbaf18d8409efa3024458aa20f7e3090c0ce4b10e4c79361047b8bc96193dbdbc3ccae73c85f6f74b7aaea2b4a94a8fea99e6ee0c6de9956774b45b258f57d5f1559f2d64291a8920ab6e513c48a9d956e3cb23f9114f87a789c81c9ee44044e423306623a81333db6c2bbf24abb1483d08f55ec8195edffc7fe80cb8e7aab36d25f355ae9b9babbbedb0fc90eba4d7bb979376cd1e2322850dc9d034135d25406bb2c549ea176eae12800f90604d8ac3602e0937b854113d9087d0a12c0f7845170ffe446eba21328b17d27c01e3ef2c32c43b33c66cb9859aa6431678c1e4ea2341c57ec069bc785db1b68f961ad857884cb37948a4ccee026aa37a97a12f5114390522213f91f627698eae0bf0af991a432aad826e0f892a3772f489c9581cc318e67912a72eac57756ea4e94cd2523618ba0dacd98d6354a7a121ab9e87aaa040e99fb43b3773f7d8ff65d7ce0fb9882e2879e6e6cfb53a529c6e8c64e980ed0cd8c95f30d1412d12c4edd26d338d0dc9a512eacca61d7a83acfe8b07bf7b554c95588ec45aa2b9329e9e9d34efa89b3a41a42741fdde924e80a4eea6dde897a46c98c298194a4f3e84eab4358677f55d8e42d814bfaf69b6d094cf4fa21ca0d16d441a9b14a4d7afa9efc01fb85730c18b5c5bfece8c4760375a2b2c94686095ca9b7e24586889377de70b80e95ca3522e48c3e6d32e9cd3b1927396d5d03386b1927a25a39c865b40f3ad753324271ba9f28c6395b476da6ef498b33eacb090266e008504289ccc266d864fb2c13aed4dcedb61dc349dab9b750080701758010120bc2441e4d77fa4e06ec121ee21403e65120e811976dc48d2485f973c2dc965179dac24b31ab6007372631e5c403530d3e6ccd8a3c8a592b8712e3c2d11f2a9b1380764127728359e5907f9bea526e9976b34cf9f1e342efc398174044796a4652728d698a522b9857813ea2ec03163e356a3d2434d8db3248171000c93c24aaadf0a398141fbf9f1e288f5601c258f7d0bd6fa24e2b8c1ffa61eb032bf97982ae2bc4843282c178219ed3380f5aecdd03f6260e10b504106643cf05b23157bab87c74127465a19f94b24e220447cc75c004478f8c0fc213aace003b6b5bdd45e6ead872597b063d2c4424cae0df480b172b84afc13969867d990da8a2a3b61c53f1c1ea6230115e57f09a3c26563695006824d677f08c7130a6463ee37cea017bac7a60a8cce80d879d487823e5e515a0320a1dcdf4f2142c92622502fa545b5c682815f0b8a1166b062c1408196cfb60e0d3ac48a00906f49565d13cee5e07640c5445f14cbed3009687b4787bdd3dd5ff782899f2bad48b6779c2de5d2166a7911ca75137e8b84fa44fcf0765121cf079db85c0513b4e1d0b29359b22331aef78d7da4c969506c4b39bbdb8afcdcf77f68d52aa04423f16c6f3eec4cb8136545e28493bd11115e8305d914aa800072a40311c057cfb0bb1e6b65ded1438aed6aa2bd75a791d0b74e0efeb0acf68fba087962e5211a943641859e4e6366514c44fd557a9e4516b341d0546fce7c92e98ea93fa099f172dc0eb62db63ce3318defaf08bb3e0b2dd14108f05076c18ddd801ca805da691e2e8c4e3a5174c62dfd5e99150a0783cdcd8e24e079199f2a2142d25d573b18c5edd1ade786e80f8542346524f8e9063de49c300ab13a196debf2b40ffdcf8f0c9c62b02e3d2c85ae2626a4e3f1ad8bec475facb1551877222d18944aa053c07f50e240d1a261403cd7ad0fb3b3f68c83ade951efe68b49720a0095417ac1bf14129badfce81d8d75cb4bd2e24f639fbee88c7b0bfd9d81ffdb8d306912e3988e6784826805a27580d92707e2c51104afd4bcbfbeaf60ab8a0925a4f926e48b306162a42e763a720a5b1aa7c9ae9845a91589e28330f4805a38724b12c9c42154e251b5a80da5e0430a80e06e3443038d25e63e0fb384572426c52b818207c4c00353054fd18968387652684a045404991f2c94cd3351a214d136544a1ac239932c3b8439979396330783b672b9ab177c1f16bf4860b6273a714e8f1d66da0c32725589c58b1248cc15582b2b2b40bb6f2edab67d93d82ead223a0b665a9ba00de33b42953440ccb08a70ca71d30a41f40d2da96bbaf1c4f21bb7df4b953046f7f060d401a0801ad6c481cf1f150721086cad802aa71fc7ddbe9188e3128385554680393517cf24098415ee5c6998ea56d276a5a96fe9612900ccd46976b5dfcae054f6e01d712976e33a49917750445d055ee5c002207f929925d235199b42a2e49e7d6784a06a9306413983cf022cb380545b78aa21d26fa113b6f29f6cc667355f2fe0676ef5bb1277ff3b42dc3b54e1de1ed46dd06c5ad098479b97327e758b9221564bc7d5f29223c3a026410090eef25a191c7348a8bbaa344df6bcd3239238f8767e4945dec8da8808f42ff55f2d48aa8e0382c4588d414b11d8416afa90c66a2c801620418006f091e48223c86db570d5a530ecb39c4545621c64de8c0881b856209b394d1d9f2928319c1154741eb063dd73876380266c992f35c4fa6b81e3ddbf6153e32f90cced69683565c2a635a2bc954fa37773d62d9f553a0ed2bc8b862bddbe7a83155ce4b4262771fd02fd441293befc92df8b00ecf363220176fb37a3de6d766e72b68c1b84ac883180390ea807565b83efa3ba998b77630865c913a3586c1548d21ee93bc7d06210dc2e485f44591f7273742998fb5ab087630dac32097a5512dac0736ad831155a9bc5d162d0ef6a632d7d93b0a72adbbe60a46fe4daeb70d524cd90559063b97dd175eb67d5bcf618d86d2231a00f83842c81bd6aa58aaadd4fb29971a019d6eb52884856ae8921b8058ec38477fbca5dde1963e60b373200c349807aa1d4f14421e7f01d77c4d9b4fc4c04ebb11035b9f87f2cf8323dd299dcd08faad6d6f55bf5ad61e0798d62812a7ea3fd9160b8ccaaddaa311d452cd2f8ec4f1e09c9009789695d33998f262a7e0703fe10b381e4df92b6d1c7c46cd364051d048e895e7952a41cf0310b5a4ad0ea6653dcaf5163641b5a30df5e1414d5076bf49f661f20bb4a249bf5ddd188cdd4180e51e40f219a07d808726654eae233c6d4ee86a32ed6a0b69510728580b627745bef38f030125d7c7b388d242cec086e9e079dbcb475a6bb74bf5967d473661f9f2c32eda2ef63af3e5164a06988d80c33804eb41bd8620412e0ffb668a7aa0222101512823192519a5c941e9b187d82460402f4219e87e872540c89cf008cf1c1a7299dd654d06993952edfe0c121e0661838499b63d77658c9aa2c0bb31c6a51d695e7d5590725fb9faeac40a0f8f50b6025c4444099520b48d63d5c95dda2e255c1778a098cf82bb20b39409e87a09e5a1bc010bb62bd812e66290e41b2a2b7d86e7aa9234afec010df8684e31783213c8218cccfec56e3229121795c2a3a2de8f851816abe81d72bb485b617b6bda9d19f5997241d09a97393390eff26470204574e2240334c939bcaeae5574f569eaea26d5749a08d7e22a56c7b9898bc6fc42ec2575e827f077e99caf1748b112292b7a92a751557a23afe7be60b2748fe800253fc3c647ca6546954bf61be12c1e75c65956a00538d3130a44173b727186ed7ddc8ee36e855fdcf1dc3d1d308aa632de29b0aa15d8943d0c460a2cfd5a0f8f7d11ff4c3329a01265a47b8c565802b6ada6f762367d480e888ec521dd15b5f538e293c0b12c18e268acd406a6543b598f6cb4081a09e139f08e2529f0848c47f99529b9777646a0be4356148b60c122477ce250695a153d2e6faeb9c5d1aebefb2b087ee3f2e9ddadb94193894e5742b3ea2b019e2feb2f89ce88428dc70cbb9b1936235da0bd2040b30df6f541483b0ea1549f91820aad072e6f7c1af154916a141e05358bdee3b439cc312989412b1103877d1e2909d9be5be12066fadf409b6b662f9a2c1f42b114efabfdd392362598a1901e490e256480963a4b581e4e7a1d24bd012a23b2ca60ba86ee99de6f26829af1c9602ac221f92de6a1cfcca79e423a4bd1f9a47c5613dd431d74bf04d5321921585a55ae63718e5ad9f878ea80069794a2ab120ea3d23540004a0c3f3f842a5530a2dc3cf5d37896a84cd6282e1f39ac5f20ffa0a1149524c1953e0d2aac2e337053da8c202915ce452b3b3003bd4986109beb9c65e42eb30a5987c62837a2a6225301d09cbb50f1ae715c15feb91624df6300d925b91429ac8fb9b81740e6c2c0525e5b52279df07814f6f60e0f420ef8d7f1829176701ca4c06ac315dd69c9bd808d0e3c2e9476d05e4c21e7bd188a6371e831293c11161e053ccabc93b6837763a906d613854e7b28bccb091b35dd007c49b3c07b90904e3a915150c1f936eb381a20df9a2cd2b3f09ad3b5145c0519d047f4375e4581c2112c011ace04e886cb3f41371b6466d03de4fed339732746f29df82d465a28570e4ed7a5e5015899e4a168076b4f65af7459b4da4218a1b0e284e0b1e84241564c918768c560b6b1a87f0e4c6eb23cce67bf5bb0811b263b9c2cd529f3573feb280042868721276b51166c3b0cb0b807f048e884e5f4ad1c32134059cdce2881d4a0d88aaf9a42638c88019333b5a72cc8df15e2c3c803c499b4b5b4f8fa0079320605f4cba9f323f832fea254f345097372c65e86d8942a0638dfd768de6411fd9752b617620b63d52d4d95cf4bdc1c2ad9ac333aa0454c33a72ca75a2247779614d870417683b19ae19dca6dc6faf1285e7c7a016755ec74e72dfc71f8fcfd30cdcdbbc9790899b6d55082ecd5007a4350676592ac7822d635087c7f47819923ce91f04997b17172d489d23a60a71fd8d65d39c5bac151ba441bc74347896554ac690a43ae5324f3690369dddef2cbabed08354f040a8d77e0f0f26542502955811474c26e30a89f8b5078a1fa5643efa28007d179a47709e59ccc0a234c75ab359ed82d9d41e290e52c4640999bc85b668469e7f0d4ebc60d98ecb82076b0fa5962e755d417d8d34b828b2bab818f3ec722757a6a303545f44c947c40c45cd0ad72cc6bf7265da22c5867a43c863b5d64742fd2743460bd9e41de876e4c70320797c683aac297513da2499ce2bcd2263bdf6f40c1324b85923f0e1c9b3c186182239567f7f5a92cce5f514c91a05c3c60f3479176c0711937056ed61c63b40a6cc180f8ff64d8c254603e442095c658aa18a29262b1c6dba2f4b51119c5ed98fbd4504ebea1670e741a486353628530417d420a7acda2e7da81f503f96efc6497208e84256559a31c49a773e1056b173d23f5166b5d4cae266f20d58c659963613a850d76c6335aeb6e60170aa6e6caa4438b16b826393bd063e4018857521fc2d0796631c3be9c11f6fd3dc40dd4310ceb1490abf750d4052c0496315286b270fbabb26790b86b58a595d84775b9f97547fc851f3020eb113ec20e38003a264cf573d1e33a831dac7f6482aa93c7125f947059390112d619ecc830c08257f2a46188e120592f3cd82347b9891cc5a390bd81189e222292dba4281b61828aec93f4f0c22fdbbbf1a4bd8fc11162e259b4dcba77940c7fd6906a9c669efdbca1ce4d85e0e20a3c24f50682840683a2e590f9c81989a726a18b1509134a0199bfe32200587129a108895bc6d456576a4f8cd5b8041173a2c3ce2baafe5f70664415567cc6be012321a09fb174e847aaf47a6c543029ab2541e165d65c78d78f350f68f863f921110e3519fedac0eaad8cafdf9361a38a26257488fa3e58a0310827a2103a64f3344824b95e02fa025cdbd2a4bf5f52da743547722b50b164b656f31ea0a262f224eb2c992bfd0bb053d4b851b85e3b9f4b376e59bf411e1db0a0c7d1857ddbaa8d31cb58de933198ac7f18040c121f06d1ce74154b8652664e7c790b970e265cda0176501832e845131eb01b51208af979043da9afec521ba06987aabd85ba61a625bdc4a19c11f43f2be985e2f2507277f5f6cf782acbf0543488bb686661ed21019709837f369ba908c9cf646612811d7c9cfcacf93d88cf6b8680af9fc29375fc2c40d5a0f15adbd67deb05a3fd89bb5d1ef73b2491511240d90e49fc085a565eb2a263da7a3c51306bf24663dcdbbb2ea2094819f07e8c2413b136090e2be1296067275a0796bd7e13f29926ba4cd945217019f042f1ce7b6a426ee6e3c573d8e5b11087402b392d7a122663a0ef7908c89606215f8ee310e205398475f27a759111ff79448ea1dfc29f34f2bc8d7e9d47678ceb9856c074204369418d2458a1958a480625139052350a189fa0cc320206bdbc674fc921aea185d15c207247a6a88120efcd1c15aaf8539ae3e1c86fcd916b95c0f29ae02813841c3b940177a01d4d705e156786ebf0e4ac1eecc7d3095d9920a095bd0872462eaa010c8e494fa5b2124ebf41937420465912f423c3e621608d3a90cdad404130de7b45703b738eaddb4fac088727c6564e5f9d3a34714820a2242d20ea1640aa1c54bb046882bce824ca131bf106a61709661f9619b34c4d15d97d5aa6a6c0e2b22e69f5f9f6597a1665b86780c9c13bacdb68a622383d492abb0faedec0a7461603e03f78baa691ad86f58f823846d18bdfd4a11f73f215273f9c9fb4427f72a8e5e4d642e5710c3dff39c6f64cb119d30d9347668a5521bfa281b8a3c5d4c5b7cac658e13e648e0640c79568be77d1291d5cb4a9971ed74c427261f0461d661f9ab8d3578f1735ec93a11141337299ac30b61bada6e5f9eb70672c94001cdf5c62fbb59d83cb26bbe4d41cf2cc7c078fc1e0ec4abe89928adc6d50e46906927aaefb703a0cb1e21352979d4f20569ea8fb5ea341f99ba78da9eacc78ea568e02b82dde0127fad70fd73349bfa580d409c044ffcf315d826c69f7f675774e817383429b4f36d55e4cd8bf46b6a42ae14204c7e0c051f40d36b8c3410b8174948015153eebab80e2f0d94a94477a8f8c1befc831e2340973b10ba852fa474b29f313a248073e8d51cca47cb111da9e817d2c307442144963015ba9043af148afde20b352b18b18040b4599d8c57cb59f836683f927a6afa89b00da56662cecef22238fa09a6825bc9d0d6db1f18dcdaa434010852430df1984bab7619019c4e7fe0c52d342e99e0c322b573fb141d65336b83c61831a19062872561ce81a3eb267573659450d95db77607f1a94b105dcdf4974cc1a616ca4be887269806af130dff090c11684c616ae75733b06ce5c623965830b1998e1a147a044810a897182d53025c0d2c480a008a87c3c601ab30867ab114b7e6e03caa208a8a7cb94454176e25bb00ba53c0fbb8cd8a5865f3ab15d6abda6b8ce801915832b296d46f1aeed3d45aa568f09afa61445a1b07befaa3e42f4d32a3f216c33c2431be13498b2c05c3e00ae5dd5f406c88c001586ec991cb84597e902015899ae0f4930fb48fdc64e97216e90c1698457507b74e51e5a85aa09eb3bf84491222f55fe9cd78f33096125996032c280d18324143c20ad904ed28fac950882275402cc9ba9a298d15435b2d0f34f931519a46657bb1b83b84af2fbae0c52c3ecde95412a4e84bcafada6c6ab5e68ab5993552a5cebbd2552a152837ba5c0d8cc36eeb79bbc417f1842effb8837caf0f861319c05dd4cefae248e56888c1f30959587a530d31e6092f9ecf716068ca27268cc41efbfa611815b9384c1c262e675cb53b705aac38b98829fceafc282c1bccf8ee08c24a6bcea070f354c51767220e8fb955e501804b74a939d509d21348ec17f44d0dc41359cac035e7e85e66b130d8d560871be93d68309a20ba9a96797156137b3208a0440fd3194271b4acf8d192686732827d2450dbdd34a1d6afd68bb89129588da05427cbfbca8f15202815c6feb808e8e1280b20d4d76bac39c3c008eb6c5523dc9baa8ec43026a362f48fa3dd0354a62c9bb4927a91df36751f27ace1fe722d0462c14b07386830cce4bbe3988506d8d8c7b3d76a1677dd86564be541e1e734abb1ca4ac24fd5bafafa2d044e08d4c81a61a09b28b486a331011dbc06978949479cc9b9535f3aa02d6ff17b637ca4197aa7f15ab217fd632ba267b5be7465fcebf98bb64ca91a3976e967ca2e03c80fa2840191c430ca013f0a8217013c1651fbc8c0dd9cd9e374e5b5d4215bed2fd7b845154755a95de1fdee7c02939711cec06193310c936a3014d76abe0ccd8a9d84cd96564c7af91bb9c23175ebd4d6a40cd7bb3490da47979d48990a2db3a88839c8d2a8c757b97b57df7f6f768f63f5d8f88d06bbbeba8d37553ac76488041b2f10447b4e3a94b75e1f563a4eb463a4c8ce660f454d0e8652f4949a07fadea72a00ee41dfae1ba32d755d3eae222365913957961f6fff033ba38fc3ea5aa53c13cd307320484591bc84503545720f540890e8ff44a144a2b997cb65238784f0679282d72833cb43899416a80a87b324895c8f66e0ce21e4e756890c70cc962be75f890d5489208cd5ba124a92adb0d42bd0efb8fa7c17996a181e09779e95db7b821881038856b918231300afb0f6d6126933d2a54f94c76b7407e379058593d8f998904369264735349a85a233897705cac960932feede17e022c65945fd0f2e4a51ba534212c3902e7ee0c3277d0c9dd19648683bd3f83ccd526df9d41e66a93efce20739daa4e6c10d8b9e9a5a49b9e596e79c2fb2e53ec637a2b28b5db193a10e2a58f7921903a4800406d570275430a8397446f16f2b23bcfc57ab4c703b52957e6d0672be8f308197c469b28dc7daf250e833f61cb39542a29065c8cc281a248af1d3cab8abb59de30ae5cb8ec93fbc19f52c2af1c00986289164257910b388a152dc4772cddf5977ee4d90590f873060b40bd34b100885c090ed88466a37a5a515caf44f956928a2b4c0415e36bd18fc5436ef63983d821707368f22023fe22eb5a65b097131635d4bf55cccde53711261c391c182793e59611369cdeded7fdcf16feddeacbbacd53e3e097fd3f9cdb5ed9e8770efff385bfc7d27d74f08b737e2f156d1af93d5a7a476bf6674e4d3f65577afa50b80587ffde4eb9edb8d21d6c7f6f3a7a834d2ebbe5454670a55b6894117666e9c00abbbb6fe92dcdac09266ea1294d8226b35697f806765f1ff9ebdd315fdf15460abfbe71fafb77bfcb0d849ae72f8d91f71537b035fec40decfcd5c126f0a93002be74cff9d7bb1a67521ae730fad0938f645bab6740b3f0fbf1bf88a35763479b5af5ed66df1db17f512d5ed780d9bd7a021c5d5f18f6c93b709e7ddfcedd1f6c80b4f4ebbddb7ebbe76fdfce7fe7e261dfffd7ef7ff3cbb71f9e3e7ef9f9edebd3bffdf15ffef44ffff5cffff8fba7bf7c6bdcf74fdd5f9ffef0f417df99d0b66ebb1136313626da766be6c618df38df6df7802e75a1db5eb6796a52f0c6b7edaee0d4762919bf7bab37b18b4dda75cbb73ea514bd1ff9f27ffde37ffcf9f74ffff0f6f5f5e90f4fafbffbedf37fbebdbcbe3dbf7dfafce5e797e77ffff2edf5e3cbf39f3e7dfdf3b71f9e3f7df9faf2eb2faf5ffee7e5e3d7e7ff6b7e78fbfafaf2e1f3f3cbaf1f3efff2d3cbdbf3eba7b78fe6bb8f9f5e3f7efbf4f5f9eb87d71f5fbeeefef8b7ef7efcf6f2d6ffbb719f3e7fb7bff4fffff76f9fbf7bf9e9bf9f5f5f7e7af9f0f6f2fcfae1e71f5f7efbbbef7ff3f7000000ffff9c7fc0ca" + } + ] +} \ No newline at end of file