Source Code
Latest 25 from a total of 1,121 transactions
| Transaction Hash |
|
Block
|
From
|
To
|
|||||
|---|---|---|---|---|---|---|---|---|---|
| Redeem Offchain ... | 36542930 | 25 mins ago | IN | 0 ETH | 0.00002096 | ||||
| Redeem Offchain ... | 36473349 | 10 hrs ago | IN | 0 ETH | 0.00002219 | ||||
| Redeem Offchain ... | 36459475 | 11 hrs ago | IN | 0 ETH | 0.00002231 | ||||
| Redeem Offchain ... | 36455235 | 12 hrs ago | IN | 0 ETH | 0.00002249 | ||||
| Redeem Offchain ... | 36447288 | 13 hrs ago | IN | 0 ETH | 0.0000219 | ||||
| Redeem Offchain ... | 36419172 | 16 hrs ago | IN | 0 ETH | 0.00002229 | ||||
| Redeem Offchain ... | 36407448 | 17 hrs ago | IN | 0 ETH | 0.00001614 | ||||
| Redeem Offchain ... | 36406898 | 17 hrs ago | IN | 0 ETH | 0.00002107 | ||||
| Redeem Offchain ... | 36405907 | 17 hrs ago | IN | 0 ETH | 0.00002228 | ||||
| Redeem Offchain ... | 36397722 | 18 hrs ago | IN | 0 ETH | 0.00001734 | ||||
| Redeem Offchain ... | 36396315 | 19 hrs ago | IN | 0 ETH | 0.00002357 | ||||
| Redeem Offchain ... | 36371455 | 22 hrs ago | IN | 0 ETH | 0.00002218 | ||||
| Redeem Offchain ... | 36362634 | 23 hrs ago | IN | 0 ETH | 0.00002103 | ||||
| Redeem Offchain ... | 36358279 | 24 hrs ago | IN | 0 ETH | 0.00002218 | ||||
| Redeem Offchain ... | 36354798 | 24 hrs ago | IN | 0 ETH | 0.00002218 | ||||
| Redeem Offchain ... | 36290059 | 33 hrs ago | IN | 0 ETH | 0.00002111 | ||||
| Redeem Offchain ... | 36225181 | 43 hrs ago | IN | 0 ETH | 0.00002098 | ||||
| Redeem Offchain ... | 36216794 | 45 hrs ago | IN | 0 ETH | 0.00002184 | ||||
| Redeem Offchain ... | 36149676 | 2 days ago | IN | 0 ETH | 0.0000208 | ||||
| Redeem Offchain ... | 36127889 | 2 days ago | IN | 0 ETH | 0.00002085 | ||||
| Redeem Offchain ... | 36121359 | 2 days ago | IN | 0 ETH | 0.00002196 | ||||
| Redeem Offchain ... | 36111340 | 2 days ago | IN | 0 ETH | 0.00002201 | ||||
| Redeem Offchain ... | 36083235 | 2 days ago | IN | 0 ETH | 0.00001735 | ||||
| Redeem Offchain ... | 36082469 | 2 days ago | IN | 0 ETH | 0.00002219 | ||||
| Redeem Offchain ... | 36081296 | 2 days ago | IN | 0 ETH | 0.00002219 |
Latest 1 internal transaction
Advanced mode:
| Parent Transaction Hash | Block | From | To | |||
|---|---|---|---|---|---|---|
| 34931705 | 10 days ago | Contract Creation | 0 ETH |
Cross-Chain Transactions
Loading...
Loading
This contract may be a proxy contract. Click on More Options and select Is this a proxy? to confirm and enable the "Read as Proxy" & "Write as Proxy" tabs.
Contract Name:
RedeemSystem
Compiler Version
v0.8.28+commit.7893614a
ZkSolc Version
v1.5.7
Optimization Enabled:
Yes with Mode 3
Other Settings:
cancun EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
import {DataTable} from "../db/DataTable.sol";
import {IGigaJuiceSystem, ID as GIGA_JUICE_SYSTEM_CONTRACT_ID} from "../gigaJuiceSystem/IGigaJuiceSystem.sol";
import {IImportExportSystem, ID as IMPORT_EXPORT_SYSTEM_CONTRACT_ID} from "../ImportExportSystem/IImportExportSystem.sol";
import {IERC20} from "@openzeppelin/contracts/token/ERC20/IERC20.sol";
import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
import {SafeERC20} from "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
import {MANAGER_ROLE, GAME_LOGIC_CONTRACT_ROLE, DEPLOYER_ROLE} from "../constants/RoleConstants.sol";
import {GAME_ITEM_ID_CID, UNLOCKED_CID, INPUT_CID, MAX_SUPPLY_CID, MINT_COUNT_CID, OUTPUT_CID, ADDRESS_CID, BALANCE_CID, UINT256_CID, ID_CID, PLAYER_CID, NEXT_DOCID_CID, TIMESTAMP_CID, TIME_BETWEEN_CID, IS_CANCELLED_CID, EXPORT_AMOUNT_CID, LAST_TRANSFER_TIME_CID} from "../constants/ColumnConstants.sol";
uint256 constant ID = uint256(keccak256("game.gigaverse.system.redeem"));
contract RedeemSystem is DataTable {
using SafeERC20 for IERC20;
constructor(address gameRegistryAddress) DataTable(gameRegistryAddress, ID) {}
function initialize() external override onlyRole(DEPLOYER_ROLE) {
initializeTable("RedeemSystem", ID);
}
////////////////////
// Public Writes //
//////////////////
function redeemOffchainItems(uint256 dealId, uint256 itemId, uint256 itemAmount, uint256 nonce, bytes memory _signature) external payable whenNotPaused nonReentrant returns (bool) {
require(_thisContractIsActive(), "Contract is not active");
require(!isDealPaused(dealId), "Deal is paused");
require(!isDealOutsideTimeWindow(dealId), "Deal is not active at this time");
uint256[] memory itemIds = new uint256[](1);
uint256[] memory itemAmounts = new uint256[](1);
itemIds[0] = itemId;
itemAmounts[0] = itemAmount;
IImportExportSystem importExportSystem = IImportExportSystem(_gameRegistry.getSystem(IMPORT_EXPORT_SYSTEM_CONTRACT_ID));
importExportSystem.verifyAndUseSignature(msg.sender, itemIds, itemAmounts, nonce, _signature);
_redeemItem(dealId, itemId, itemAmount, nonce);
return true;
}
////////////////////
// Public Reads ///
//////////////////
function getRedemptionDeal(uint256 dealId) public view returns (uint256 inputId, uint256 inputAmount, uint256 outputAmount, address token) {
inputId = getDocUint256Value(dealId, GAME_ITEM_ID_CID);
inputAmount = getDocUint256Value(dealId, INPUT_CID);
outputAmount = getDocUint256Value(dealId, OUTPUT_CID);
token = getDocAddressValue(dealId, ADDRESS_CID);
}
function isDealPaused(uint256 dealId) public view returns (bool isPaused) {
return getDocBoolValue(dealId, IS_CANCELLED_CID);
}
function isDealJuiced(uint256 dealId) public view returns (bool isJuiced) {
return !getDocBoolValue(dealId, UNLOCKED_CID);
}
function getDealMaxPerPlayer(uint256 dealId) public view returns (uint256 maxPerPlayer) {
return getDocUint256Value(dealId, BALANCE_CID);
}
function getDealMaxRedemptionsPerTx(uint256 dealId) public view returns (uint256 maxRedemptionsPerTx) {
return getDocUint256Value(dealId, EXPORT_AMOUNT_CID);
}
function getDealRedemptionsForPlayer(uint256 dealId, address player) public view returns (uint256 redemptions) {
return getDocUint256Value(_getPlayerDealDocId(dealId, player), MINT_COUNT_CID);
}
function getDealRedemptionsTotal(uint256 dealId) public view returns (uint256 redemptions) {
return getDocUint256Value(dealId, MINT_COUNT_CID);
}
function getDealMaxTotal(uint256 dealId) public view returns (uint256 maxTotal) {
return getDocUint256Value(dealId, MAX_SUPPLY_CID);
}
function getDealCooldown(uint256 dealId) public view returns (uint256 cooldown) {
return getDocUint256Value(dealId, TIME_BETWEEN_CID);
}
function getEndOfCooldownForPlayer(uint256 dealId, address player) public view returns (uint256 endOfCooldown) {
uint256 cooldown = getDealCooldown(dealId);
if (cooldown == 0) {
return 0;
}
uint256 lastRedemptionTime = getDocUint256Value(_getPlayerDealDocId(dealId, player), LAST_TRANSFER_TIME_CID);
return lastRedemptionTime + cooldown;
}
function isPlayerOnCooldown(uint256 dealId, address player) public view returns (bool isOnCooldown) {
return block.timestamp < getEndOfCooldownForPlayer(dealId, player);
}
function isPlayerAtMaxRedemptions(uint256 dealId, address player, uint256 numRedemptions) public view returns (bool isAtMax) {
uint256 maxPerPlayer = getDealMaxPerPlayer(dealId);
if (maxPerPlayer == 0) {
return false;
}
uint256 currentRedemptions = getDealRedemptionsForPlayer(dealId, player);
return currentRedemptions + numRedemptions > maxPerPlayer;
}
function isDealAtMaxRedemptions(uint256 dealId, uint256 numRedemptions) public view returns (bool isAtMax) {
uint256 maxTotal = getDealMaxTotal(dealId);
if (maxTotal == 0) {
return false;
}
uint256 currentTotal = getDealRedemptionsTotal(dealId);
return currentTotal + numRedemptions > maxTotal;
}
function isOverMaxRedemptionsPerTx(uint256 dealId, uint256 numRedemptions) public view returns (bool isOver) {
uint256 maxPerTx = getDealMaxRedemptionsPerTx(dealId);
if (maxPerTx == 0) {
return false;
}
return numRedemptions > maxPerTx;
}
function getDealStartTime(uint256 dealId) public view returns (uint256 startTime) {
return getDocUint256Value(dealId, TIMESTAMP_CID);
}
function getDealEndTime(uint256 dealId) public view returns (uint256 endTime) {
return getDocUint256Value(dealId, LAST_TRANSFER_TIME_CID);
}
function doesDealExist(uint256 dealId) public view returns (bool doesExist) {
return getDocUint256Value(dealId, GAME_ITEM_ID_CID) > 0;
}
function wasNonceUsedToRedeem(uint256 nonce, uint256 dealId) public view returns (bool wasUsed) {
uint256 docId = _getRedemptionLogDocId(nonce, dealId);
// Check if the log exists by verifying the stored nonce matches
return getDocUint256Value(docId, ID_CID) == nonce && nonce > 0;
}
function getRedemptionLog(uint256 nonce, uint256 dealId) public view returns (address player, uint256 timestamp, uint256 numRedemptions) {
uint256 docId = _getRedemptionLogDocId(nonce, dealId);
player = getDocAddressValue(docId, PLAYER_CID);
timestamp = getDocUint256Value(docId, TIMESTAMP_CID);
numRedemptions = getDocUint256Value(docId, EXPORT_AMOUNT_CID);
}
function isDealOutsideTimeWindow(uint256 dealId) public view returns (bool isOutside) {
uint256 startTime = getDealStartTime(dealId);
uint256 endTime = getDealEndTime(dealId);
// If both are 0, no time restriction
if (startTime == 0 && endTime == 0) {
return false;
}
// If only start is set, check if we've started
if (endTime == 0) {
return block.timestamp < startTime;
}
// If only end is set, check if we've ended
if (startTime == 0) {
return block.timestamp > endTime;
}
// Both are set, check window
return block.timestamp < startTime || block.timestamp > endTime;
}
//////////////
// Manager //
////////////
/// @notice Creates a redemption deal for an item (starts paused)
/// @param itemId The game item ID to create a deal for
/// @param inputAmountPerRedemption How many items are required per redemption (e.g., 10)
/// @param outputAmountPerRedemption How much token to pay out per redemption in 18 decimals (use ether keyword: 0.1 ether for $0.10)
/// @param tokenToExchangeFor The ERC20 token address, or address(0) for native ETH
function createDeal(uint256 itemId, uint256 inputAmountPerRedemption, uint256 outputAmountPerRedemption, address tokenToExchangeFor) external onlyRole(MANAGER_ROLE) returns (uint256) {
uint256 dealId = _getAndIncrementAutoIncId();
require(inputAmountPerRedemption > 0, "Input amount must be greater than 0");
require(outputAmountPerRedemption > 0, "Output amount must be greater than 0");
require(itemId != 0, "Item ID cannot be 0");
uint8 tokenDecimals = 18;
uint256 rawOutputAmount;
if (tokenToExchangeFor == address(0)) {
rawOutputAmount = outputAmountPerRedemption;
} else {
tokenDecimals = IERC20Metadata(tokenToExchangeFor).decimals();
rawOutputAmount = outputAmountPerRedemption * (10 ** tokenDecimals) / 1e18;
}
require(rawOutputAmount > 0, "Output amount too small for token decimals");
_setDocUint256Value(dealId, GAME_ITEM_ID_CID, itemId);
_setDocUint256Value(dealId, INPUT_CID, inputAmountPerRedemption);
_setDocUint256Value(dealId, OUTPUT_CID, rawOutputAmount);
_setDocUint256Value(dealId, UINT256_CID, tokenDecimals);
_setDocAddressValue(dealId, ADDRESS_CID, tokenToExchangeFor);
_setDocBoolValue(dealId, IS_CANCELLED_CID, true); // Starts paused
return dealId;
}
/// @notice Sets the limits for a deal (0 = no limit for that parameter)
/// @param dealId The deal to set limits for
/// @param maxRedemptionsPerTx Max redemptions allowed per transaction (0 = unlimited)
/// @param maxRedemptionsTotal Max total redemptions for this deal (0 = unlimited)
/// @param maxRedemptionsPerPlayer Max redemptions per player (0 = unlimited)
/// @param cooldownBetweenRedemptions Seconds between redemptions per player (0 = no cooldown)
/// @param requiresJuice Whether the player must be juiced to redeem
function setDealLimits(uint256 dealId, uint256 maxRedemptionsPerTx, uint256 maxRedemptionsTotal, uint256 maxRedemptionsPerPlayer, uint256 cooldownBetweenRedemptions, bool requiresJuice) external onlyRole(MANAGER_ROLE) {
require(doesDealExist(dealId), "Deal does not exist");
require(isDealPaused(dealId), "Deal is not paused");
_setDocUint256Value(dealId, EXPORT_AMOUNT_CID, maxRedemptionsPerTx);
_setDocUint256Value(dealId, MAX_SUPPLY_CID, maxRedemptionsTotal);
_setDocUint256Value(dealId, BALANCE_CID, maxRedemptionsPerPlayer);
_setDocUint256Value(dealId, TIME_BETWEEN_CID, cooldownBetweenRedemptions);
_setDocBoolValue(dealId, UNLOCKED_CID, !requiresJuice);
}
function setDealPaused(uint256 dealId, bool isPaused) external onlyRole(MANAGER_ROLE) {
_setDocBoolValue(dealId, IS_CANCELLED_CID, isPaused);
}
/// @notice Sets the time window for a deal (0 = no restriction for that bound)
/// @param dealId The deal to set the time window for
/// @param startTime Unix timestamp when the deal becomes active (0 = immediate)
/// @param endTime Unix timestamp when the deal expires (0 = never expires)
function setDealTimeWindow(uint256 dealId, uint256 startTime, uint256 endTime) external onlyRole(MANAGER_ROLE) {
require(doesDealExist(dealId), "Deal does not exist");
if (startTime > 0 && endTime > 0) {
require(endTime > startTime, "End time must be after start time");
}
_setDocUint256Value(dealId, TIMESTAMP_CID, startTime);
_setDocUint256Value(dealId, LAST_TRANSFER_TIME_CID, endTime);
}
function withdraw() external onlyRole(MANAGER_ROLE) {
(bool success, ) = payable(msg.sender).call{value: address(this).balance}("");
require(success, "Transfer failed");
}
function withdrawToken(address token) external onlyRole(MANAGER_ROLE) {
uint256 balance = IERC20(token).balanceOf(address(this));
IERC20(token).safeTransfer(msg.sender, balance);
}
/////////////////////
// Game Contracts //
///////////////////
////////////////////////
// Internal Helpers ///
//////////////////////
function _redeemItem(uint256 dealId, uint256 itemId, uint256 itemAmount, uint256 nonce) internal {
if (isDealJuiced(dealId)) {
IGigaJuiceSystem gigaJuiceSystem = IGigaJuiceSystem(_gameRegistry.getSystem(GIGA_JUICE_SYSTEM_CONTRACT_ID));
require(gigaJuiceSystem.isPlayerJuiced(msg.sender), "Player is not juiced");
}
// Get the redemption deal configuration
(uint256 inputId, uint256 inputAmount, uint256 outputAmount, address token) = getRedemptionDeal(dealId);
require(inputId == itemId, "Item ID does not match redemption deal");
require(inputAmount > 0, "No redemption deal for this item");
require(itemAmount > 0, "Item amount must be greater than 0");
require(itemAmount % inputAmount == 0, "Item amount must be a multiple of the redemption rate");
// Calculate how many redemptions and total output
uint256 numRedemptions = itemAmount / inputAmount;
uint256 totalOutput = numRedemptions * outputAmount;
// Check limits
require(!isPlayerOnCooldown(dealId, msg.sender), "Player is on cooldown");
require(!isPlayerAtMaxRedemptions(dealId, msg.sender, numRedemptions), "Exceeds max redemptions per player");
require(!isDealAtMaxRedemptions(dealId, numRedemptions), "Exceeds max total redemptions");
require(!isOverMaxRedemptionsPerTx(dealId, numRedemptions), "Exceeds max redemptions per transaction");
_createRedemptionLog(dealId, numRedemptions, nonce);
if (token == address(0)) {
// Native ETH
require(address(this).balance >= totalOutput, "Insufficient ETH balance");
(bool success, ) = payable(msg.sender).call{value: totalOutput}("");
require(success, "ETH transfer failed");
} else {
// ERC20 token
require(IERC20(token).balanceOf(address(this)) >= totalOutput, "Insufficient token balance");
IERC20(token).safeTransfer(msg.sender, totalOutput);
}
}
function _createRedemptionLog(uint256 dealId, uint256 numRedemptions, uint256 nonce) internal {
// Update player tracking
uint256 playerDocId = _getPlayerDealDocId(dealId, msg.sender);
uint256 currentPlayerCount = getDocUint256Value(playerDocId, MINT_COUNT_CID);
_setDocUint256Value(playerDocId, MINT_COUNT_CID, currentPlayerCount + numRedemptions);
_setDocUint256Value(playerDocId, LAST_TRANSFER_TIME_CID, block.timestamp);
_setDocAddressValue(playerDocId, PLAYER_CID, msg.sender);
// Update total deal redemptions
uint256 currentTotal = getDocUint256Value(dealId, MINT_COUNT_CID);
_setDocUint256Value(dealId, MINT_COUNT_CID, currentTotal + numRedemptions);
// Create log entry
uint256 docId = _getRedemptionLogDocId(nonce, dealId);
_setDocAddressValue(docId, PLAYER_CID, msg.sender);
_setDocUint256Value(docId, ID_CID, nonce);
_setDocUint256Value(docId, UINT256_CID, dealId);
_setDocUint256Value(docId, TIMESTAMP_CID, block.timestamp);
_setDocUint256Value(docId, EXPORT_AMOUNT_CID, numRedemptions);
}
function _getRedemptionLogDocId(uint256 nonce, uint256 dealId) internal pure returns (uint256) {
return uint256(keccak256(abi.encodePacked("redemption_log", nonce, dealId)));
}
function _getPlayerDealDocId(uint256 dealId, address player) internal pure returns (uint256) {
return uint256(keccak256(abi.encodePacked("player_deal", dealId, player)));
}
function _thisContractIsActive() internal view returns (bool) {
return _gameRegistry.getSystem(ID) == address(this);
}
// Allow contract to receive ETH for payouts
receive() external payable {}
}// SPDX-License-Identifier: MIT LICENSE
pragma solidity ^0.8.9;
import {DataStore, ID as DATA_STORE_ID} from "./DataStore.sol";
import {DEPLOYER_ROLE} from "../constants/RoleConstants.sol";
import {NAME_CID, ADDRESS_CID, ID_CID, NEXT_DOCID_CID, OWNER_CID} from "../constants/ColumnConstants.sol";
import {GameRegistryConsumer} from "../core/GameRegistryConsumer.sol";
contract DataTable is GameRegistryConsumer {
error AlreadyInitialized();
bool private _initialized;
constructor(address gameRegistryAddress, uint256 ID) GameRegistryConsumer(gameRegistryAddress, ID) {}
function owner() public view virtual returns (address) {
return getTableAddressValue(OWNER_CID);
}
function name() public view virtual returns (string memory) {
return getTableStringValue(NAME_CID);
}
function initializeTable(string memory nameToSet, uint256 id) internal {
if (_initialized) {
revert AlreadyInitialized();
}
_setTableAddressValue(ADDRESS_CID, address(this));
_setTableAddressValue(OWNER_CID, msg.sender);
_setTableStringValue(NAME_CID, nameToSet);
_setTableUint256Value(ID_CID, id);
_initialized = true;
}
function getTableId() public virtual view returns (uint256) {
return getId();
}
function _getAndIncrementAutoIncId() internal returns (uint256) {
uint256 currentId = getTableUint256Value(NEXT_DOCID_CID);
_setTableUint256Value(NEXT_DOCID_CID, currentId + 1);
return currentId + 1;
}
function _incrementAmount(uint256 docId, uint256 columnId, uint256 amount) internal {
uint256 currentAmount = getDocUint256Value(docId, columnId);
_setDocUint256Value(docId, columnId, currentAmount + amount);
}
function _decrementAmount(uint256 docId, uint256 columnId, uint256 amount) internal {
uint256 currentAmount = getDocUint256Value(docId, columnId);
_setDocUint256Value(docId, columnId, currentAmount - amount);
}
function _setTableStringValue(uint256 columnId, string memory value) internal {
DataStore(_gameRegistry.getSystem(DATA_STORE_ID)).setString(getTableId(), 0, columnId, value);
}
function _setTableUint256Value(uint256 columnId, uint256 value) internal {
DataStore(_gameRegistry.getSystem(DATA_STORE_ID)).setUint256(getTableId(), 0, columnId, value);
}
function _setTableAddressValue(uint256 columnId, address value) internal {
DataStore(_gameRegistry.getSystem(DATA_STORE_ID)).setAddress(getTableId(), 0, columnId, value);
}
function _setTableBoolValue(uint256 columnId, bool value) internal {
DataStore(_gameRegistry.getSystem(DATA_STORE_ID)).setBool(getTableId(), 0, columnId, value);
}
function _setTableAdddressValue(uint256 columnId, address value) internal {
DataStore(_gameRegistry.getSystem(DATA_STORE_ID)).setAddress(getTableId(), 0, columnId, value);
}
function _setTableUint256ArrayValue(uint256 columnId, uint256[] memory value) internal {
DataStore(_gameRegistry.getSystem(DATA_STORE_ID)).setUint256ArrayValue(getTableId(), 0, columnId, value);
}
function _setTableBoolArrayValue(uint256 columnId, bool[] memory value) internal {
DataStore(_gameRegistry.getSystem(DATA_STORE_ID)).setBoolArrayValue(getTableId(), 0, columnId, value);
}
function _setTableAddressArrayValue(uint256 columnId, address[] memory value) internal {
DataStore(_gameRegistry.getSystem(DATA_STORE_ID)).setAddressArrayValue(getTableId(), 0, columnId, value);
}
function _setDocAddressArrayValue(uint256 docId, uint256 columnId, address[] memory value) internal {
DataStore(_gameRegistry.getSystem(DATA_STORE_ID)).setAddressArrayValue(getTableId(), docId, columnId, value);
}
function _setDocBoolArrayValue(uint256 docId, uint256 columnId, bool[] memory value) internal {
DataStore(_gameRegistry.getSystem(DATA_STORE_ID)).setBoolArrayValue(getTableId(), docId, columnId, value);
}
function _setDocStringValue(uint256 docId, uint256 columnId, string memory value) internal {
DataStore(_gameRegistry.getSystem(DATA_STORE_ID)).setString(getTableId(), docId, columnId, value);
}
function _setDocUint256Value(uint256 docId, uint256 columnId, uint256 value) internal {
DataStore(_gameRegistry.getSystem(DATA_STORE_ID)).setUint256(getTableId(), docId, columnId, value);
}
function _setDocUint256ArrayValue(uint256 docId, uint256 columnId, uint256[] memory value) internal {
DataStore(_gameRegistry.getSystem(DATA_STORE_ID)).setUint256ArrayValue(getTableId(), docId, columnId, value);
}
function _setDocBoolValue(uint256 docId, uint256 columnId, bool value) internal {
DataStore(_gameRegistry.getSystem(DATA_STORE_ID)).setBool(getTableId(), docId, columnId, value);
}
function _setDocAddressValue(uint256 docId, uint256 columnId, address value) internal {
DataStore(_gameRegistry.getSystem(DATA_STORE_ID)).setAddress(getTableId(), docId, columnId, value);
}
function getTableBoolValue(uint256 columnId) public view returns (bool) {
return DataStore(_gameRegistry.getSystem(DATA_STORE_ID)).getBool(getTableId(), 0, columnId);
}
function getTableUint256Value(uint256 columnId) public view returns (uint256) {
return DataStore(_gameRegistry.getSystem(DATA_STORE_ID)).getUint256(getTableId(), 0, columnId);
}
function getTableStringValue(uint256 columnId) public view returns (string memory) {
return DataStore(_gameRegistry.getSystem(DATA_STORE_ID)).getString(getTableId(), 0, columnId);
}
function getTableAddressValue(uint256 columnId) public view returns (address) {
return DataStore(_gameRegistry.getSystem(DATA_STORE_ID)).getAddress(getTableId(), 0, columnId);
}
function getTableUint256ArrayValue(uint256 columnId) public view returns (uint256[] memory) {
return DataStore(_gameRegistry.getSystem(DATA_STORE_ID)).getUint256Array(getTableId(), 0, columnId);
}
function getDocUint256ArrayValue(uint256 docId, uint256 columnId) public view returns (uint256[] memory) {
return DataStore(_gameRegistry.getSystem(DATA_STORE_ID)).getUint256Array(getTableId(), docId, columnId);
}
function getDocStringValue(uint256 docId, uint256 columnId) public view returns (string memory) {
return DataStore(_gameRegistry.getSystem(DATA_STORE_ID)).getString(getTableId(), docId, columnId);
}
function getDocUint256Value(uint256 docId, uint256 columnId) public view returns (uint256) {
return DataStore(_gameRegistry.getSystem(DATA_STORE_ID)).getUint256(getTableId(), docId, columnId);
}
function getDocBoolValue(uint256 docId, uint256 columnId) public view returns (bool) {
return DataStore(_gameRegistry.getSystem(DATA_STORE_ID)).getBool(getTableId(), docId, columnId);
}
function getDocAddressValue(uint256 docId, uint256 columnId) public view returns (address) {
return DataStore(_gameRegistry.getSystem(DATA_STORE_ID)).getAddress(getTableId(), docId, columnId);
}
function getDocAddressArrayValue(uint256 docId, uint256 columnId) public view returns (address[] memory) {
return DataStore(_gameRegistry.getSystem(DATA_STORE_ID)).getAddressArray(getTableId(), docId, columnId);
}
function getDocBoolArrayValue(uint256 docId, uint256 columnId) public view returns (bool[] memory) {
return DataStore(_gameRegistry.getSystem(DATA_STORE_ID)).getBoolArray(getTableId(), docId, columnId);
}
function hasDocStringValue(uint256 docId, uint256 columnId) public view returns (bool) {
return DataStore(_gameRegistry.getSystem(DATA_STORE_ID)).hasStringValue(getTableId(), docId, columnId);
}
function hasDocValue(uint256 docId, uint256 columnId) public view returns (bool) {
return DataStore(_gameRegistry.getSystem(DATA_STORE_ID)).hasValue(getTableId(), docId, columnId);
}
function getPlayerDocId(address player) public pure returns (uint256) {
return uint256(uint160(player));
}
}// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
import "@openzeppelin/contracts/utils/introspection/IERC165.sol";
uint256 constant ID = uint256(keccak256("game.gigaverse.system.gigaJuice"));
interface IGigaJuiceSystem is IERC165 {
function isPlayerJuiced(address player) external view returns (bool);
}// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
import "@openzeppelin/contracts/utils/introspection/IERC165.sol";
uint256 constant ID = uint256(keccak256("game.gigaverse.system.importexport"));
interface IImportExportSystem is IERC165 {
function importItemsIntoGame(uint256[] memory itemIds, uint256[] memory itemAmounts) external payable returns (uint256);
function exportItemsFromGame(uint256[] memory itemIds, uint256[] memory itemAmounts, uint256 nonce, bytes memory _signature) external payable returns (uint256);
function verifyAndUseSignature(address player, uint256[] memory itemIds, uint256[] memory itemAmounts, uint256 nonce, bytes memory _signature) external returns (bool);
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol)
pragma solidity ^0.8.0;
/**
* @dev Interface of the ERC20 standard as defined in the EIP.
*/
interface IERC20 {
/**
* @dev Emitted when `value` tokens are moved from one account (`from`) to
* another (`to`).
*
* Note that `value` may be zero.
*/
event Transfer(address indexed from, address indexed to, uint256 value);
/**
* @dev Emitted when the allowance of a `spender` for an `owner` is set by
* a call to {approve}. `value` is the new allowance.
*/
event Approval(address indexed owner, address indexed spender, uint256 value);
/**
* @dev Returns the amount of tokens in existence.
*/
function totalSupply() external view returns (uint256);
/**
* @dev Returns the amount of tokens owned by `account`.
*/
function balanceOf(address account) external view returns (uint256);
/**
* @dev Moves `amount` tokens from the caller's account to `to`.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* Emits a {Transfer} event.
*/
function transfer(address to, uint256 amount) external returns (bool);
/**
* @dev Returns the remaining number of tokens that `spender` will be
* allowed to spend on behalf of `owner` through {transferFrom}. This is
* zero by default.
*
* This value changes when {approve} or {transferFrom} are called.
*/
function allowance(address owner, address spender) external view returns (uint256);
/**
* @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* IMPORTANT: Beware that changing an allowance with this method brings the risk
* that someone may use both the old and the new allowance by unfortunate
* transaction ordering. One possible solution to mitigate this race
* condition is to first reduce the spender's allowance to 0 and set the
* desired value afterwards:
* https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
*
* Emits an {Approval} event.
*/
function approve(address spender, uint256 amount) external returns (bool);
/**
* @dev Moves `amount` tokens from `from` to `to` using the
* allowance mechanism. `amount` is then deducted from the caller's
* allowance.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* Emits a {Transfer} event.
*/
function transferFrom(
address from,
address to,
uint256 amount
) external returns (bool);
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Metadata.sol)
pragma solidity ^0.8.0;
import "../IERC20.sol";
/**
* @dev Interface for the optional metadata functions from the ERC20 standard.
*
* _Available since v4.1._
*/
interface IERC20Metadata is IERC20 {
/**
* @dev Returns the name of the token.
*/
function name() external view returns (string memory);
/**
* @dev Returns the symbol of the token.
*/
function symbol() external view returns (string memory);
/**
* @dev Returns the decimals places of the token.
*/
function decimals() external view returns (uint8);
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.8.0) (token/ERC20/utils/SafeERC20.sol)
pragma solidity ^0.8.0;
import "../IERC20.sol";
import "../extensions/draft-IERC20Permit.sol";
import "../../../utils/Address.sol";
/**
* @title SafeERC20
* @dev Wrappers around ERC20 operations that throw on failure (when the token
* contract returns false). Tokens that return no value (and instead revert or
* throw on failure) are also supported, non-reverting calls are assumed to be
* successful.
* To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract,
* which allows you to call the safe operations as `token.safeTransfer(...)`, etc.
*/
library SafeERC20 {
using Address for address;
function safeTransfer(
IERC20 token,
address to,
uint256 value
) internal {
_callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value));
}
function safeTransferFrom(
IERC20 token,
address from,
address to,
uint256 value
) internal {
_callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value));
}
/**
* @dev Deprecated. This function has issues similar to the ones found in
* {IERC20-approve}, and its usage is discouraged.
*
* Whenever possible, use {safeIncreaseAllowance} and
* {safeDecreaseAllowance} instead.
*/
function safeApprove(
IERC20 token,
address spender,
uint256 value
) internal {
// safeApprove should only be called when setting an initial allowance,
// or when resetting it to zero. To increase and decrease it, use
// 'safeIncreaseAllowance' and 'safeDecreaseAllowance'
require(
(value == 0) || (token.allowance(address(this), spender) == 0),
"SafeERC20: approve from non-zero to non-zero allowance"
);
_callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value));
}
function safeIncreaseAllowance(
IERC20 token,
address spender,
uint256 value
) internal {
uint256 newAllowance = token.allowance(address(this), spender) + value;
_callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));
}
function safeDecreaseAllowance(
IERC20 token,
address spender,
uint256 value
) internal {
unchecked {
uint256 oldAllowance = token.allowance(address(this), spender);
require(oldAllowance >= value, "SafeERC20: decreased allowance below zero");
uint256 newAllowance = oldAllowance - value;
_callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));
}
}
function safePermit(
IERC20Permit token,
address owner,
address spender,
uint256 value,
uint256 deadline,
uint8 v,
bytes32 r,
bytes32 s
) internal {
uint256 nonceBefore = token.nonces(owner);
token.permit(owner, spender, value, deadline, v, r, s);
uint256 nonceAfter = token.nonces(owner);
require(nonceAfter == nonceBefore + 1, "SafeERC20: permit did not succeed");
}
/**
* @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement
* on the return value: the return value is optional (but if data is returned, it must not be false).
* @param token The token targeted by the call.
* @param data The call data (encoded using abi.encode or one of its variants).
*/
function _callOptionalReturn(IERC20 token, bytes memory data) private {
// We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since
// we're implementing it ourselves. We use {Address-functionCall} to perform this call, which verifies that
// the target address contains contract code and also asserts for success in the low-level call.
bytes memory returndata = address(token).functionCall(data, "SafeERC20: low-level call failed");
if (returndata.length > 0) {
// Return data is optional
require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed");
}
}
}// SPDX-License-Identifier: MIT LICENSE
pragma solidity ^0.8.9;
// Pauser Role - Can pause the game
bytes32 constant PAUSER_ROLE = keccak256("PAUSER_ROLE");
// Minter Role - Can mint items, NFTs, and ERC20 currency
bytes32 constant MINTER_ROLE = keccak256("MINTER_ROLE");
// Manager Role - Can manage the shop, loot tables, and other game data
bytes32 constant MANAGER_ROLE = keccak256("MANAGER_ROLE");
// Depoloyer Role - Can Deploy new Systems
bytes32 constant DEPLOYER_ROLE = keccak256("DEPLOYER_ROLE");
// Game Logic Contract - Contract that executes game logic and accesses other systems
bytes32 constant GAME_LOGIC_CONTRACT_ROLE = keccak256("GAME_LOGIC_CONTRACT_ROLE");
// For functions callable from game server
bytes32 constant SERVER_JUDGE_ROLE = keccak256("SERVER_JUDGE_ROLE");// SPDX-License-Identifier: MIT LICENSE
pragma solidity ^0.8.9;
uint256 constant NAME_CID = uint256(keccak256("name"));
uint256 constant DESCRIPTION_CID = uint256(keccak256("description"));
uint256 constant LEVEL_CID = uint256(keccak256("level"));
uint256 constant IS_NOOB_CID = uint256(keccak256("is_noob"));
uint256 constant NOOB_TOKEN_CID = uint256(keccak256("noob_tokend_id"));
uint256 constant GIGA_NAME_TOKENDID_CID = uint256(keccak256("giganame_tokend_id"));
uint256 constant IS_GIGA_NAME_CID = uint256(keccak256("is_giga_name"));
uint256 constant GAME_ITEM_ID_CID = uint256(keccak256("game_item_id"));
uint256 constant UINT256_CID = uint256(keccak256("int256"));
uint256 constant ETH_MINT_PRICE_CID = uint256(keccak256("eth_mint_price"));
uint256 constant NEXT_DOCID_CID = uint256(keccak256("next_token_id"));
uint256 constant ID_CID = uint256(keccak256("id"));
uint256 constant BASE_NAME_CID = uint256(keccak256("base_name"));
uint256 constant BASE_URI_CID = uint256(keccak256("base_uri"));
uint256 constant LAST_TRANSFER_TIME_CID = uint256(keccak256("last_transfer_time"));
uint256 constant OWNER_CID = uint256(keccak256("owner"));
uint256 constant INITIALIZED_CID = uint256(keccak256("initialized"));
uint256 constant MAX_SUPPLY_CID = uint256(keccak256("max_supply"));
uint256 constant ADDRESS_CID = uint256(keccak256("address"));
uint256 constant IS_SOULBOUND_CID = uint256(keccak256("soulbound"));
uint256 constant TIME_BETWEEN_CID = uint256(keccak256("time_between"));
uint256 constant TIMESTAMP_CID = uint256(keccak256("timestamp"));
uint256 constant IMG_URL_CID = uint256(keccak256("img_url"));
uint256 constant PLAYER_CID = uint256(keccak256("player"));
uint256 constant MINT_COUNT_CID = uint256(keccak256("mint_count"));
uint256 constant CONTRACT_URI_CID = uint256(keccak256("contract_uri"));
uint256 constant IS_RECYCLABLE_CID = uint256(keccak256("is_recyclable"));
uint256 constant BURN_COUNT_CID = uint256(keccak256("burn_count"));
uint256 constant BALANCE_CID = uint256(keccak256("balance"));
uint256 constant ICON_URL_CID = uint256(keccak256("icon_url"));
uint256 constant DUNGEON_ID_CID = uint256(keccak256("dungeon_id"));
uint256 constant ENERGY_CID = uint256(keccak256("energy"));
uint256 constant IS_CANCELLED_CID = uint256(keccak256("is_cancelled"));
uint256 constant SPRITE_SHEET_URL_CID = uint256(keccak256("sprite_sheet_url"));
uint256 constant IMPORT_AMOUNT_CID = uint256(keccak256("import_amount"));
uint256 constant EXPORT_AMOUNT_CID = uint256(keccak256("export_amount"));
uint256 constant EXPORT_LICENSE_CID = uint256(keccak256("export_license"));
uint256 constant UNLOCKED_CID = uint256(keccak256("unlocked"));
uint256 constant FACTION_CID = uint256(keccak256("faction"));
uint256 constant REFERRER_CID = uint256(keccak256("referrer"));
uint256 constant INPUT_CID = uint256(keccak256("input"));
uint256 constant OUTPUT_CID = uint256(keccak256("output"));// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
import "./DataTypes.sol";
import {IDataStore, ID} from "./IDataStore.sol";
import {GameRegistryConsumer} from "../core/GameRegistryConsumer.sol";
import {GAME_LOGIC_CONTRACT_ROLE} from "../constants/RoleConstants.sol";
contract DataStore is IDataStore, GameRegistryConsumer {
using DataTypes for *;
mapping(uint256 => mapping(uint256 => bytes32)) public datastore;
mapping(uint256 => mapping(uint256 => bytes32[])) public arrayStore;
mapping(uint256 => mapping(uint256 => string)) private stringStore;
mapping(uint256 => bytes32) public columnTypes;
constructor(address gameRegistryAddress) GameRegistryConsumer(gameRegistryAddress, ID) {}
function generateKey(uint256 docId, uint256 colId) public pure returns (uint256) {
return uint256(keccak256(abi.encodePacked(docId, colId)));
}
function generateArrayKey (uint256 docId, uint256 colId) public pure returns (uint256) {
return uint256(keccak256(abi.encodePacked(docId, colId, "__array")));
}
function setValue(uint256 tableId, uint256 docId, uint256 colId, bytes32 value) public onlyRole(GAME_LOGIC_CONTRACT_ROLE) {
datastore[tableId][uint256(keccak256(abi.encodePacked(docId, colId)))] = value;
emit ValueSet(tableId, docId, colId, value);
}
function setArrayValue(uint256 tableId, uint256 docId, uint256 colId, bytes32[] memory value) public onlyRole(GAME_LOGIC_CONTRACT_ROLE) {
arrayStore[tableId][generateArrayKey(docId, colId)] = value;
emit ArrayValueSet(tableId, docId, colId, value);
}
function setUint256ArrayValue(uint256 tableId, uint256 docId, uint256 colId, uint256[] memory value) public onlyRole(GAME_LOGIC_CONTRACT_ROLE) {
require (getColumnType(colId) == IDataStore.ColumnType.UINT256, "Column is not UINT256ARRAY");
bytes32[] memory packedValues = new bytes32[](value.length);
for (uint256 i = 0; i < value.length; i++) {
packedValues[i] = value[i].packUint256();
}
setArrayValue(tableId, docId, colId, packedValues);
}
function setBoolArrayValue(uint256 tableId, uint256 docId, uint256 colId, bool[] memory value) public onlyRole(GAME_LOGIC_CONTRACT_ROLE) {
require (getColumnType(colId) == IDataStore.ColumnType.BOOL, "Column is not BOOLARRAY");
bytes32[] memory packedValues = new bytes32[](value.length);
for (uint256 i = 0; i < value.length; i++) {
packedValues[i] = value[i].packBool();
}
setArrayValue(tableId, docId, colId, packedValues);
}
function setAddressArrayValue(uint256 tableId, uint256 docId, uint256 colId, address[] memory value) public onlyRole(GAME_LOGIC_CONTRACT_ROLE) {
require (getColumnType(colId) == IDataStore.ColumnType.ADDRESS, "Column is not ADDRESSARRAY");
bytes32[] memory packedValues = new bytes32[](value.length);
for (uint256 i = 0; i < value.length; i++) {
packedValues[i] = value[i].packAddress();
}
setArrayValue(tableId, docId, colId, packedValues);
}
function getUint256Array(uint256 tableId, uint256 docId, uint256 colId) public view returns (uint256[] memory) {
require (getColumnType(colId) == IDataStore.ColumnType.UINT256, "Column is not UINT256");
bytes32[] memory byteArray = arrayStore[tableId][generateArrayKey(docId, colId)];
uint256[] memory uintArray = new uint256[](byteArray.length);
for (uint256 i = 0; i < byteArray.length; i++) {
uintArray[i] = byteArray[i].unpackUint256();
}
return uintArray;
}
function getBoolArray(uint256 tableId, uint256 docId, uint256 colId) public view returns (bool[] memory) {
require (getColumnType(colId) == IDataStore.ColumnType.BOOL, "Column is not BOOL");
bytes32[] memory byteArray = arrayStore[tableId][generateArrayKey(docId, colId)];
bool[] memory boolArray = new bool[](byteArray.length);
for (uint256 i = 0; i < byteArray.length; i++) {
boolArray[i] = byteArray[i].unpackBool();
}
return boolArray;
}
function getAddressArray(uint256 tableId, uint256 docId, uint256 colId) public view returns (address[] memory) {
require (getColumnType(colId) == IDataStore.ColumnType.ADDRESS, "Column is not ADDRESS");
bytes32[] memory byteArray = arrayStore[tableId][generateArrayKey(docId, colId)];
address[] memory addressArray = new address[](byteArray.length);
for (uint256 i = 0; i < byteArray.length; i++) {
addressArray[i] = byteArray[i].unpackAddress();
}
return addressArray;
}
function getValue(uint256 tableId, uint256 docId, uint256 colId) public view returns (bytes32) {
return datastore[tableId][uint256(keccak256(abi.encodePacked(docId, colId)))];
}
function setColumnType(uint256 colId, IDataStore.ColumnType columnType) public onlyRole(GAME_LOGIC_CONTRACT_ROLE) {
require(!isColumnTypeSet(colId), "Column type already set");
columnTypes[colId] = bytes32(uint256(columnType));
emit ColumnTypeSet(colId, columnType);
}
function isColumnTypeSet(uint256 colId) public view returns (bool) {
return columnTypes[colId] != bytes32(0);
}
function getColumnType(uint256 colId) public view returns (IDataStore.ColumnType) {
bytes32 typeValue = columnTypes[colId];
require(typeValue != bytes32(0), "Column type not set");
return IDataStore.ColumnType(uint8(uint256(typeValue)));
}
// Type-specific setters
function setUint256(uint256 tableId, uint256 docId, uint256 colId, uint256 value) public onlyRole(GAME_LOGIC_CONTRACT_ROLE){
require(getColumnType(colId) == IDataStore.ColumnType.UINT256, "Column is not UINT256");
setValue(tableId, docId, colId, value.packUint256());
}
function setInt256(uint256 tableId, uint256 docId, uint256 colId, int256 value) public onlyRole(GAME_LOGIC_CONTRACT_ROLE){
require(getColumnType(colId) == IDataStore.ColumnType.INT256, "Column is not INT256");
setValue(tableId, docId, colId, value.packInt256());
}
function setBool(uint256 tableId, uint256 docId, uint256 colId, bool value) public onlyRole(GAME_LOGIC_CONTRACT_ROLE){
require(getColumnType(colId) == IDataStore.ColumnType.BOOL, "Column is not BOOL");
setValue(tableId, docId, colId, value.packBool());
}
function setAddress(uint256 tableId, uint256 docId, uint256 colId, address value) public onlyRole(GAME_LOGIC_CONTRACT_ROLE){
require(getColumnType(colId) == IDataStore.ColumnType.ADDRESS, "Column is not ADDRESS");
setValue(tableId, docId, colId, value.packAddress());
}
function setBytes32(uint256 tableId, uint256 docId, uint256 colId, bytes32 value) public onlyRole(GAME_LOGIC_CONTRACT_ROLE){
require(getColumnType(colId) == IDataStore.ColumnType.BYTES32, "Column is not BYTES32");
setValue(tableId, docId, colId, value);
}
function setString(uint256 tableId, uint256 docId, uint256 colId, string memory value) public onlyRole(GAME_LOGIC_CONTRACT_ROLE){
require(getColumnType(colId) == IDataStore.ColumnType.STRING, "Column is not STRING");
uint256 key = generateKey(docId, colId);
stringStore[tableId][key] = value;
emit StringValueSet(tableId, docId, colId, value);
}
function deleteValue(uint256 tableId, uint256 docId, uint256 colId) public onlyRole(GAME_LOGIC_CONTRACT_ROLE){
uint256 key = generateKey(docId, colId);
delete datastore[tableId][key];
}
// Type-specific getters
function getUint256(uint256 tableId, uint256 docId, uint256 colId) public view returns (uint256) {
require(getColumnType(colId) == IDataStore.ColumnType.UINT256, "Column is not UINT256");
return getValue(tableId, docId, colId).unpackUint256();
}
function getInt256(uint256 tableId, uint256 docId, uint256 colId) public view returns (int256) {
require(getColumnType(colId) == IDataStore.ColumnType.INT256, "Column is not INT256");
return getValue(tableId, docId, colId).unpackInt256();
}
function getBool(uint256 tableId, uint256 docId, uint256 colId) public view returns (bool) {
require(getColumnType(colId) == IDataStore.ColumnType.BOOL, "Column is not BOOL");
return getValue(tableId, docId, colId).unpackBool();
}
function getAddress(uint256 tableId, uint256 docId, uint256 colId) public view returns (address) {
require(getColumnType(colId) == IDataStore.ColumnType.ADDRESS, "Column is not ADDRESS");
return getValue(tableId, docId, colId).unpackAddress();
}
function getBytes32(uint256 tableId, uint256 docId, uint256 colId) public view returns (bytes32) {
require(getColumnType(colId) == IDataStore.ColumnType.BYTES32, "Column is not BYTES32");
return getValue(tableId, docId, colId);
}
function getString(uint256 tableId, uint256 docId, uint256 colId) public view returns (string memory) {
require(getColumnType(colId) == IDataStore.ColumnType.STRING, "Column is not STRING");
uint256 key = generateKey(docId, colId);
return stringStore[tableId][key];
}
function hasValue(uint256 tableId, uint256 docId, uint256 colId) public view returns (bool) {
uint256 key = generateKey(docId, colId);
return datastore[tableId][key] != bytes32(0);
}
function hasStringValue(uint256 tableId, uint256 docId, uint256 colId) public view returns (bool) {
uint256 key = generateKey(docId, colId);
return keccak256(bytes(stringStore[tableId][key])) != keccak256(bytes(""));
}
}// SPDX-License-Identifier: MIT LICENSE
pragma solidity ^0.8.13;
import {ReentrancyGuard} from "@openzeppelin/contracts/security/ReentrancyGuard.sol";
import {PAUSER_ROLE, MANAGER_ROLE} from "../constants/RoleConstants.sol";
import {ISystem} from "./ISystem.sol";
import {IGameRegistry, IERC165} from "./IGameRegistry.sol";
import {IDataStore, ID as DATA_STORE_ID} from "../db/IDataStore.sol";
import {DEPLOYER_ROLE} from "../constants/RoleConstants.sol";
/** @title Contract that lets a child contract access the GameRegistry contract */
abstract contract GameRegistryConsumer is
ReentrancyGuard,
ISystem
{
/// @notice Whether or not the contract is paused
bool private _paused;
/// @notice Reference to the game registry that this contract belongs to
IGameRegistry internal _gameRegistry;
/// @notice Id for the system/component
uint256 private _id;
/** EVENTS **/
/// @dev Emitted when the pause is triggered by `account`.
event Paused(address account);
/// @dev Emitted when the pause is lifted by `account`.
event Unpaused(address account);
/** ERRORS **/
/// @notice Not authorized to perform action
error MissingRole(address account, bytes32 expectedRole);
/** MODIFIERS **/
/// @notice Modifier to verify a user has the appropriate role to call a given function
modifier onlyRole(bytes32 role) {
_checkRole(role, msg.sender);
_;
}
/**
* @dev Modifier to make a function callable only when the contract is not paused.
*
* Requirements:
*
* - The contract must not be paused.
*/
modifier whenNotPaused() {
_requireNotPaused();
_;
}
/**
* @dev Modifier to make a function callable only when the contract is paused.
*
* Requirements:
*
* - The contract must be paused.
*/
modifier whenPaused() {
_requirePaused();
_;
}
/** ERRORS **/
/// @notice Error if the game registry specified is invalid
error InvalidGameRegistry();
/** SETUP **/
/** @return ID for this system */
function getId() public view override returns (uint256) {
return _id;
}
/**
* Pause/Unpause the contract
*
* @param shouldPause Whether or pause or unpause
*/
function setPaused(bool shouldPause) external onlyRole(PAUSER_ROLE) {
if (shouldPause) {
_pause();
} else {
_unpause();
}
}
/**
* @dev Returns true if the contract OR the GameRegistry is paused, and false otherwise.
*/
function paused() public view virtual returns (bool) {
return _paused || _gameRegistry.paused();
}
/**
* Sets the GameRegistry contract address for this contract
*
* @param gameRegistryAddress Address for the GameRegistry contract
*/
function setGameRegistry(
address gameRegistryAddress
) external onlyRole(MANAGER_ROLE) {
_gameRegistry = IGameRegistry(gameRegistryAddress);
if (gameRegistryAddress == address(0)) {
revert InvalidGameRegistry();
}
}
/** @return GameRegistry contract for this contract */
function getGameRegistry() external view returns (IGameRegistry) {
return _gameRegistry;
}
/** INTERNAL **/
/**
* @dev Returns `true` if `account` has been granted `role`.
*/
function _hasAccessRole(
bytes32 role,
address account
) internal view returns (bool) {
return _gameRegistry.hasAccessRole(role, account);
}
/**
* @dev Revert with a standard message if `account` is missing `role`.
*
* The format of the revert reason is given by the following regular expression:
*
* /^AccessControl: account (0x[0-9a-f]{40}) is missing role (0x[0-9a-f]{64})$/
*/
function _checkRole(bytes32 role, address account) internal view virtual {
if (!_gameRegistry.hasAccessRole(role, account)) {
revert MissingRole(account, role);
}
}
/** @return Returns the dataStore for this contract */
function _dataStore() internal view returns (IDataStore) {
return IDataStore(_getSystem(DATA_STORE_ID));
}
/** @return Address for a given system */
function _getSystem(uint256 systemId) internal view returns (address) {
return _gameRegistry.getSystem(systemId);
}
/** PAUSABLE **/
/**
* @dev Throws if the contract is paused.
*/
function _requireNotPaused() internal view virtual {
require(!paused(), "Pausable: paused");
}
/**
* @dev Throws if the contract is not paused.
*/
function _requirePaused() internal view virtual {
require(paused(), "Pausable: not paused");
}
/**
* @dev Triggers stopped state.
*
* Requirements:
*
* - The contract must not be paused.
*/
function _pause() internal virtual {
require(_paused == false, "Pausable: not paused");
_paused = true;
emit Paused(msg.sender);
}
/**
* @dev Returns to normal state.
*
* Requirements:
*
* - The contract must be paused.
*/
function _unpause() internal virtual {
require(_paused == true, "Pausable: not paused");
_paused = false;
emit Unpaused(msg.sender);
}
function initialize() external virtual onlyRole(DEPLOYER_ROLE) { }
/**
* Constructor for this contract
*
* @param gameRegistryAddress Address of the GameRegistry contract
* @param id Id of the system/component
*/
constructor(
address gameRegistryAddress,
uint256 id
) {
_gameRegistry = IGameRegistry(gameRegistryAddress);
if (gameRegistryAddress == address(0)) {
revert InvalidGameRegistry();
}
_paused = true;
_id = id;
}
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)
pragma solidity ^0.8.0;
/**
* @dev Interface of the ERC165 standard, as defined in the
* https://eips.ethereum.org/EIPS/eip-165[EIP].
*
* Implementers can declare support of contract interfaces, which can then be
* queried by others ({ERC165Checker}).
*
* For an implementation, see {ERC165}.
*/
interface IERC165 {
/**
* @dev Returns true if this contract implements the interface defined by
* `interfaceId`. See the corresponding
* https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]
* to learn more about how these ids are created.
*
* This function call must use less than 30 000 gas.
*/
function supportsInterface(bytes4 interfaceId) external view returns (bool);
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/draft-IERC20Permit.sol)
pragma solidity ^0.8.0;
/**
* @dev Interface of the ERC20 Permit extension allowing approvals to be made via signatures, as defined in
* https://eips.ethereum.org/EIPS/eip-2612[EIP-2612].
*
* Adds the {permit} method, which can be used to change an account's ERC20 allowance (see {IERC20-allowance}) by
* presenting a message signed by the account. By not relying on {IERC20-approve}, the token holder account doesn't
* need to send a transaction, and thus is not required to hold Ether at all.
*/
interface IERC20Permit {
/**
* @dev Sets `value` as the allowance of `spender` over ``owner``'s tokens,
* given ``owner``'s signed approval.
*
* IMPORTANT: The same issues {IERC20-approve} has related to transaction
* ordering also apply here.
*
* Emits an {Approval} event.
*
* Requirements:
*
* - `spender` cannot be the zero address.
* - `deadline` must be a timestamp in the future.
* - `v`, `r` and `s` must be a valid `secp256k1` signature from `owner`
* over the EIP712-formatted function arguments.
* - the signature must use ``owner``'s current nonce (see {nonces}).
*
* For more information on the signature format, see the
* https://eips.ethereum.org/EIPS/eip-2612#specification[relevant EIP
* section].
*/
function permit(
address owner,
address spender,
uint256 value,
uint256 deadline,
uint8 v,
bytes32 r,
bytes32 s
) external;
/**
* @dev Returns the current nonce for `owner`. This value must be
* included whenever a signature is generated for {permit}.
*
* Every successful call to {permit} increases ``owner``'s nonce by one. This
* prevents a signature from being used multiple times.
*/
function nonces(address owner) external view returns (uint256);
/**
* @dev Returns the domain separator used in the encoding of the signature for {permit}, as defined by {EIP712}.
*/
// solhint-disable-next-line func-name-mixedcase
function DOMAIN_SEPARATOR() external view returns (bytes32);
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.8.0) (utils/Address.sol)
pragma solidity ^0.8.1;
/**
* @dev Collection of functions related to the address type
*/
library Address {
/**
* @dev Returns true if `account` is a contract.
*
* [IMPORTANT]
* ====
* It is unsafe to assume that an address for which this function returns
* false is an externally-owned account (EOA) and not a contract.
*
* Among others, `isContract` will return false for the following
* types of addresses:
*
* - an externally-owned account
* - a contract in construction
* - an address where a contract will be created
* - an address where a contract lived, but was destroyed
* ====
*
* [IMPORTANT]
* ====
* You shouldn't rely on `isContract` to protect against flash loan attacks!
*
* Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets
* like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract
* constructor.
* ====
*/
function isContract(address account) internal view returns (bool) {
// This method relies on extcodesize/address.code.length, which returns 0
// for contracts in construction, since the code is only stored at the end
// of the constructor execution.
return account.code.length > 0;
}
/**
* @dev Replacement for Solidity's `transfer`: sends `amount` wei to
* `recipient`, forwarding all available gas and reverting on errors.
*
* https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost
* of certain opcodes, possibly making contracts go over the 2300 gas limit
* imposed by `transfer`, making them unable to receive funds via
* `transfer`. {sendValue} removes this limitation.
*
* https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].
*
* IMPORTANT: because control is transferred to `recipient`, care must be
* taken to not create reentrancy vulnerabilities. Consider using
* {ReentrancyGuard} or the
* https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].
*/
function sendValue(address payable recipient, uint256 amount) internal {
require(address(this).balance >= amount, "Address: insufficient balance");
(bool success, ) = recipient.call{value: amount}("");
require(success, "Address: unable to send value, recipient may have reverted");
}
/**
* @dev Performs a Solidity function call using a low level `call`. A
* plain `call` is an unsafe replacement for a function call: use this
* function instead.
*
* If `target` reverts with a revert reason, it is bubbled up by this
* function (like regular Solidity function calls).
*
* Returns the raw returned data. To convert to the expected return value,
* use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].
*
* Requirements:
*
* - `target` must be a contract.
* - calling `target` with `data` must not revert.
*
* _Available since v3.1._
*/
function functionCall(address target, bytes memory data) internal returns (bytes memory) {
return functionCallWithValue(target, data, 0, "Address: low-level call failed");
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with
* `errorMessage` as a fallback revert reason when `target` reverts.
*
* _Available since v3.1._
*/
function functionCall(
address target,
bytes memory data,
string memory errorMessage
) internal returns (bytes memory) {
return functionCallWithValue(target, data, 0, errorMessage);
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
* but also transferring `value` wei to `target`.
*
* Requirements:
*
* - the calling contract must have an ETH balance of at least `value`.
* - the called Solidity function must be `payable`.
*
* _Available since v3.1._
*/
function functionCallWithValue(
address target,
bytes memory data,
uint256 value
) internal returns (bytes memory) {
return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
}
/**
* @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but
* with `errorMessage` as a fallback revert reason when `target` reverts.
*
* _Available since v3.1._
*/
function functionCallWithValue(
address target,
bytes memory data,
uint256 value,
string memory errorMessage
) internal returns (bytes memory) {
require(address(this).balance >= value, "Address: insufficient balance for call");
(bool success, bytes memory returndata) = target.call{value: value}(data);
return verifyCallResultFromTarget(target, success, returndata, errorMessage);
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
* but performing a static call.
*
* _Available since v3.3._
*/
function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {
return functionStaticCall(target, data, "Address: low-level static call failed");
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
* but performing a static call.
*
* _Available since v3.3._
*/
function functionStaticCall(
address target,
bytes memory data,
string memory errorMessage
) internal view returns (bytes memory) {
(bool success, bytes memory returndata) = target.staticcall(data);
return verifyCallResultFromTarget(target, success, returndata, errorMessage);
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
* but performing a delegate call.
*
* _Available since v3.4._
*/
function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {
return functionDelegateCall(target, data, "Address: low-level delegate call failed");
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
* but performing a delegate call.
*
* _Available since v3.4._
*/
function functionDelegateCall(
address target,
bytes memory data,
string memory errorMessage
) internal returns (bytes memory) {
(bool success, bytes memory returndata) = target.delegatecall(data);
return verifyCallResultFromTarget(target, success, returndata, errorMessage);
}
/**
* @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling
* the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.
*
* _Available since v4.8._
*/
function verifyCallResultFromTarget(
address target,
bool success,
bytes memory returndata,
string memory errorMessage
) internal view returns (bytes memory) {
if (success) {
if (returndata.length == 0) {
// only check isContract if the call was successful and the return data is empty
// otherwise we already know that it was a contract
require(isContract(target), "Address: call to non-contract");
}
return returndata;
} else {
_revert(returndata, errorMessage);
}
}
/**
* @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the
* revert reason or using the provided one.
*
* _Available since v4.3._
*/
function verifyCallResult(
bool success,
bytes memory returndata,
string memory errorMessage
) internal pure returns (bytes memory) {
if (success) {
return returndata;
} else {
_revert(returndata, errorMessage);
}
}
function _revert(bytes memory returndata, string memory errorMessage) private pure {
// Look for revert reason and bubble it up if present
if (returndata.length > 0) {
// The easiest way to bubble the revert reason is using memory via assembly
/// @solidity memory-safe-assembly
assembly {
let returndata_size := mload(returndata)
revert(add(32, returndata), returndata_size)
}
} else {
revert(errorMessage);
}
}
}// SPDX-License-Identifier: MIT
pragma solidity ^0.8.9;
library DataTypes {
// Pack and unpack uint256
function packUint256(uint256 value) internal pure returns (bytes32) {
return bytes32(value);
}
function unpackUint256(bytes32 packed) internal pure returns (uint256) {
return uint256(packed);
}
// Pack and unpack int256
function packInt256(int256 value) internal pure returns (bytes32) {
return bytes32(uint256(value));
}
function unpackInt256(bytes32 packed) internal pure returns (int256) {
return int256(uint256(packed));
}
// Pack and unpack address
function packAddress(address value) internal pure returns (bytes32) {
return bytes32(uint256(uint160(value)));
}
function unpackAddress(bytes32 packed) internal pure returns (address) {
return address(uint160(uint256(packed)));
}
// Pack and unpack bool
function packBool(bool value) internal pure returns (bytes32) {
return bytes32(uint256(value ? 1 : 0));
}
function unpackBool(bytes32 packed) internal pure returns (bool) {
return uint256(packed) == 1;
}
}// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
uint256 constant ID = uint256(keccak256("game.gigaverse.datastore"));
interface IDataStore {
enum ColumnType { NONE, UINT256, INT256, BOOL, ADDRESS, BYTES32, STRING, UINT256_ARRAY }
event ValueSet(uint256 indexed tableId, uint256 indexed docId, uint256 indexed colId, bytes32 value);
event StringValueSet(uint256 indexed tableId, uint256 indexed docId, uint256 indexed colId, string value);
event ArrayValueSet(uint256 indexed tableId, uint256 indexed docId, uint256 indexed colId, bytes32[] value);
event ColumnTypeSet(uint256 indexed colId, ColumnType columnType);
function setValue(uint256 tableId, uint256 docId, uint256 colId, bytes32 value) external;
function getValue(uint256 tableId, uint256 docId, uint256 colId) external view returns (bytes32);
function setColumnType(uint256 colId, ColumnType columnType) external;
function getColumnType(uint256 colId) external view returns (ColumnType);
// Type-specific setters
function setUint256(uint256 tableId, uint256 docId, uint256 colId, uint256 value) external;
function setInt256(uint256 tableId, uint256 docId, uint256 colId, int256 value) external;
function setBool(uint256 tableId, uint256 docId, uint256 colId, bool value) external;
function setAddress(uint256 tableId, uint256 docId, uint256 colId, address value) external;
function setBytes32(uint256 tableId, uint256 docId, uint256 colId, bytes32 value) external;
function setString(uint256 tableId, uint256 docId, uint256 colId, string memory value) external;
// Type-specific getters
function getUint256(uint256 tableId, uint256 docId, uint256 colId) external view returns (uint256);
function getInt256(uint256 tableId, uint256 docId, uint256 colId) external view returns (int256);
function getBool(uint256 tableId, uint256 docId, uint256 colId) external view returns (bool);
function getAddress(uint256 tableId, uint256 docId, uint256 colId) external view returns (address);
function getBytes32(uint256 tableId, uint256 docId, uint256 colId) external view returns (bytes32);
function getString(uint256 tableId, uint256 docId, uint256 colId) external view returns (string memory);
function deleteValue(uint256 tableId, uint256 docId, uint256 colId) external;
function hasValue(uint256 tableId, uint256 docId, uint256 colId) external view returns (bool);
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.8.0) (security/ReentrancyGuard.sol)
pragma solidity ^0.8.0;
/**
* @dev Contract module that helps prevent reentrant calls to a function.
*
* Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier
* available, which can be applied to functions to make sure there are no nested
* (reentrant) calls to them.
*
* Note that because there is a single `nonReentrant` guard, functions marked as
* `nonReentrant` may not call one another. This can be worked around by making
* those functions `private`, and then adding `external` `nonReentrant` entry
* points to them.
*
* TIP: If you would like to learn more about reentrancy and alternative ways
* to protect against it, check out our blog post
* https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul].
*/
abstract contract ReentrancyGuard {
// Booleans are more expensive than uint256 or any type that takes up a full
// word because each write operation emits an extra SLOAD to first read the
// slot's contents, replace the bits taken up by the boolean, and then write
// back. This is the compiler's defense against contract upgrades and
// pointer aliasing, and it cannot be disabled.
// The values being non-zero value makes deployment a bit more expensive,
// but in exchange the refund on every call to nonReentrant will be lower in
// amount. Since refunds are capped to a percentage of the total
// transaction's gas, it is best to keep them low in cases like this one, to
// increase the likelihood of the full refund coming into effect.
uint256 private constant _NOT_ENTERED = 1;
uint256 private constant _ENTERED = 2;
uint256 private _status;
constructor() {
_status = _NOT_ENTERED;
}
/**
* @dev Prevents a contract from calling itself, directly or indirectly.
* Calling a `nonReentrant` function from another `nonReentrant`
* function is not supported. It is possible to prevent this from happening
* by making the `nonReentrant` function external, and making it call a
* `private` function that does the actual work.
*/
modifier nonReentrant() {
_nonReentrantBefore();
_;
_nonReentrantAfter();
}
function _nonReentrantBefore() private {
// On the first call to nonReentrant, _status will be _NOT_ENTERED
require(_status != _ENTERED, "ReentrancyGuard: reentrant call");
// Any calls to nonReentrant after this point will fail
_status = _ENTERED;
}
function _nonReentrantAfter() private {
// By storing the original value once again, a refund is triggered (see
// https://eips.ethereum.org/EIPS/eip-2200)
_status = _NOT_ENTERED;
}
}// SPDX-License-Identifier: MIT LICENSE
pragma solidity ^0.8.9;
import "@openzeppelin/contracts/utils/introspection/IERC165.sol";
/**
* Defines a system the game engine
*/
interface ISystem {
/** @return The ID for the system. Ex: a uint256 casted keccak256 hash */
function getId() external view returns (uint256);
function initialize() external;
}// SPDX-License-Identifier: MIT LICENSE
pragma solidity ^0.8.9;
import "@openzeppelin/contracts/utils/introspection/IERC165.sol";
// @title Interface the game's ACL / Management Layer
interface IGameRegistry is IERC165 {
/**
* @dev Returns `true` if `account` has been granted `role`.
* @param role The role to query
* @param account The address to query
*/
function hasAccessRole(
bytes32 role,
address account
) external view returns (bool);
/**
* @return Whether or not the registry is paused
*/
function paused() external view returns (bool);
/**
* Registers a system by id
*
* @param systemId Id of the system
* @param systemAddress Address of the system contract
*/
function registerSystem(uint256 systemId, address systemAddress, bool isGameLogicContract) external;
/**
* @param systemId Id of the system
* @return System based on an id
*/
function getSystem(uint256 systemId) external view returns (address);
}{
"viaIR": false,
"codegen": "yul",
"remappings": [
"@limitbreak/creator-token-standards/=lib/creator-token-standards/",
"@openzeppelin/=lib/creator-token-standards/lib/openzeppelin-contracts/",
"ds-test/=lib/forge-std/lib/ds-test/src/",
"forge-std/=lib/forge-std/src/",
"murky/=lib/murky/src/",
"erc721a/=lib/ERC721A/",
"@creator-token-standards/=lib/creator-token-standards/src/",
"@limitbreak/permit-c/=lib/creator-token-standards/lib/PermitC/src/",
"@opensea/tstorish/=lib/creator-token-standards/lib/tstorish/src/",
"@rari-capital/solmate/=lib/creator-token-standards/lib/PermitC/lib/solmate/",
"ERC721A/=lib/ERC721A/contracts/",
"PermitC/=lib/creator-token-standards/lib/PermitC/",
"creator-token-standards/=lib/creator-token-standards/",
"erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/",
"forge-gas-metering/=lib/creator-token-standards/lib/PermitC/lib/forge-gas-metering/",
"forge-zksync-std/=lib/forge-zksync-std/src/",
"halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/",
"openzeppelin-contracts/=lib/openzeppelin-contracts/",
"openzeppelin/=lib/creator-token-standards/lib/PermitC/lib/openzeppelin-contracts/contracts/",
"solady/=lib/creator-token-standards/lib/PermitC/lib/forge-gas-metering/lib/solady/",
"solmate/=lib/creator-token-standards/lib/PermitC/lib/solmate/src/",
"tstorish/=lib/creator-token-standards/lib/tstorish/src/"
],
"evmVersion": "cancun",
"outputSelection": {
"*": {
"*": [
"abi",
"metadata"
],
"": [
"ast"
]
}
},
"optimizer": {
"enabled": true,
"mode": "3",
"fallback_to_optimizing_for_size": false,
"disable_system_request_memoization": true
},
"metadata": {},
"libraries": {},
"enableEraVMExtensions": false,
"forceEVMLA": false
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address","name":"gameRegistryAddress","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"AlreadyInitialized","type":"error"},{"inputs":[],"name":"InvalidGameRegistry","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bytes32","name":"expectedRole","type":"bytes32"}],"name":"MissingRole","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"inputs":[{"internalType":"uint256","name":"itemId","type":"uint256"},{"internalType":"uint256","name":"inputAmountPerRedemption","type":"uint256"},{"internalType":"uint256","name":"outputAmountPerRedemption","type":"uint256"},{"internalType":"address","name":"tokenToExchangeFor","type":"address"}],"name":"createDeal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"dealId","type":"uint256"}],"name":"doesDealExist","outputs":[{"internalType":"bool","name":"doesExist","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"dealId","type":"uint256"}],"name":"getDealCooldown","outputs":[{"internalType":"uint256","name":"cooldown","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"dealId","type":"uint256"}],"name":"getDealEndTime","outputs":[{"internalType":"uint256","name":"endTime","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"dealId","type":"uint256"}],"name":"getDealMaxPerPlayer","outputs":[{"internalType":"uint256","name":"maxPerPlayer","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"dealId","type":"uint256"}],"name":"getDealMaxRedemptionsPerTx","outputs":[{"internalType":"uint256","name":"maxRedemptionsPerTx","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"dealId","type":"uint256"}],"name":"getDealMaxTotal","outputs":[{"internalType":"uint256","name":"maxTotal","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"dealId","type":"uint256"},{"internalType":"address","name":"player","type":"address"}],"name":"getDealRedemptionsForPlayer","outputs":[{"internalType":"uint256","name":"redemptions","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"dealId","type":"uint256"}],"name":"getDealRedemptionsTotal","outputs":[{"internalType":"uint256","name":"redemptions","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"dealId","type":"uint256"}],"name":"getDealStartTime","outputs":[{"internalType":"uint256","name":"startTime","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"docId","type":"uint256"},{"internalType":"uint256","name":"columnId","type":"uint256"}],"name":"getDocAddressArrayValue","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"docId","type":"uint256"},{"internalType":"uint256","name":"columnId","type":"uint256"}],"name":"getDocAddressValue","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"docId","type":"uint256"},{"internalType":"uint256","name":"columnId","type":"uint256"}],"name":"getDocBoolArrayValue","outputs":[{"internalType":"bool[]","name":"","type":"bool[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"docId","type":"uint256"},{"internalType":"uint256","name":"columnId","type":"uint256"}],"name":"getDocBoolValue","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"docId","type":"uint256"},{"internalType":"uint256","name":"columnId","type":"uint256"}],"name":"getDocStringValue","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"docId","type":"uint256"},{"internalType":"uint256","name":"columnId","type":"uint256"}],"name":"getDocUint256ArrayValue","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"docId","type":"uint256"},{"internalType":"uint256","name":"columnId","type":"uint256"}],"name":"getDocUint256Value","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"dealId","type":"uint256"},{"internalType":"address","name":"player","type":"address"}],"name":"getEndOfCooldownForPlayer","outputs":[{"internalType":"uint256","name":"endOfCooldown","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getGameRegistry","outputs":[{"internalType":"contract IGameRegistry","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"player","type":"address"}],"name":"getPlayerDocId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"dealId","type":"uint256"}],"name":"getRedemptionDeal","outputs":[{"internalType":"uint256","name":"inputId","type":"uint256"},{"internalType":"uint256","name":"inputAmount","type":"uint256"},{"internalType":"uint256","name":"outputAmount","type":"uint256"},{"internalType":"address","name":"token","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"dealId","type":"uint256"}],"name":"getRedemptionLog","outputs":[{"internalType":"address","name":"player","type":"address"},{"internalType":"uint256","name":"timestamp","type":"uint256"},{"internalType":"uint256","name":"numRedemptions","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"columnId","type":"uint256"}],"name":"getTableAddressValue","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"columnId","type":"uint256"}],"name":"getTableBoolValue","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTableId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"columnId","type":"uint256"}],"name":"getTableStringValue","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"columnId","type":"uint256"}],"name":"getTableUint256ArrayValue","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"columnId","type":"uint256"}],"name":"getTableUint256Value","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"docId","type":"uint256"},{"internalType":"uint256","name":"columnId","type":"uint256"}],"name":"hasDocStringValue","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"docId","type":"uint256"},{"internalType":"uint256","name":"columnId","type":"uint256"}],"name":"hasDocValue","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"dealId","type":"uint256"},{"internalType":"uint256","name":"numRedemptions","type":"uint256"}],"name":"isDealAtMaxRedemptions","outputs":[{"internalType":"bool","name":"isAtMax","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"dealId","type":"uint256"}],"name":"isDealJuiced","outputs":[{"internalType":"bool","name":"isJuiced","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"dealId","type":"uint256"}],"name":"isDealOutsideTimeWindow","outputs":[{"internalType":"bool","name":"isOutside","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"dealId","type":"uint256"}],"name":"isDealPaused","outputs":[{"internalType":"bool","name":"isPaused","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"dealId","type":"uint256"},{"internalType":"uint256","name":"numRedemptions","type":"uint256"}],"name":"isOverMaxRedemptionsPerTx","outputs":[{"internalType":"bool","name":"isOver","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"dealId","type":"uint256"},{"internalType":"address","name":"player","type":"address"},{"internalType":"uint256","name":"numRedemptions","type":"uint256"}],"name":"isPlayerAtMaxRedemptions","outputs":[{"internalType":"bool","name":"isAtMax","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"dealId","type":"uint256"},{"internalType":"address","name":"player","type":"address"}],"name":"isPlayerOnCooldown","outputs":[{"internalType":"bool","name":"isOnCooldown","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"dealId","type":"uint256"},{"internalType":"uint256","name":"itemId","type":"uint256"},{"internalType":"uint256","name":"itemAmount","type":"uint256"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"bytes","name":"_signature","type":"bytes"}],"name":"redeemOffchainItems","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"dealId","type":"uint256"},{"internalType":"uint256","name":"maxRedemptionsPerTx","type":"uint256"},{"internalType":"uint256","name":"maxRedemptionsTotal","type":"uint256"},{"internalType":"uint256","name":"maxRedemptionsPerPlayer","type":"uint256"},{"internalType":"uint256","name":"cooldownBetweenRedemptions","type":"uint256"},{"internalType":"bool","name":"requiresJuice","type":"bool"}],"name":"setDealLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"dealId","type":"uint256"},{"internalType":"bool","name":"isPaused","type":"bool"}],"name":"setDealPaused","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"dealId","type":"uint256"},{"internalType":"uint256","name":"startTime","type":"uint256"},{"internalType":"uint256","name":"endTime","type":"uint256"}],"name":"setDealTimeWindow","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"gameRegistryAddress","type":"address"}],"name":"setGameRegistry","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"shouldPause","type":"bool"}],"name":"setPaused","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"dealId","type":"uint256"}],"name":"wasNonceUsedToRedeem","outputs":[{"internalType":"bool","name":"wasUsed","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"withdrawToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]Contract Creation Code
9c4d535b000000000000000000000000000000000000000000000000000000000000000001001049abd67593f96e9e83e454a64d7ad8540f95633a7a10d3dc2f85cec2eb0000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002000000000000000000000000074eb92b33f2400eb14f6d6725b14f76078d5e731
Deployed Bytecode
0x0004000000000002000c000000000002000000000401034f000000600110027000000f780010019d00000f7803100197000300000034035500020000000403550000000100200190000000200000c13d0000008001000039000000400010043f000000040030008c0000004b0000413d000000000134034f000000000204043b000000e00220027000000f800020009c0000004f0000a13d00000f810020009c000000600000213d00000f930020009c000000d10000a13d00000f940020009c000001270000a13d00000f950020009c000001d00000213d00000f980020009c000002c50000613d00000f990020009c000001f40000613d000017520000013d0000000001000416000000000001004b000017520000c13d0000001f0130003900000f79011001970000008001100039000000400010043f0000001f0230018f00000f7a053001980000008001500039000000310000613d0000008006000039000000000704034f000000007807043c0000000006860436000000000016004b0000002d0000c13d000000000002004b0000003e0000613d000000000454034f0000000302200210000000000501043300000000052501cf000000000525022f000000000404043b0000010002200089000000000424022f00000000022401cf000000000252019f0000000000210435000000200030008c000017520000413d000000800100043d00000f7b0010009c000017520000213d0000000102000039000000000020041b000000000001004b000000870000c13d00000fef01000041000000000010043f00000fdf0100004100003ddc00010430000000000003004b000017520000c13d000000000100001900003ddb0001042e00000fa40020009c000000740000a13d00000fa50020009c000000960000a13d00000fa60020009c000001050000a13d00000fa70020009c000001be0000213d00000faa0020009c000001fc0000613d00000fab0020009c000017520000c13d0000000001000416000000000001004b000017520000c13d3dda2a9b0000040f000003b10000013d00000f820020009c000000e20000a13d00000f830020009c000001420000a13d00000f840020009c000001e70000213d00000f870020009c000002db0000613d00000f880020009c000017520000c13d0000000001000416000000000001004b000017520000c13d0000000101000039000000000101041a000000080110027000000f7b01100197000000800010043f00000fd40100004100003ddb0001042e00000fb60020009c000000a70000213d00000fbe0020009c0000016f0000213d00000fc20020009c0000037b0000613d00000fc30020009c000004740000613d00000fc40020009c000017520000c13d000000240030008c000017520000413d0000000001000416000000000001004b000017520000c13d0000000401400370000000000101043b3dda2d950000040f000003b40000013d000000000302041a00000f7c03300197000000080110021000000f7d01100197000000000131019f00000001011001bf000000000012041b00000f7e010000410000000202000039000000000012041b00000020010000390000010000100443000001200000044300000f7f0100004100003ddb0001042e00000faf0020009c000001180000213d00000fb30020009c0000021d0000613d00000fb40020009c000002a10000613d00000fb50020009c000017520000c13d000000240030008c000017520000413d0000000001000416000000000001004b000017520000c13d0000000401400370000000000101043b3dda2e6e0000040f000003b10000013d00000fb70020009c0000017c0000213d00000fbb0020009c000003960000613d00000fbc0020009c0000047d0000613d00000fbd0020009c000017520000c13d000000640030008c000017520000413d0000000001000416000000000001004b000017520000c13d0000004401400370000000000101043b000900000001001d0000000401400370000000000101043b000b00000001001d0000000101000039000000000201041a0000002401400370000000000101043b000800000001001d00000fc601000041000000800010043f00000fc701000041000000840010043f000000000100041100000f7b01100197000a00000001001d000000a40010043f0000000001000414000000080220027000000f7b02200197000000040020008c000007230000c13d0000000103000031000000200030008c00000020040000390000000004034019000007480000013d00000f9d0020009c0000018b0000213d00000fa10020009c000003c50000613d00000fa20020009c000004bb0000613d00000fa30020009c000017520000c13d000000240030008c000017520000413d0000000001000416000000000001004b000017520000c13d0000000401400370000000000101043b3dda25ce0000040f000003b10000013d00000f8c0020009c000001a00000213d00000f900020009c000003eb0000613d00000f910020009c000004d60000613d00000f920020009c000017520000c13d000000440030008c000017520000413d0000000002000416000000000002004b000017520000c13d0000002402400370000000000202043b000a00000002001d0000000402400370000000000202043b000b00000002001d0000000102000039000000000202041a00000fc903000041000000800030043f00000fca03000041000000840030043f0000000003000414000000080220027000000f7b02200197000000040020008c000007f40000c13d0000000103000031000000200030008c00000020040000390000000004034019000008190000013d00000fac0020009c000002050000613d00000fad0020009c000002860000613d00000fae0020009c000017520000c13d000000440030008c000017520000413d0000000001000416000000000001004b000017520000c13d0000002401400370000000000201043b00000f7b0020009c000017520000213d0000000401400370000000000101043b3dda28f60000040f000003b40000013d00000fb00020009c000002320000613d00000fb10020009c000002aa0000613d00000fb20020009c000017520000c13d000000240030008c000017520000413d0000000001000416000000000001004b000017520000c13d0000000401400370000000000101043b3dda30f90000040f000003b40000013d00000f9a0020009c000003480000613d00000f9b0020009c000004500000613d00000f9c0020009c000017520000c13d000000240030008c000017520000413d0000000001000416000000000001004b000017520000c13d0000000101000039000000000201041a00000fc901000041000000800010043f00000fca01000041000000840010043f0000000001000414000000080220027000000f7b02200197000000040020008c000006af0000c13d0000000103000031000000200030008c00000020040000390000000004034019000006d40000013d00000f890020009c0000035d0000613d00000f8a0020009c0000046b0000613d00000f8b0020009c000017520000c13d000000840030008c000017520000413d0000000001000416000000000001004b000017520000c13d0000004401400370000000000101043b000a00000001001d0000002401400370000000000101043b000b00000001001d0000000401400370000000000101043b000900000001001d0000006401400370000000000101043b000800000001001d00000f7b0010009c000017520000213d0000000101000039000000000201041a00000fc601000041000000800010043f00000fc701000041000000840010043f000000000100041100000f7b01100197000700000001001d000000a40010043f0000000001000414000000080220027000000f7b02200197000000040020008c00000d9f0000c13d0000000103000031000000200030008c0000002004000039000000000403401900000dc40000013d00000fbf0020009c000003ab0000613d00000fc00020009c000004890000613d00000fc10020009c000017520000c13d0000000001000416000000000001004b000017520000c13d00000000010300193dda24a50000040f3dda277b0000040f000003b10000013d00000fb80020009c000003bb0000613d00000fb90020009c0000049c0000613d00000fba0020009c000017520000c13d000000240030008c000017520000413d0000000001000416000000000001004b000017520000c13d0000000401400370000000000101043b3dda2f470000040f000003b40000013d00000f9e0020009c000004060000613d00000f9f0020009c000004eb0000613d00000fa00020009c000017520000c13d000000640030008c000017520000413d0000000001000416000000000001004b000017520000c13d0000002401400370000000000201043b00000f7b0020009c000017520000213d0000000401400370000000000101043b0000004403400370000000000303043b3dda2b130000040f000003b10000013d00000f8d0020009c000004350000613d00000f8e0020009c000005000000613d00000f8f0020009c000017520000c13d000000440030008c000017520000413d0000000001000416000000000001004b000017520000c13d0000002401400370000000000201043b00000f7b0020009c000017520000213d0000000401400370000000000101043b3dda28f60000040f000b00000001001d0000800b01000039000000040300003900000000040004150000000c0440008a000000050440021000000ff0020000413dda3db90000040f0000000b0010006c00000000010000390000000101004039000003b40000013d00000fa80020009c000001f40000613d00000fa90020009c000017520000c13d000000440030008c000017520000413d0000000001000416000000000001004b000017520000c13d0000002401400370000000000201043b00000f7b0020009c000017520000213d0000000401400370000000000101043b3dda3bad0000040f3dda30200000040f000003b40000013d00000f960020009c000003090000613d00000f970020009c000017520000c13d0000000001000416000000000001004b000017520000c13d0000000101000039000000000201041a00000fc901000041000000800010043f00000fca01000041000000840010043f0000000001000414000000080220027000000f7b02200197000000040020008c000008920000c13d0000000103000031000000200030008c00000020040000390000000004034019000008b70000013d00000f850020009c000003270000613d00000f860020009c000017520000c13d000000240030008c000017520000413d0000000001000416000000000001004b000017520000c13d0000000401400370000000000101043b3dda36440000040f000003b10000013d0000000001000416000000000001004b000017520000c13d0000000201000039000000000101041a000000800010043f00000fd40100004100003ddb0001042e000000240030008c000017520000413d0000000001000416000000000001004b000017520000c13d0000000401400370000000000101043b3dda31d20000040f000003b40000013d0000000001000416000000000001004b000017520000c13d0000000101000039000a00000001001d000000000201041a00000fc601000041000000800010043f00000fc701000041000000840010043f000000000100041100000f7b01100197000b00000001001d000000a40010043f0000000001000414000000080220027000000f7b02200197000000040020008c0000051b0000c13d0000000103000031000000200030008c00000020040000390000000004034019000005400000013d000000240030008c000017520000413d0000000002000416000000000002004b000017520000c13d0000000102000039000000000202041a00000fc903000041000000800030043f00000fca03000041000000840030043f0000000003000414000000080220027000000f7b02200197000000040020008c000005520000c13d0000000103000031000000200030008c00000020040000390000000004034019000005770000013d000000a40030008c000017520000413d0000006401400370000000000101043b000800000001001d0000004401400370000000000101043b000900000001001d0000002401400370000000000101043b000a00000001001d0000000401400370000000000101043b000b00000001001d0000008401400370000000000201043b00000fd10020009c000017520000213d0000002301200039000000000031004b000017520000813d0000000405200039000000000154034f000000000101043b00000fd10010009c000018c60000213d0000001f0610003900001036066001970000003f0660003900001036066001970000100d0060009c000018c60000213d0000008006600039000000400060043f000000800010043f00000000021200190000002402200039000000000032004b000017520000213d0000002002500039000000000324034f00001036041001980000001f0510018f000000a002400039000002650000613d000000a006000039000000000703034f000000007807043c0000000006860436000000000026004b000002610000c13d000000000005004b000002720000613d000000000343034f0000000304500210000000000502043300000000054501cf000000000545022f000000000303043b0000010004400089000000000343022f00000000034301cf000000000353019f0000000000320435000000a0011000390000000000010435000000400300043d0000000101000039000000000201041a000000ff00200190000017790000c13d0000100e01000041000700000003001d00000000001304350000000001000414000000080220027000000f7b02200197000000040020008c000015900000c13d0000000103000031000000200030008c00000020040000390000000004034019000015ba0000013d000000440030008c000017520000413d0000000002000416000000000002004b000017520000c13d0000002402400370000000000502043b0000000402400370000000000402043b0000000102000039000000000202041a00000fc903000041000000800030043f00000fca03000041000000840030043f0000000003000414000000080220027000000f7b02200197000000040020008c000b00000004001d000a00000005001d000005fa0000c13d0000000103000031000000200030008c000000200400003900000000040340190000061f0000013d000000240030008c000017520000413d0000000001000416000000000001004b000017520000c13d0000000401400370000000000101043b3dda30200000040f000003b40000013d000000440030008c000017520000413d0000000001000416000000000001004b000017520000c13d0000002401400370000000000101043b000a00000001001d0000000401400370000000000101043b000b00000001001d0000000101000039000000000201041a00000fc901000041000000800010043f00000fca01000041000000840010043f0000000001000414000000080220027000000f7b02200197000000040020008c000007750000c13d0000000103000031000000200030008c000000200400003900000000040340190000079a0000013d000000240030008c000017520000413d0000000001000416000000000001004b000017520000c13d0000000401400370000000000101043b3dda33840000040f00000f7b04400197000000400500043d000000600650003900000000004604350000002004500039000000000024043500000040025000390000000000320435000000000015043500000f780050009c00000f7805008041000000400150021000000ffc011001c700003ddb0001042e000000440030008c000017520000413d0000000001000416000000000001004b000017520000c13d0000002401400370000000000101043b0000000402400370000000000202043b00000fd503000041000000a00030043f000000ae0020043f000000ce0010043f0000004e01000039000000800010043f0000010001000039000000400010043f000000000100041400000f780010009c00000f7801008041000000c00110021000000fd6011001c700008010020000393dda3dd50000040f0000000100200190000017520000613d000000000101043b000a00000001001d0000000101000039000000000201041a000000400b00043d00000fc90100004100000000001b04350000000401b0003900000fca0300004100000000003104350000000001000414000000080220027000000f7b02200197000000040020008c00000def0000c13d0000000103000031000000200030008c0000002004000039000000000403401900000e1b0000013d000000240030008c000017520000413d0000000001000416000000000001004b000017520000c13d0000000401400370000000000101043b000b00000001001d00000f7b0010009c000017520000213d0000000101000039000000000201041a00000fc601000041000000800010043f00000fc701000041000000840010043f000000000100041100000f7b01100197000a00000001001d000000a40010043f0000000001000414000000080220027000000f7b02200197000000040020008c00000e870000c13d0000000103000031000000200030008c0000002004000039000000000403401900000eac0000013d000000440030008c000017520000413d0000000001000416000000000001004b000017520000c13d0000002401400370000000000201043b000000000002004b0000000001000039000000010100c039000b00000002001d000000000012004b000017520000c13d0000000101000039000000000201041a00000fc601000041000000800010043f00000fc701000041000000840010043f000000000100041100000f7b01100197000a00000001001d000000a40010043f0000000001000414000000080220027000000f7b02200197000000040020008c00000ed20000c13d0000000103000031000000200030008c0000002004000039000000000403401900000ef70000013d0000000001000416000000000001004b000017520000c13d0000000101000039000000000201041a00000fc601000041000000800010043f00000ffd01000041000000840010043f0000000001000411000000a40010043f0000000001000414000000080220027000000f7b02200197000000040020008c000007b80000c13d0000000103000031000000200030008c00000020040000390000000004034019000007dd0000013d000000240030008c000017520000413d0000000001000416000000000001004b000017520000c13d0000000401400370000000000101043b000b00000001001d00000f7b0010009c000017520000213d0000000101000039000000000201041a00000fc601000041000000800010043f00000fc701000041000000840010043f000000000100041100000f7b03100197000000a40030043f0000000001000414000000080220027000000f7b02200197000000040020008c000a00000003001d00000f8e0000c13d0000000103000031000000200030008c0000002004000039000000000403401900000fb30000013d000000440030008c000017520000413d0000000001000416000000000001004b000017520000c13d0000002401400370000000000101043b000a00000001001d0000000401400370000000000101043b000b00000001001d0000000101000039000000000201041a00000fc901000041000000800010043f00000fca01000041000000840010043f0000000001000414000000080220027000000f7b02200197000000040020008c000008d70000c13d0000000103000031000000200030008c00000020040000390000000004034019000008fc0000013d000000240030008c000017520000413d0000000001000416000000000001004b000017520000c13d0000000101000039000000000201041a00000fc901000041000000800010043f00000fca01000041000000840010043f0000000001000414000000080220027000000f7b02200197000000040020008c0000094a0000c13d0000000103000031000000200030008c000000200400003900000000040340190000096f0000013d0000000001000416000000000001004b000017520000c13d00000000010300193dda24a50000040f3dda26ac0000040f000000000001004b0000000001000039000000010100c039000000400200043d000000000012043500000f780020009c00000f7802008041000000400120021000000fc5011001c700003ddb0001042e000000240030008c000017520000413d0000000001000416000000000001004b000017520000c13d0000000401400370000000000101043b00000f7b0010009c000017520000213d000001f90000013d000000c40030008c000017520000413d0000000001000416000000000001004b000017520000c13d0000000401400370000000000101043b000b00000001001d000000a401400370000000000101043b000000000001004b00000000020000390000000102006039000a00000002001d0000000002000039000000010200c039000000000021004b000017520000c13d0000000101000039000000000201041a00000fc601000041000000800010043f00000fc701000041000000840010043f000000000100041100000f7b01100197000900000001001d000000a40010043f0000000001000414000000080220027000000f7b02200197000000040020008c00000fed0000c13d0000000103000031000000200030008c00000020040000390000000004034019000010120000013d000000440030008c000017520000413d0000000001000416000000000001004b000017520000c13d0000002401400370000000000501043b0000000401400370000000000301043b0000000101000039000000000201041a00000fc901000041000000800010043f00000fca01000041000000840010043f0000000001000414000000080220027000000f7b02200197000000040020008c000b00000003001d000a00000005001d00000a350000c13d0000000103000031000000200030008c0000002004000039000000000403401900000a5a0000013d000000440030008c000017520000413d0000000001000416000000000001004b000017520000c13d0000002401400370000000000101043b0000000402400370000000000302043b00000fd502000041000000a00020043f000b00000003001d000000ae0030043f000000ce0010043f0000004e01000039000000800010043f0000010001000039000000400010043f000000000100041400000f780010009c00000f7801008041000000c00110021000000fd6011001c700008010020000393dda3dd50000040f0000000100200190000017520000613d000000000101043b000900000001001d0000000101000039000000000201041a000000400b00043d00000fc90100004100000000001b04350000000401b0003900000fca0300004100000000003104350000000001000414000000080220027000000f7b02200197000000040020008c000010240000c13d0000000103000031000000200030008c00000020040000390000000004034019000010500000013d000000440030008c000017520000413d0000000001000416000000000001004b000017520000c13d0000002401400370000000000501043b0000000401400370000000000301043b0000000101000039000000000201041a00000fc901000041000000800010043f00000fca01000041000000840010043f0000000001000414000000080220027000000f7b02200197000000040020008c000b00000003001d000a00000005001d00000aa80000c13d0000000103000031000000200030008c0000002004000039000000000403401900000acd0000013d000000440030008c000017520000413d0000000001000416000000000001004b000017520000c13d0000002401400370000000000501043b0000000401400370000000000301043b0000000101000039000000000201041a00000fc901000041000000800010043f00000fca01000041000000840010043f0000000001000414000000080220027000000f7b02200197000000040020008c000b00000003001d000a00000005001d00000aeb0000c13d0000000103000031000000200030008c0000002004000039000000000403401900000b100000013d000000240030008c000017520000413d0000000001000416000000000001004b000017520000c13d0000000401400370000000000101043b3dda32ab0000040f000003b40000013d000000240030008c000017520000413d0000000001000416000000000001004b000017520000c13d0000000401400370000000000101043b3dda2cbc0000040f000003b40000013d000000240030008c000017520000413d0000000001000416000000000001004b000017520000c13d0000000401400370000000000101043b3dda24f00000040f000000000001004b00000000010000390000000101006039000003b40000013d0000000002000416000000000002004b000017520000c13d0000000102000039000000000202041a00000fc903000041000000800030043f00000fca03000041000000840030043f0000000003000414000000080220027000000f7b02200197000000040020008c0000098f0000c13d0000000103000031000000200030008c00000020040000390000000004034019000009b40000013d000000240030008c000017520000413d0000000001000416000000000001004b000017520000c13d0000000401400370000000000201043b000000000002004b0000000001000039000000010100c039000b00000002001d000000000012004b000017520000c13d0000000101000039000000000201041a00000fc601000041000000800010043f0000102e01000041000000840010043f0000000001000411000000a40010043f0000000001000414000000080220027000000f7b02200197000000040020008c000010d80000c13d0000000103000031000000200030008c00000020040000390000000004034019000010fd0000013d000000440030008c000017520000413d0000000002000416000000000002004b000017520000c13d0000002402400370000000000202043b000a00000002001d0000000402400370000000000202043b000b00000002001d0000000102000039000000000202041a00000fc903000041000000800030043f00000fca03000041000000840030043f0000000003000414000000080220027000000f7b02200197000000040020008c00000b2f0000c13d0000000103000031000000200030008c0000002004000039000000000403401900000b540000013d000000240030008c000017520000413d0000000001000416000000000001004b000017520000c13d0000000101000039000000000201041a00000fc901000041000000800010043f00000fca01000041000000840010043f0000000001000414000000080220027000000f7b02200197000000040020008c00000be00000c13d0000000103000031000000200030008c0000002004000039000000000403401900000c050000013d000000240030008c000017520000413d0000000002000416000000000002004b000017520000c13d0000000102000039000000000202041a00000fc903000041000000800030043f00000fca03000041000000840030043f0000000003000414000000080220027000000f7b02200197000000040020008c00000c2d0000c13d0000000103000031000000200030008c0000002004000039000000000403401900000c520000013d000000440030008c000017520000413d0000000002000416000000000002004b000017520000c13d0000002402400370000000000202043b000a00000002001d0000000402400370000000000202043b000b00000002001d0000000102000039000000000202041a00000fc903000041000000800030043f00000fca03000041000000840030043f0000000003000414000000080220027000000f7b02200197000000040020008c00000cd10000c13d0000000103000031000000200030008c0000002004000039000000000403401900000cf60000013d00000f780010009c00000f7801008041000000c00110021000000fc8011001c73dda3dd50000040f000000600310027000000f7803300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000080057001bf0000052f0000613d0000008008000039000000000901034f000000009a09043c0000000008a80436000000000058004b0000052b0000c13d000000000006004b0000053c0000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f0003000000010355000000010020019000000d7b0000613d0000001f01400039000000600110018f00000080011001bf000000400010043f000000200030008c000017520000413d000000800100043d000000000001004b0000000002000039000000010200c039000000000021004b000017520000c13d000000000001004b000011a30000c13d00000fd201000041000000000010043f0000000b0100002900000fc40000013d00000f780030009c00000f7803008041000000c00130021000000ff1011001c73dda3dd50000040f000000600310027000000f7803300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000080057001bf000005660000613d0000008008000039000000000901034f000000009a09043c0000000008a80436000000000058004b000005620000c13d000000000006004b000005730000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f0003000000010355000000010020019000000d870000613d0000001f02400039000000600420018f00000080024001bf000b00000002001d000000400020043f000000200030008c000017520000413d000000800200043d00000f7b0020009c000017520000213d0000000205000039000000000505041a00000ff2060000410000000b0a00002900000000006a043500000084064001bf0000000000560435000000a405400039000000000005043500000004050000390000000205500367000000000505043b000000c40440003900000000005404350000000004000414000000040020008c000005a00000613d0000004001a0021000000f780040009c00000f7804008041000000c003400210000000000113019f00000fd9011001c73dda3dd50000040f000000600310027000010f780030019d00000f780330019700030000000103550000000100200190000013750000613d0000000b0a00002900001036053001980000001f0630018f00000000045a0019000005aa0000613d000000000701034f00000000080a0019000000007907043c0000000008980436000000000048004b000005a60000c13d000000000006004b000005b70000613d000000000151034f0000000305600210000000000604043300000000065601cf000000000656022f000000000101043b0000010005500089000000000151022f00000000015101cf000000000161019f00000000001404350000001f0130003900001036041001970000000001a40019000000000041004b0000000004000039000000010400403900000fd10010009c000018c60000213d0000000100400190000018c60000c13d000000400010043f00000ff30030009c000017520000213d000000200030008c000017520000413d0000000b04000029000000000404043300000fd10040009c000017520000213d0000000b063000290000000b034000290000001f04300039000000000064004b000000000500001900000ff40500804100000ff40440019700000ff407600197000000000874013f000000000074004b000000000400001900000ff40400404100000ff40080009c000000000405c019000000000004004b000017520000c13d000000004303043400000fd10030009c000018c60000213d0000001f0530003900001036055001970000003f055000390000103605500197000000000515001900000fd10050009c000018c60000213d000000400050043f00000000053104360000000007430019000000000067004b000017520000213d00001036063001970000001f0230018f000000000054004b000017e50000813d000000000006004b00000d770000613d00000000082400190000000007250019000000200770008a000000200880008a0000000009670019000000000a680019000000000a0a04330000000000a90435000000200660008c000005f30000c13d00000d770000013d00000f780030009c00000f7803008041000000c00130021000000ff1011001c73dda3dd50000040f000000600310027000000f7803300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000080057001bf0000060e0000613d0000008008000039000000000901034f000000009a09043c0000000008a80436000000000058004b0000060a0000c13d000000000006004b0000061b0000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f0003000000010355000000010020019000000d930000613d0000001f02400039000000600420018f00000080024001bf000900000002001d000000400020043f000000200030008c000017520000413d000000800200043d00000f7b0020009c000017520000213d0000000205000039000000000505041a0000100906000041000000090a00002900000000006a043500000084064001bf0000000000560435000000c4054000390000000a060000290000000000650435000000a4044000390000000b0500002900000000005404350000000004000414000000040020008c000006470000613d0000004001a0021000000f780040009c00000f7804008041000000c003400210000000000113019f00000fd9011001c73dda3dd50000040f000000600310027000010f780030019d00000f780330019700030000000103550000000100200190000013810000613d000000090a00002900001036053001980000001f0630018f00000000045a0019000006510000613d000000000701034f00000000080a0019000000007907043c0000000008980436000000000048004b0000064d0000c13d000000000006004b0000065e0000613d000000000151034f0000000305600210000000000604043300000000065601cf000000000656022f000000000101043b0000010005500089000000000151022f00000000015101cf000000000161019f00000000001404350000001f0130003900001036021001970000000001a20019000000000021004b0000000002000039000000010200403900000fd10010009c000018c60000213d0000000100200190000018c60000c13d000000400010043f00000ff30030009c000017520000213d000000200030008c000017520000413d0000000902000029000000000202043300000fd10020009c000017520000213d000000090330002900000009022000290000001f04200039000000000034004b000000000500001900000ff40500804100000ff40440019700000ff406300197000000000764013f000000000064004b000000000400001900000ff40400404100000ff40070009c000000000405c019000000000004004b000017520000c13d000000002502043400000fd10050009c000018c60000213d00000005045002100000003f0640003900000ff706600197000000000616001900000fd10060009c000018c60000213d000000400060043f00000000005104350000000004240019000000000034004b000017520000213d000000000005004b0000069c0000613d00000000030100190000000025020434000000000005004b0000000006000039000000010600c039000000000065004b000017520000c13d00000020033000390000000000530435000000000042004b000006920000413d000000400200043d00000020030000390000000003320436000000000401043300000000004304350000004003200039000000000004004b00000bde0000613d000000000500001900000020011000390000000006010433000000000006004b0000000006000039000000010600c03900000000036304360000000105500039000000000045004b000006a50000413d00000bde0000013d00000f780010009c00000f7801008041000000c00110021000000ff1011001c73dda3dd50000040f000000600310027000000f7803300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000080057001bf000006c30000613d0000008008000039000000000901034f000000009a09043c0000000008a80436000000000058004b000006bf0000c13d000000000006004b000006d00000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f0003000000010355000000010020019000000dd70000613d0000001f01400039000000600110018f00000080021001bf000b00000002001d000000400020043f000000200030008c000017520000413d000000800200043d00000f7b0020009c000017520000213d0000000203000039000000000303041a00000fd8040000410000000b05000029000000000045043500000084041001bf0000000000340435000000a403100039000000000003043500000004030000390000000203300367000000000303043b000000c40410003900000000003404350000000003000414000000040020008c000008d00000613d00000f780030009c00000f7803008041000000c0013002100000004003500210000000000131019f00000fd9011001c73dda3dd50000040f0000000b0b000029000000600310027000000f7803300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057b0019000007060000613d000000000801034f00000000090b0019000000008a08043c0000000009a90436000000000059004b000007020000c13d000000000006004b000007130000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f00030000000103550000000100200190000012b20000c13d0000001f0530018f00000f7a06300198000000400200043d000000000462001900001a2a0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b0000071e0000c13d00001a2a0000013d00000f780010009c00000f7801008041000000c00110021000000fc8011001c73dda3dd50000040f000000600310027000000f7803300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000080057001bf000007370000613d0000008008000039000000000901034f000000009a09043c0000000008a80436000000000058004b000007330000c13d000000000006004b000007440000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f0003000000010355000000010020019000000de30000613d0000001f01400039000000600110018f00000080011001bf000000400010043f000000200030008c000017520000413d000000800100043d000000000001004b0000000002000039000000010200c039000000000021004b000017520000c13d000000000001004b00000fc10000613d0000000b010000293dda2e6e0000040f000000000001004b0000141c0000613d0000000802000029000000000002004b000014cf0000613d0000000901000029000000010110008a000000000021004b000014cf0000813d000000400100043d00000064021000390000103303000041000000000032043500000044021000390000103403000041000000000032043500000024021000390000002103000039000000000032043500000fe102000041000000000021043500000004021000390000002003000039000000000032043500000f780010009c00000f7801008041000000400110021000000fd0011001c700003ddc0001043000000f780010009c00000f7801008041000000c00110021000000ff1011001c73dda3dd50000040f000000600310027000000f7803300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000080057001bf000007890000613d0000008008000039000000000901034f000000009a09043c0000000008a80436000000000058004b000007850000c13d000000000006004b000007960000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f0003000000010355000000010020019000000f5e0000613d0000001f01400039000000600110018f00000080021001bf000900000002001d000000400020043f000000200030008c000017520000413d000000800200043d00000f7b0020009c000017520000213d0000000203000039000000000303041a00000fd8040000410000000905000029000000000045043500000084041001bf0000000000340435000000c4031000390000000a040000290000000000430435000000a4031000390000000b0400002900000000004304350000000003000414000000040020008c000011b70000c13d0000000001150019000000400010043f0000000902000029000008d30000013d00000f780010009c00000f7801008041000000c00110021000000fc8011001c73dda3dd50000040f000000600310027000000f7803300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000080057001bf000007cc0000613d0000008008000039000000000901034f000000009a09043c0000000008a80436000000000058004b000007c80000c13d000000000006004b000007d90000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f0003000000010355000000010020019000000f6a0000613d0000001f01400039000000600110018f00000080021001bf000b00000002001d000000400020043f000000200030008c000017520000413d000000800200043d000000000002004b0000000004000039000000010400c039000000000042004b000017520000c13d000000000002004b000011e60000c13d00000fd201000041000000000010043f0000000001000411000000040010043f00000ffd01000041000000240010043f00000fd30100004100003ddc0001043000000f780030009c00000f7803008041000000c00130021000000ff1011001c73dda3dd50000040f000000600310027000000f7803300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000080057001bf000008080000613d0000008008000039000000000901034f000000009a09043c0000000008a80436000000000058004b000008040000c13d000000000006004b000008150000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f0003000000010355000000010020019000000f760000613d0000001f02400039000000600420018f00000080024001bf000900000002001d000000400020043f000000200030008c000017520000413d000000800200043d00000f7b0020009c000017520000213d0000000205000039000000000505041a00000ff606000041000000090a00002900000000006a043500000084064001bf0000000000560435000000c4054000390000000a060000290000000000650435000000a4044000390000000b0500002900000000005404350000000004000414000000040020008c000008410000613d0000004001a0021000000f780040009c00000f7804008041000000c003400210000000000113019f00000fd9011001c73dda3dd50000040f000000600310027000010f780030019d00000f780330019700030000000103550000000100200190000013d90000613d000000090a00002900001036053001980000001f0630018f00000000045a00190000084b0000613d000000000701034f00000000080a0019000000007907043c0000000008980436000000000048004b000008470000c13d000000000006004b000008580000613d000000000151034f0000000305600210000000000604043300000000065601cf000000000656022f000000000101043b0000010005500089000000000151022f00000000015101cf000000000161019f00000000001404350000001f0130003900001036021001970000000001a20019000000000021004b0000000002000039000000010200403900000fd10010009c000018c60000213d0000000100200190000018c60000c13d000000400010043f00000ff30030009c000017520000213d000000200030008c000017520000413d0000000902000029000000000202043300000fd10020009c000017520000213d000000090330002900000009022000290000001f04200039000000000034004b000000000500001900000ff40500804100000ff40440019700000ff406300197000000000764013f000000000064004b000000000400001900000ff40400404100000ff40070009c000000000405c019000000000004004b000017520000c13d000000002502043400000fd10050009c000018c60000213d00000005045002100000003f0640003900000ff706600197000000000616001900000fd10060009c000018c60000213d000000400060043f00000000005104350000000004240019000000000034004b000017520000213d000000000005004b00000ccb0000613d0000000003010019000000200330003900000000250204340000000000530435000000000042004b0000088c0000413d00000ccb0000013d00000f780010009c00000f7801008041000000c00110021000000ff1011001c73dda3dd50000040f000000600310027000000f7803300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000080057001bf000008a60000613d0000008008000039000000000901034f000000009a09043c0000000008a80436000000000058004b000008a20000c13d000000000006004b000008b30000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f0003000000010355000000010020019000000f820000613d0000001f01400039000000600110018f00000080021001bf000b00000002001d000000400020043f000000200030008c000017520000413d000000800200043d00000f7b0020009c000017520000213d0000000203000039000000000303041a00000fd8040000410000000b05000029000000000045043500000084041001bf0000000000340435000000c40310003900000ffa040000410000000000430435000000a40310003900000000000304350000000003000414000000040020008c0000128a0000c13d0000000001150019000000400010043f0000000b02000029000000000202043300000f7b0020009c00000c290000a13d000017520000013d00000f780010009c00000f7801008041000000c00110021000000ff1011001c73dda3dd50000040f000000600310027000000f7803300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000080057001bf000008eb0000613d0000008008000039000000000901034f000000009a09043c0000000008a80436000000000058004b000008e70000c13d000000000006004b000008f80000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f0003000000010355000000010020019000000fc90000613d0000001f01400039000000600110018f00000080021001bf000900000002001d000000400020043f000000200030008c000017520000413d000000800200043d00000f7b0020009c000017520000213d0000000203000039000000000303041a00000ff8040000410000000905000029000000000045043500000084041001bf0000000000340435000000c4031000390000000a040000290000000000430435000000a4031000390000000b0400002900000000004304350000000003000414000000040020008c00000ae70000613d00000f780030009c00000f7803008041000000c0013002100000004003500210000000000131019f00000fd9011001c73dda3dd50000040f000000090b000029000000600310027000000f7803300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057b00190000092d0000613d000000000801034f00000000090b0019000000008a08043c0000000009a90436000000000059004b000009290000c13d000000000006004b0000093a0000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f00030000000103550000000100200190000013100000c13d0000001f0530018f00000f7a06300198000000400200043d000000000462001900001a2a0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000009450000c13d00001a2a0000013d00000f780010009c00000f7801008041000000c00110021000000ff1011001c73dda3dd50000040f000000600310027000000f7803300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000080057001bf0000095e0000613d0000008008000039000000000901034f000000009a09043c0000000008a80436000000000058004b0000095a0000c13d000000000006004b0000096b0000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f0003000000010355000000010020019000000fd50000613d0000001f01400039000000600110018f00000080021001bf000b00000002001d000000400020043f000000200030008c000017520000413d000000800200043d00000f7b0020009c000017520000213d0000000203000039000000000303041a00000fdb040000410000000b05000029000000000045043500000084041001bf0000000000340435000000a403100039000000000003043500000004030000390000000203300367000000000303043b000000c40410003900000000003404350000000003000414000000040020008c000012b90000c13d0000000001150019000000400010043f0000000b02000029000000000202043300000c290000013d00000f780030009c00000f7803008041000000c00130021000000ff1011001c73dda3dd50000040f000000600310027000000f7803300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000080057001bf000009a30000613d0000008008000039000000000901034f000000009a09043c0000000008a80436000000000058004b0000099f0000c13d000000000006004b000009b00000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f0003000000010355000000010020019000000fe10000613d0000001f02400039000000600420018f00000080024001bf000b00000002001d000000400020043f000000200030008c000017520000413d000000800200043d00000f7b0020009c000017520000213d0000000205000039000000000505041a00000ff2060000410000000b0a00002900000000006a043500000084064001bf0000000000560435000000c40540003900001000060000410000000000650435000000a40440003900000000000404350000000004000414000000040020008c000009db0000613d0000004001a0021000000f780040009c00000f7804008041000000c003400210000000000113019f00000fd9011001c73dda3dd50000040f000000600310027000010f780030019d00000f7803300197000300000001035500000001002001900000140c0000613d0000000b0a00002900001036053001980000001f0630018f00000000045a0019000009e50000613d000000000701034f00000000080a0019000000007907043c0000000008980436000000000048004b000009e10000c13d000000000006004b000009f20000613d000000000151034f0000000305600210000000000604043300000000065601cf000000000656022f000000000101043b0000010005500089000000000151022f00000000015101cf000000000161019f00000000001404350000001f0130003900001036041001970000000001a40019000000000041004b0000000004000039000000010400403900000fd10010009c000018c60000213d0000000100400190000018c60000c13d000000400010043f00000ff30030009c000017520000213d000000200030008c000017520000413d0000000b04000029000000000404043300000fd10040009c000017520000213d0000000b063000290000000b034000290000001f04300039000000000064004b000000000500001900000ff40500804100000ff40440019700000ff407600197000000000874013f000000000074004b000000000400001900000ff40400404100000ff40080009c000000000405c019000000000004004b000017520000c13d000000004303043400000fd10030009c000018c60000213d0000001f0530003900001036055001970000003f055000390000103605500197000000000515001900000fd10050009c000018c60000213d000000400050043f00000000053104360000000007430019000000000067004b000017520000213d00001036063001970000001f0230018f000000000054004b000017ef0000813d000000000006004b00000d770000613d00000000082400190000000007250019000000200770008a000000200880008a0000000009670019000000000a680019000000000a0a04330000000000a90435000000200660008c00000a2e0000c13d00000d770000013d00000f780010009c00000f7801008041000000c00110021000000ff1011001c73dda3dd50000040f000000600310027000000f7803300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000080057001bf00000a490000613d0000008008000039000000000901034f000000009a09043c0000000008a80436000000000058004b00000a450000c13d000000000006004b00000a560000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f00030000000103550000000100200190000010b40000613d0000001f01400039000000600110018f00000080021001bf000900000002001d000000400020043f000000200030008c000017520000413d000000800200043d00000f7b0020009c000017520000213d0000000203000039000000000303041a00000ff9040000410000000905000029000000000045043500000084041001bf0000000000340435000000c4031000390000000a040000290000000000430435000000a4031000390000000b0400002900000000004304350000000003000414000000040020008c00000ae70000613d00000f780030009c00000f7803008041000000c0013002100000004003500210000000000131019f00000fd9011001c73dda3dd50000040f000000090b000029000000600310027000000f7803300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057b001900000a8b0000613d000000000801034f00000000090b0019000000008a08043c0000000009a90436000000000059004b00000a870000c13d000000000006004b00000a980000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f00030000000103550000000100200190000013100000c13d0000001f0530018f00000f7a06300198000000400200043d000000000462001900001a2a0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00000aa30000c13d00001a2a0000013d00000f780010009c00000f7801008041000000c00110021000000ff1011001c73dda3dd50000040f000000600310027000000f7803300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000080057001bf00000abc0000613d0000008008000039000000000901034f000000009a09043c0000000008a80436000000000058004b00000ab80000c13d000000000006004b00000ac90000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f00030000000103550000000100200190000010c00000613d0000001f01400039000000600110018f00000080021001bf000900000002001d000000400020043f000000200030008c000017520000413d000000800200043d00000f7b0020009c000017520000213d0000000203000039000000000303041a00000ff5040000410000000905000029000000000045043500000084041001bf0000000000340435000000c4031000390000000a040000290000000000430435000000a4031000390000000b0400002900000000004304350000000003000414000000040020008c000012e80000c13d0000000001150019000000400010043f000000090200002900000c230000013d00000f780010009c00000f7801008041000000c00110021000000ff1011001c73dda3dd50000040f000000600310027000000f7803300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000080057001bf00000aff0000613d0000008008000039000000000901034f000000009a09043c0000000008a80436000000000058004b00000afb0000c13d000000000006004b00000b0c0000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f00030000000103550000000100200190000010cc0000613d0000001f01400039000000600110018f00000080021001bf000900000002001d000000400020043f000000200030008c000017520000413d000000800200043d00000f7b0020009c000017520000213d0000000203000039000000000303041a00000fdb040000410000000905000029000000000045043500000084041001bf0000000000340435000000c4031000390000000a040000290000000000430435000000a4031000390000000b0400002900000000004304350000000003000414000000040020008c000013170000c13d0000000001150019000000400010043f0000000902000029000000000202043300000c290000013d00000f780030009c00000f7803008041000000c00130021000000ff1011001c73dda3dd50000040f000000600310027000000f7803300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000080057001bf00000b430000613d0000008008000039000000000901034f000000009a09043c0000000008a80436000000000058004b00000b3f0000c13d000000000006004b00000b500000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f00030000000103550000000100200190000011130000613d0000001f02400039000000600420018f00000080024001bf000900000002001d000000400020043f000000200030008c000017520000413d000000800200043d00000f7b0020009c000017520000213d0000000205000039000000000505041a0000100306000041000000090a00002900000000006a043500000084064001bf0000000000560435000000c4054000390000000a060000290000000000650435000000a4044000390000000b0500002900000000005404350000000004000414000000040020008c00000b7c0000613d0000004001a0021000000f780040009c00000f7804008041000000c003400210000000000113019f00000fd9011001c73dda3dd50000040f000000600310027000010f780030019d00000f7803300197000300000001035500000001002001900000145b0000613d000000090a00002900001036053001980000001f0630018f00000000045a001900000b860000613d000000000701034f00000000080a0019000000007907043c0000000008980436000000000048004b00000b820000c13d000000000006004b00000b930000613d000000000151034f0000000305600210000000000604043300000000065601cf000000000656022f000000000101043b0000010005500089000000000151022f00000000015101cf000000000161019f00000000001404350000001f0130003900001036021001970000000001a20019000000000021004b0000000002000039000000010200403900000fd10010009c000018c60000213d0000000100200190000018c60000c13d000000400010043f00000ff30030009c000017520000213d000000200030008c000017520000413d0000000902000029000000000202043300000fd10020009c000017520000213d000000090330002900000009022000290000001f04200039000000000034004b000000000500001900000ff40500804100000ff40440019700000ff406300197000000000764013f000000000064004b000000000400001900000ff40400404100000ff40070009c000000000405c019000000000004004b000017520000c13d000000002502043400000fd10050009c000018c60000213d00000005045002100000003f0640003900000ff706600197000000000616001900000fd10060009c000018c60000213d000000400060043f00000000005104350000000004420019000000000034004b000017520000213d000000000005004b00000bce0000613d0000000003010019000000002502043400000f7b0050009c000017520000213d00000020033000390000000000530435000000000042004b00000bc70000413d000000400200043d00000020030000390000000003320436000000000401043300000000004304350000004003200039000000000004004b00000bde0000613d00000000050000190000002001100039000000000601043300000f7b0660019700000000036304360000000105500039000000000045004b00000bd70000413d0000000001230049000018180000013d00000f780010009c00000f7801008041000000c00110021000000ff1011001c73dda3dd50000040f000000600310027000000f7803300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000080057001bf00000bf40000613d0000008008000039000000000901034f000000009a09043c0000000008a80436000000000058004b00000bf00000c13d000000000006004b00000c010000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f000300000001035500000001002001900000111f0000613d0000001f01400039000000600110018f00000080021001bf000b00000002001d000000400020043f000000200030008c000017520000413d000000800200043d00000f7b0020009c000017520000213d0000000203000039000000000303041a00000ff8040000410000000b05000029000000000045043500000084041001bf0000000000340435000000a403100039000000000003043500000004030000390000000203300367000000000303043b000000c40410003900000000003404350000000003000414000000040020008c000013460000c13d0000000001150019000000400010043f0000000b020000290000000002020433000000000002004b0000000003000039000000010300c039000000000032004b000017520000c13d0000000000210435000000400110021000000fc5011001c700003ddb0001042e00000f780030009c00000f7803008041000000c00130021000000ff1011001c73dda3dd50000040f000000600310027000000f7803300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000080057001bf00000c410000613d0000008008000039000000000901034f000000009a09043c0000000008a80436000000000058004b00000c3d0000c13d000000000006004b00000c4e0000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f000300000001035500000001002001900000112b0000613d0000001f02400039000000600420018f00000080024001bf000b00000002001d000000400020043f000000200030008c000017520000413d000000800200043d00000f7b0020009c000017520000213d0000000205000039000000000505041a00000ff6060000410000000b0a00002900000000006a043500000084064001bf0000000000560435000000a405400039000000000005043500000004050000390000000205500367000000000505043b000000c40440003900000000005404350000000004000414000000040020008c00000c7b0000613d0000004001a0021000000f780040009c00000f7804008041000000c003400210000000000113019f00000fd9011001c73dda3dd50000040f000000600310027000010f780030019d00000f780330019700030000000103550000000100200190000014670000613d0000000b0a00002900001036053001980000001f0630018f00000000045a001900000c850000613d000000000701034f00000000080a0019000000007907043c0000000008980436000000000048004b00000c810000c13d000000000006004b00000c920000613d000000000151034f0000000305600210000000000604043300000000065601cf000000000656022f000000000101043b0000010005500089000000000151022f00000000015101cf000000000161019f00000000001404350000001f0130003900001036021001970000000001a20019000000000021004b0000000002000039000000010200403900000fd10010009c000018c60000213d0000000100200190000018c60000c13d000000400010043f00000ff30030009c000017520000213d000000200030008c000017520000413d0000000b02000029000000000202043300000fd10020009c000017520000213d0000000b033000290000000b022000290000001f04200039000000000034004b000000000500001900000ff40500804100000ff40440019700000ff406300197000000000764013f000000000064004b000000000400001900000ff40400404100000ff40070009c000000000405c019000000000004004b000017520000c13d000000002502043400000fd10050009c000018c60000213d00000005045002100000003f0640003900000ff706600197000000000616001900000fd10060009c000018c60000213d000000400060043f00000000005104350000000004240019000000000034004b000017520000213d000000000005004b00000ccb0000613d0000000003010019000000200330003900000000250204340000000000530435000000000042004b00000cc60000413d000000400300043d000b00000003001d000000200200003900000000022304363dda24e30000040f000018160000013d00000f780030009c00000f7803008041000000c00130021000000ff1011001c73dda3dd50000040f000000600310027000000f7803300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000080057001bf00000ce50000613d0000008008000039000000000901034f000000009a09043c0000000008a80436000000000058004b00000ce10000c13d000000000006004b00000cf20000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f00030000000103550000000100200190000011370000613d0000001f02400039000000600420018f00000080024001bf000900000002001d000000400020043f000000200030008c000017520000413d000000800200043d00000f7b0020009c000017520000213d0000000205000039000000000505041a00000ff206000041000000090a00002900000000006a043500000084064001bf0000000000560435000000c4054000390000000a060000290000000000650435000000a4044000390000000b0500002900000000005404350000000004000414000000040020008c00000d1e0000613d0000004001a0021000000f780040009c00000f7804008041000000c003400210000000000113019f00000fd9011001c73dda3dd50000040f000000600310027000010f780030019d00000f780330019700030000000103550000000100200190000014730000613d000000090a00002900001036053001980000001f0630018f00000000045a001900000d280000613d000000000701034f00000000080a0019000000007907043c0000000008980436000000000048004b00000d240000c13d000000000006004b00000d350000613d000000000151034f0000000305600210000000000604043300000000065601cf000000000656022f000000000101043b0000010005500089000000000151022f00000000015101cf000000000161019f00000000001404350000001f0130003900001036041001970000000001a40019000000000041004b0000000004000039000000010400403900000fd10010009c000018c60000213d0000000100400190000018c60000c13d000000400010043f00000ff30030009c000017520000213d000000200030008c000017520000413d0000000904000029000000000404043300000fd10040009c000017520000213d000000090630002900000009034000290000001f04300039000000000064004b000000000500001900000ff40500804100000ff40440019700000ff407600197000000000874013f000000000074004b000000000400001900000ff40400404100000ff40080009c000000000405c019000000000004004b000017520000c13d000000004303043400000fd10030009c000018c60000213d0000001f0530003900001036055001970000003f055000390000103605500197000000000515001900000fd10050009c000018c60000213d000000400050043f00000000053104360000000007430019000000000067004b000017520000213d00001036063001970000001f0230018f000000000054004b000017f90000813d000000000006004b00000d770000613d00000000082400190000000007250019000000200770008a000000200880008a0000000009670019000000000a680019000000000a0a04330000000000a90435000000200660008c00000d710000c13d000000000002004b0000180f0000613d0000000007050019000018050000013d0000001f0530018f00000f7a06300198000000400200043d000000000462001900001a2a0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00000d820000c13d00001a2a0000013d0000001f0530018f00000f7a06300198000000400200043d000000000462001900001a2a0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00000d8e0000c13d00001a2a0000013d0000001f0530018f00000f7a06300198000000400200043d000000000462001900001a2a0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00000d9a0000c13d00001a2a0000013d00000f780010009c00000f7801008041000000c00110021000000fc8011001c73dda3dd50000040f000000600310027000000f7803300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000080057001bf00000db30000613d0000008008000039000000000901034f000000009a09043c0000000008a80436000000000058004b00000daf0000c13d000000000006004b00000dc00000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f00030000000103550000000100200190000011430000613d0000001f01400039000000600110018f00000080021001bf000600000002001d000000400020043f000000200030008c000017520000413d000000800200043d000000000002004b0000000004000039000000010400c039000000000042004b000017520000c13d000000000002004b0000138d0000c13d00000fd201000041000000000010043f000000070100002900000fc40000013d0000001f0530018f00000f7a06300198000000400200043d000000000462001900001a2a0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00000dde0000c13d00001a2a0000013d0000001f0530018f00000f7a06300198000000400200043d000000000462001900001a2a0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00000dea0000c13d00001a2a0000013d00000f7800b0009c00000f780300004100000000030b4019000000400330021000000f780010009c00000f7801008041000000c001100210000000000131019f00000fcb011001c7000b0000000b001d3dda3dd50000040f0000000b0b000029000000600310027000000f7803300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057b001900000e0a0000613d000000000801034f00000000090b0019000000008a08043c0000000009a90436000000000059004b00000e060000c13d000000000006004b00000e170000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f000300000001035500000001002001900000114f0000613d0000001f01400039000000600110018f0000000004b10019000000000014004b00000000020000390000000102004039000b00000004001d00000fd10040009c000018c60000213d0000000100200190000018c60000c13d0000000b02000029000000400020043f000000200030008c000017520000413d00000000020b043300000f7b0020009c000017520000213d0000000204000039000000000404041a0000000b07000029000000440570003900000fd706000041000000000065043500000024057000390000000a06000029000000000065043500000fd8050000410000000000570435000000040570003900000000004504350000000004000414000000040020008c00000e6a0000613d00000f780070009c00000f78010000410000000001074019000000400110021000000f780040009c00000f7804008041000000c003400210000000000113019f00000fd9011001c73dda3dd50000040f000000600310027000000f7803300197000000200030008c000000200400003900000000040340190000001f0640018f00000020074001900000000b0570002900000e560000613d000000000801034f0000000b09000029000000008a08043c0000000009a90436000000000059004b00000e520000c13d000000000006004b00000e630000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f00030000000103550000000100200190000016120000613d0000001f01400039000000600110018f0000000b07000029000000000171001900000fd10010009c000018c60000213d000000400010043f000000200030008c000017520000413d0000000b010000290000000001010433000b00000001001d00000f7b0010009c000017520000213d0000000a010000293dda2d950000040f000900000001001d0000000a010000293dda30f90000040f000000400200043d000000200320003900000009040000290000000000430435000000400320003900000000001304350000000b01000029000000000012043500000f780020009c00000f7802008041000000400120021000000fda011001c700003ddb0001042e00000f780010009c00000f7801008041000000c00110021000000fc8011001c73dda3dd50000040f000000600310027000000f7803300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000080057001bf00000e9b0000613d0000008008000039000000000901034f000000009a09043c0000000008a80436000000000058004b00000e970000c13d000000000006004b00000ea80000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f000300000001035500000001002001900000115b0000613d0000001f01400039000000600110018f00000080021001bf000900000002001d000000400020043f000000200030008c000017520000413d000000800200043d000000000002004b0000000004000039000000010400c039000000000042004b000017520000c13d000000000002004b00000fc10000613d00000ffb020000410000000904000029000000000024043500000084011001bf0000000002000410000000000021043500000000010004140000000b02000029000000040020008c000015050000c13d000000200030008c00000020030080390000001f01300039000000600110018f0000000001410019000000400010043f000000090100002900000000030104330000000b0100002900000000020004113dda3bd80000040f000000000100001900003ddb0001042e00000f780010009c00000f7801008041000000c00110021000000fc8011001c73dda3dd50000040f000000600310027000000f7803300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000080057001bf000000800a00003900000ee60000613d000000000801034f000000008908043c000000000a9a043600000000005a004b00000ee20000c13d000000000006004b00000ef30000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f00030000000103550000000100200190000011670000613d0000001f01400039000000600110018f00000080021001bf000900000002001d000000400020043f000000200030008c000017520000413d000000800200043d000000000002004b0000000004000039000000010400c039000000000042004b000017520000c13d000000000002004b00000fc10000613d0000000102000039000000000202041a00000fc9040000410000000905000029000000000045043500000084011001bf00000fca0400004100000000004104350000000001000414000000080220027000000f7b02200197000000040020008c000015340000c13d000000200030008c00000020030080390000001f01300039000000600110018f0000000001510019000000400010043f00000009010000290000000001010433000a00000001001d00000f7b0010009c000017520000213d0000000201000039000000000101041a000900000001001d00000fcc0100004100000000001004430000000a010000290000000400100443000000000100041400000f780010009c00000f7801008041000000c00110021000000fcd011001c700008002020000393dda3dd50000040f0000000100200190000023c30000613d000000000101043b000000000001004b000017520000613d000000400400043d00000fce01000041000000000014043500000004014000390000000902000029000000000021043500000004010000390000000201100367000000000101043b00000064024000390000000b030000290000000000320435000000440240003900000fcf030000410000000000320435000b00000004001d0000002402400039000000000012043500000000010004140000000a02000029000000040020008c00000f570000613d0000000b0200002900000f780020009c00000f7802008041000000400220021000000f780010009c00000f7801008041000000c001100210000000000121019f00000fd0011001c70000000a020000293dda3dd00000040f000000600310027000010f780030019d00030000000103550000000100200190000017890000613d0000000b0100002900000fd10010009c000018c60000213d0000000b01000029000000400010043f000000000100001900003ddb0001042e0000001f0530018f00000f7a06300198000000400200043d000000000462001900001a2a0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00000f650000c13d00001a2a0000013d0000001f0530018f00000f7a06300198000000400200043d000000000462001900001a2a0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00000f710000c13d00001a2a0000013d0000001f0530018f00000f7a06300198000000400200043d000000000462001900001a2a0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00000f7d0000c13d00001a2a0000013d0000001f0530018f00000f7a06300198000000400200043d000000000462001900001a2a0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00000f890000c13d00001a2a0000013d00000f780010009c00000f7801008041000000c00110021000000fc8011001c73dda3dd50000040f000000600310027000000f7803300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000080057001bf00000fa20000613d0000008008000039000000000901034f000000009a09043c0000000008a80436000000000058004b00000f9e0000c13d000000000006004b00000faf0000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f00030000000103550000000100200190000011730000613d0000001f01400039000000600110018f00000080011001bf000000400010043f000000200030008c000017520000413d000000800100043d000000000001004b0000000002000039000000010200c039000000000021004b000017520000c13d000000000001004b000013f50000c13d00000fd201000041000000000010043f0000000a01000029000000040010043f00000fc701000041000000240010043f00000fd30100004100003ddc000104300000001f0530018f00000f7a06300198000000400200043d000000000462001900001a2a0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00000fd00000c13d00001a2a0000013d0000001f0530018f00000f7a06300198000000400200043d000000000462001900001a2a0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00000fdc0000c13d00001a2a0000013d0000001f0530018f00000f7a06300198000000400200043d000000000462001900001a2a0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00000fe80000c13d00001a2a0000013d00000f780010009c00000f7801008041000000c00110021000000fc8011001c73dda3dd50000040f000000600310027000000f7803300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000080057001bf000010010000613d0000008008000039000000000901034f000000009a09043c0000000008a80436000000000058004b00000ffd0000c13d000000000006004b0000100e0000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f000300000001035500000001002001900000117f0000613d0000001f01400039000000600110018f00000080011001bf000000400010043f000000200030008c000017520000413d000000800100043d000000000001004b0000000002000039000000010200c039000000000021004b000017520000c13d000000000001004b000014180000c13d00000fd201000041000000000010043f000000090100002900000fc40000013d00000f7800b0009c00000f780300004100000000030b4019000000400330021000000f780010009c00000f7801008041000000c001100210000000000131019f00000fcb011001c7000a0000000b001d3dda3dd50000040f0000000a0b000029000000600310027000000f7803300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057b00190000103f0000613d000000000801034f00000000090b0019000000008a08043c0000000009a90436000000000059004b0000103b0000c13d000000000006004b0000104c0000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f000300000001035500000001002001900000118b0000613d0000001f01400039000000600110018f0000000004b10019000000000014004b00000000020000390000000102004039000a00000004001d00000fd10040009c000018c60000213d0000000100200190000018c60000c13d0000000a02000029000000400020043f000000200030008c000017520000413d00000000020b043300000f7b0020009c000017520000213d0000000204000039000000000404041a0000000a0700002900000044057000390000100206000041000000000065043500000024057000390000000906000029000000000065043500000fdb050000410000000000570435000000040570003900000000004504350000000004000414000000040020008c0000109f0000613d00000f780070009c00000f78010000410000000001074019000000400110021000000f780040009c00000f7804008041000000c003400210000000000113019f00000fd9011001c73dda3dd50000040f000000600310027000000f7803300197000000200030008c000000200400003900000000040340190000001f0640018f00000020074001900000000a057000290000108b0000613d000000000801034f0000000a09000029000000008a08043c0000000009a90436000000000059004b000010870000c13d000000000006004b000010980000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f00030000000103550000000100200190000016360000613d0000001f01400039000000600110018f0000000a07000029000000000171001900000fd10010009c000018c60000213d000000400010043f000000200030008c000017520000413d0000000a0200002900000000020204330000000b0020006c000000000200003900000001020060390000000b0000006b0000000003000039000000010300c039000000000223016f000000000021043500000f780010009c00000f7801008041000000400110021000000fc5011001c700003ddb0001042e0000001f0530018f00000f7a06300198000000400200043d000000000462001900001a2a0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000010bb0000c13d00001a2a0000013d0000001f0530018f00000f7a06300198000000400200043d000000000462001900001a2a0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000010c70000c13d00001a2a0000013d0000001f0530018f00000f7a06300198000000400200043d000000000462001900001a2a0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000010d30000c13d00001a2a0000013d00000f780010009c00000f7801008041000000c00110021000000fc8011001c73dda3dd50000040f000000600310027000000f7803300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000080057001bf000010ec0000613d0000008008000039000000000901034f000000009a09043c0000000008a80436000000000058004b000010e80000c13d000000000006004b000010f90000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f00030000000103550000000100200190000011970000613d0000001f01400039000000600210018f00000080012001bf000000400010043f000000200030008c000017520000413d000000800300043d000000000003004b0000000004000039000000010400c039000000000043004b000017520000c13d000000000003004b000014450000c13d00000fd201000041000000000010043f0000000001000411000000040010043f0000102e01000041000000240010043f00000fd30100004100003ddc000104300000001f0530018f00000f7a06300198000000400200043d000000000462001900001a2a0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b0000111a0000c13d00001a2a0000013d0000001f0530018f00000f7a06300198000000400200043d000000000462001900001a2a0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000011260000c13d00001a2a0000013d0000001f0530018f00000f7a06300198000000400200043d000000000462001900001a2a0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000011320000c13d00001a2a0000013d0000001f0530018f00000f7a06300198000000400200043d000000000462001900001a2a0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b0000113e0000c13d00001a2a0000013d0000001f0530018f00000f7a06300198000000400200043d000000000462001900001a2a0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b0000114a0000c13d00001a2a0000013d0000001f0530018f00000f7a06300198000000400200043d000000000462001900001a2a0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000011560000c13d00001a2a0000013d0000001f0530018f00000f7a06300198000000400200043d000000000462001900001a2a0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000011620000c13d00001a2a0000013d0000001f0530018f00000f7a06300198000000400200043d000000000462001900001a2a0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b0000116e0000c13d00001a2a0000013d0000001f0530018f00000f7a06300198000000400200043d000000000462001900001a2a0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b0000117a0000c13d00001a2a0000013d0000001f0530018f00000f7a06300198000000400200043d000000000462001900001a2a0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000011860000c13d00001a2a0000013d0000001f0530018f00000f7a06300198000000400200043d000000000462001900001a2a0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000011920000c13d00001a2a0000013d0000001f0530018f00000f7a06300198000000400200043d000000000462001900001a2a0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b0000119e0000c13d00001a2a0000013d0000100a01000041000000000010044300000000010004100000000400100443000000000100041400000f780010009c00000f7801008041000000c00110021000000fcd011001c70000800a020000393dda3dd50000040f0000000100200190000023c30000613d000000000301043b00000000010004140000000002000411000000040020008c0000148b0000c13d00000001010000310000149a0000013d00000f780030009c00000f7803008041000000c0013002100000004003500210000000000131019f00000fd9011001c73dda3dd50000040f000000090b000029000000600310027000000f7803300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057b0019000011ce0000613d000000000801034f00000000090b0019000000008a08043c0000000009a90436000000000059004b000011ca0000c13d000000000006004b000011db0000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f00030000000103550000000100200190000013cd0000613d0000001f01400039000000600110018f0000000001b10019000000400010043f000000200030008c000007b60000813d000017520000013d000000c002100039000000400020043f0000000c020000390000000b040000290000000000240435000000a00410003900000ffe0200004100000000002404350000000302000039000000000202041a000000ff00200190000013e50000c13d000a00000004001d0000000102000039000000000202041a000000400b00043d00000fc90400004100000000004b04350000000404b0003900000fca0500004100000000005404350000000004000414000000080220027000000f7b02200197000000040020008c0000122e0000613d00000f7800b0009c00000f780100004100000000010b4019000000400110021000000f780040009c00000f7804008041000000c003400210000000000113019f00000fcb011001c700090000000b001d3dda3dd50000040f000000600310027000000f7803300197000000200030008c000000200400003900000000040340190000001f0640018f0000002007400190000000090b00002900000009057000290000121b0000613d000000000801034f00000000090b0019000000008a08043c0000000009a90436000000000059004b000012170000c13d000000000006004b000012280000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f00030000000103550000000100200190000015ee0000613d0000001f01400039000000600110018f0000000002b10019000000000012004b0000000001000039000000010100403900000fd10020009c000018c60000213d0000000100100190000018c60000c13d000000400020043f000000200030008c000017520000413d00000000010b0433000900000001001d00000f7b0010009c000017520000213d0000000201000039000000000101041a000800000001001d00000fcc01000041000000000010044300000009010000290000000400100443000000000100041400000f780010009c00000f7801008041000000c00110021000000fcd011001c700008002020000393dda3dd50000040f0000000100200190000023c30000613d000000000101043b000000000001004b000017520000613d000000400300043d000000640130003900000000020004100000000000210435000000440130003900000fe702000041000000000021043500000fe80100004100000000001304350000000401300039000600000001001d00000008020000290000000000210435000700000003001d0000002401300039000000000001043500000000010004140000000902000029000000040020008c000012740000613d000000070200002900000f780020009c00000f7802008041000000400220021000000f780010009c00000f7801008041000000c001100210000000000121019f00000fd0011001c700000009020000293dda3dd00000040f000000600310027000010f780030019d000300000001035500000001002001900000188a0000613d000000070100002900000fd10010009c000018c60000213d0000000703000029000000400030043f0000000101000039000000000201041a00000fc901000041000000000013043500000fca01000041000000060300002900000000001304350000000001000414000000080220027000000f7b02200197000000040020008c000018970000c13d0000000103000031000000200030008c00000020040000390000000004034019000018c10000013d00000f780030009c00000f7803008041000000c0013002100000004003500210000000000131019f00000fd9011001c73dda3dd50000040f0000000b0b000029000000600310027000000f7803300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057b0019000012a10000613d000000000801034f00000000090b0019000000008a08043c0000000009a90436000000000059004b0000129d0000c13d000000000006004b000012ae0000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f00030000000103550000000100200190000013e90000613d0000001f01400039000000600110018f0000000001b10019000000400010043f000000200030008c000008d20000813d000017520000013d00000f780030009c00000f7803008041000000c0013002100000004003500210000000000131019f00000fd9011001c73dda3dd50000040f0000000b0b000029000000600310027000000f7803300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057b0019000012d00000613d000000000801034f00000000090b0019000000008a08043c0000000009a90436000000000059004b000012cc0000c13d000000000006004b000012dd0000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f00030000000103550000000100200190000014000000613d0000001f01400039000000600110018f0000000001b10019000000400010043f000000200030008c0000098c0000813d000017520000013d00000f780030009c00000f7803008041000000c0013002100000004003500210000000000131019f00000fd9011001c73dda3dd50000040f000000090b000029000000600310027000000f7803300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057b0019000012ff0000613d000000000801034f00000000090b0019000000008a08043c0000000009a90436000000000059004b000012fb0000c13d000000000006004b0000130c0000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f000300000001035500000001002001900000142d0000613d0000001f01400039000000600110018f0000000001b10019000000400010043f000000200030008c00000ae90000813d000017520000013d00000f780030009c00000f7803008041000000c0013002100000004003500210000000000131019f00000fd9011001c73dda3dd50000040f000000090b000029000000600310027000000f7803300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057b00190000132e0000613d000000000801034f00000000090b0019000000008a08043c0000000009a90436000000000059004b0000132a0000c13d000000000006004b0000133b0000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f00030000000103550000000100200190000014390000613d0000001f01400039000000600110018f0000000001b10019000000400010043f000000200030008c00000b2c0000813d000017520000013d00000f780030009c00000f7803008041000000c0013002100000004003500210000000000131019f00000fd9011001c73dda3dd50000040f0000000b0b000029000000600310027000000f7803300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057b00190000135d0000613d000000000801034f00000000090b0019000000008a08043c0000000009a90436000000000059004b000013590000c13d000000000006004b0000136a0000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f000300000001035500000001002001900000147f0000613d0000001f01400039000000600110018f0000000001b10019000000400010043f000000200030008c00000c220000813d000017520000013d0000001f0530018f00000f7a06300198000000400200043d000000000462001900001a2a0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b0000137c0000c13d00001a2a0000013d0000001f0530018f00000f7a06300198000000400200043d000000000462001900001a2a0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000013880000c13d00001a2a0000013d0000000102000039000000000202041a00000fc9040000410000000605000029000000000045043500000084011001bf00000fca0400004100000000004104350000000001000414000000080220027000000f7b02200197000000040020008c000014d60000c13d000000200030008c00000020030080390000001f01300039000000600110018f00000000025100190000002001000039000700000002001d000000400020043f0000000602000029000000000202043300000f7b0020009c000017520000213d0000000203000039000000000303041a00000fdb040000410000000705000029000000000045043500000004045001bf0000000000340435000000440350003900000fdc040000410000000000430435000000240350003900000000000304350000000003000414000000040020008c0000164e0000c13d0000000702100029000600000002001d000000400020043f00000007020000290000000002020433000700000002001d000000010020003a000021e00000413d0000000102000039000000000202041a00000fc9030000410000000604000029000000000034043500000004034001bf00000fca0400004100000000004304350000000003000414000000080220027000000f7b02200197000000040020008c0000170b0000c13d0000000601100029000000400010043f0000173a0000013d0000001f0530018f00000f7a06300198000000400200043d000000000462001900001a2a0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000013d40000c13d00001a2a0000013d0000001f0530018f00000f7a06300198000000400200043d000000000462001900001a2a0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000013e00000c13d00001a2a0000013d00000fff01000041000000000010043f00000fdf0100004100003ddc000104300000001f0530018f00000f7a06300198000000400200043d000000000462001900001a2a0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000013f00000c13d00001a2a0000013d0000000b03000029000000080130021000000f7d011001970000000104000039000000000204041a00000fee02200197000000000112019f000000000014041b000000000003004b000000470000613d0000004d0000013d0000001f0530018f00000f7a06300198000000400200043d000000000462001900001a2a0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000014070000c13d00001a2a0000013d0000001f0530018f00000f7a06300198000000400200043d000000000462001900001a2a0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000014130000c13d00001a2a0000013d0000000b010000293dda2e6e0000040f000000000001004b000015620000c13d000000400100043d00000044021000390000103503000041000000000032043500000024021000390000001303000039000000000032043500000fe102000041000000000021043500000004021000390000002003000039000000000032043500000f780010009c00000f7801008041000000400110021000000fd9011001c700003ddc000104300000001f0530018f00000f7a06300198000000400200043d000000000462001900001a2a0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000014340000c13d00001a2a0000013d0000001f0530018f00000f7a06300198000000400200043d000000000462001900001a2a0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000014400000c13d00001a2a0000013d0000000103000039000000000303041a000000ff0430018f0000000b0000006b0000156d0000c13d000000000004004b000015820000613d00001037023001970000000103000039000000000023041b000000000200041100000000002104350000004001100210000000000200041400000f780020009c00000f7802008041000000c002200210000000000112019f0000102f011001c70000800d0200003900001031040000410000157e0000013d0000001f0530018f00000f7a06300198000000400200043d000000000462001900001a2a0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000014620000c13d00001a2a0000013d0000001f0530018f00000f7a06300198000000400200043d000000000462001900001a2a0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b0000146e0000c13d00001a2a0000013d0000001f0530018f00000f7a06300198000000400200043d000000000462001900001a2a0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b0000147a0000c13d00001a2a0000013d0000001f0530018f00000f7a06300198000000400200043d000000000462001900001a2a0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000014860000c13d00001a2a0000013d00000f780010009c00000f7801008041000000c001100210000000000003004b000014940000613d0000100b011001c70000800902000039000000000400041100000000050000193dda3dd00000040f000a00000002001d0003000000010355000000600110027000010f780010019d00000f7801100197000000000001004b000014a60000c13d0000000a0100002900000001001001900000004d0000c13d000000400100043d00000044021000390000100c03000041000000000032043500000024021000390000000f03000039000014220000013d00000fd10010009c000018c60000213d0000001f0310003900001036033001970000003f033000390000103604300197000000400300043d0000000004430019000000000034004b0000000005000039000000010500403900000fd10040009c000018c60000213d0000000100500190000018c60000c13d000000400040043f000000000513043600001036021001980000001f0310018f00000000012500190000000304000367000014c10000613d000000000604034f000000006706043c0000000005750436000000000015004b000014bd0000c13d000000000003004b0000149c0000613d000000000224034f0000000303300210000000000401043300000000043401cf000000000434022f000000000202043b0000010003300089000000000232022f00000000023201cf000000000242019f00000000002104350000149c0000013d0000000b010000293dda37e80000040f0000000b0100002900000009020000293dda38a90000040f000000000100001900003ddb0001042e00000f780010009c00000f7801008041000000c0011002100000004003500210000000000131019f00000fcb011001c73dda3dd50000040f000000600310027000000f7803300197000000200030008c000000200400003900000000040340190000001f0640018f00000020074001900000000605700029000014ec0000613d000000000801034f0000000609000029000000008a08043c0000000009a90436000000000059004b000014e80000c13d000000000006004b000014f90000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f00030000000103550000000100200190000015e20000613d0000001f01400039000000600110018f0000000602100029000700000002001d000000400020043f000000200030008c000013a20000813d000017520000013d00000f780010009c00000f7801008041000000c0011002100000004002400210000000000121019f00000fcb011001c70000000b020000293dda3dd50000040f000000600310027000000f7803300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000009057000290000151c0000613d000000000801034f0000000909000029000000008a08043c0000000009a90436000000000059004b000015180000c13d000000000006004b000015290000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f00030000000103550000000100200190000015fa0000613d0000001f01400039000000600110018f0000000901100029000000400010043f000000200030008c00000ecb0000813d000017520000013d00000f780010009c00000f7801008041000000c0011002100000004003500210000000000131019f00000fcb011001c73dda3dd50000040f000000600310027000000f7803300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000009057000290000154a0000613d000000000801034f0000000909000029000000008a08043c0000000009a90436000000000059004b000015460000c13d000000000006004b000015570000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f00030000000103550000000100200190000016060000613d0000001f01400039000000600110018f0000000901100029000000400010043f000000200030008c00000f190000813d000017520000013d0000000b010000293dda25ce0000040f000000000001004b0000161e0000c13d000000400100043d00000044021000390000100803000041000000000032043500000024021000390000001203000039000014220000013d000000000004004b000015820000c13d000010370230019700000001022001bf0000000103000039000000000023041b000000000200041100000000002104350000004001100210000000000200041400000f780020009c00000f7802008041000000c002200210000000000112019f0000102f011001c70000800d0200003900001030040000413dda3dd00000040f00000001002001900000004d0000c13d000017520000013d00000fe103000041000000000031043500000084032001bf00000020040000390000000000430435000000c40320003900001032040000410000000000430435000000a40220003900000014030000390000000000320435000000400110021000000fd9011001c700003ddc00010430000000070300002900000f780030009c00000f7803008041000000400330021000000f780010009c00000f7801008041000000c001100210000000000131019f00000fdf011001c73dda3dd50000040f000000600310027000000f7803300197000000200030008c000000200400003900000000040340190000001f0640018f00000020074001900000000705700029000015a90000613d000000000801034f0000000709000029000000008a08043c0000000009a90436000000000059004b000015a50000c13d000000000006004b000015b60000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f00030000000103550000000100200190000016420000613d0000001f01400039000000600110018f0000000702100029000000000012004b00000000010000390000000101004039000600000002001d00000fd10020009c000018c60000213d0000000100100190000018c60000c13d0000000601000029000000400010043f000000200030008c000017520000413d00000007010000290000000001010433000000000001004b0000000002000039000000010200c039000000000021004b000017520000c13d000000000001004b000017780000c13d00000006010000290000000401100039000000000200041a000000020020008c000017960000c13d00000fe102000041000000060300002900000000002304350000002002000039000000000021043500000044013000390000102d02000041000000000021043500000024013000390000001f02000039000017830000013d0000001f0530018f00000f7a06300198000000400200043d000000000462001900001a2a0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000015e90000c13d00001a2a0000013d0000001f0530018f00000f7a06300198000000400200043d000000000462001900001a2a0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000015f50000c13d00001a2a0000013d0000001f0530018f00000f7a06300198000000400200043d000000000462001900001a2a0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000016010000c13d00001a2a0000013d0000001f0530018f00000f7a06300198000000400200043d000000000462001900001a2a0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b0000160d0000c13d00001a2a0000013d0000001f0530018f00000f7a06300198000000400200043d000000000462001900001a2a0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000016190000c13d00001a2a0000013d00000024010000390000000201100367000000000201043b0000000b010000293dda3aec0000040f0000000101000039000000000201041a000000400300043d00000fc9010000410000000000130435000900000003001d000000040130003900000fca0300004100000000003104350000000001000414000000080220027000000f7b02200197000000040020008c0000167f0000c13d0000000103000031000000200030008c00000020040000390000000004034019000016a90000013d0000001f0530018f00000f7a06300198000000400200043d000000000462001900001a2a0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b0000163d0000c13d00001a2a0000013d0000001f0530018f00000f7a06300198000000400200043d000000000462001900001a2a0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000016490000c13d00001a2a0000013d00000f780030009c00000f7803008041000000c0013002100000000703000029000700000003001d0000004003300210000000000113019f00000fd9011001c73dda3dd50000040f000000600310027000000f7803300197000000200030008c000000200400003900000000040340190000001f0640018f00000020074001900000000705700029000016660000613d000000000801034f0000000709000029000000008a08043c0000000009a90436000000000059004b000016620000c13d000000000006004b000016730000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f00030000000103550000000100200190000017540000613d0000001f01400039000000600110018f0000000702100029000600000002001d000000400020043f000000200030008c000013b80000813d000017520000013d000000090300002900000f780030009c00000f7803008041000000400330021000000f780010009c00000f7801008041000000c001100210000000000131019f00000fcb011001c73dda3dd50000040f000000600310027000000f7803300197000000200030008c000000200400003900000000040340190000001f0640018f00000020074001900000000905700029000016980000613d000000000801034f0000000909000029000000008a08043c0000000009a90436000000000059004b000016940000c13d000000000006004b000016a50000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f00030000000103550000000100200190000017600000613d0000001f01400039000000600210018f0000000901200029000000000021004b0000000002000039000000010200403900000fd10010009c000018c60000213d0000000100200190000018c60000c13d000000400010043f000000200030008c000017520000413d00000009010000290000000001010433000900000001001d00000f7b0010009c000017520000213d0000000201000039000000000101041a000800000001001d00000fcc01000041000000000010044300000009010000290000000400100443000000000100041400000f780010009c00000f7801008041000000c00110021000000fcd011001c700008002020000393dda3dd50000040f0000000100200190000023c30000613d000000000101043b000000000001004b000017520000613d000000400300043d00000044013000390000100402000041000000000021043500000024013000390000000b02000029000000000021043500000fdd0100004100000000001304350000000401300039000600000001001d0000000802000029000000000021043500000044010000390000000201100367000000000101043b000700000003001d0000006402300039000000000012043500000000010004140000000902000029000000040020008c000016f50000613d000000070200002900000f780020009c00000f7802008041000000400220021000000f780010009c00000f7801008041000000c001100210000000000121019f00000fd0011001c700000009020000293dda3dd00000040f000000600310027000010f780030019d000300000001035500000001002001900000195c0000613d000000070100002900000fd10010009c000018c60000213d0000000703000029000000400030043f0000000101000039000000000201041a00000fc901000041000000000013043500000fca01000041000000060300002900000000001304350000000001000414000000080220027000000f7b02200197000000040020008c0000197c0000c13d0000000103000031000000200030008c00000020040000390000000004034019000019a60000013d00000f780030009c00000f7803008041000000c0013002100000000603000029000600000003001d0000004003300210000000000113019f00000fcb011001c73dda3dd50000040f000000600310027000000f7803300197000000200030008c000000200400003900000000040340190000001f0640018f00000020074001900000000605700029000017230000613d000000000801034f0000000609000029000000008a08043c0000000009a90436000000000059004b0000171f0000c13d000000000006004b000017300000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f000300000001035500000001002001900000176c0000613d0000001f01400039000000600110018f0000000601100029000000400010043f000000200030008c000017520000413d00000006010000290000000001010433000600000001001d00000f7b0010009c000017520000213d0000000201000039000000000101041a000500000001001d00000fcc01000041000000000010044300000006010000290000000400100443000000000100041400000f780010009c00000f7801008041000000c00110021000000fcd011001c700008002020000393dda3dd50000040f0000000100200190000023c30000613d000000000101043b000000000001004b000017a70000c13d000000000100001900003ddc000104300000001f0530018f00000f7a06300198000000400200043d000000000462001900001a2a0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b0000175b0000c13d00001a2a0000013d0000001f0530018f00000f7a06300198000000400200043d000000000462001900001a2a0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000017670000c13d00001a2a0000013d0000001f0530018f00000f7a06300198000000400200043d000000000462001900001a2a0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000017730000c13d00001a2a0000013d000000060300002900000044013000390000100f02000041000000000021043500000024013000390000001002000039000000000021043500000fe101000041000000000013043500000004013000390000002002000039000000000021043500000f780030009c00000f7803008041000000400130021000000fd9011001c700003ddc0001043000000f78033001970000001f0530018f00000f7a06300198000000400200043d000000000462001900001a2a0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000017910000c13d00001a2a0000013d0000000202000039000000000020041b0000000102000039000000000202041a00000fc9040000410000000605000029000000000045043500000f7e0400004100000000004104350000000001000414000000080220027000000f7b02200197000700000002001d000000040020008c000018200000c13d00000020040000390000184b0000013d00000007010000290000000102100039000000400300043d00000fdd0100004100000000001304350000006401300039000100000002001d000200000001001d0000000000210435000000440230003900000fdc01000041000300000002001d00000000001204350000000401300039000400000001001d00000005020000290000000000210435000700000003001d0000002401300039000500000001001d000000000001043500000000010004140000000602000029000000040020008c000017d00000613d000000070200002900000f780020009c00000f7802008041000000400220021000000f780010009c00000f7801008041000000c001100210000000000121019f00000fd0011001c700000006020000293dda3dd00000040f000000600310027000010f780030019d00030000000103550000000100200190000018d80000613d000000070100002900000fd10010009c000018c60000213d0000000701000029000000400010043f0000000b0000006b0000193a0000c13d00000fe1010000410000000702000029000000000012043500000020010000390000000403000029000000000013043500000023010000390000000503000029000000000013043500000fec010000410000000303000029000000000013043500000fed01000041000019490000013d0000000007650019000000000006004b000018020000613d00000000080400190000000009050019000000008a0804340000000009a90436000000000079004b000017ea0000c13d000018020000013d0000000007650019000000000006004b000018020000613d00000000080400190000000009050019000000008a0804340000000009a90436000000000079004b000017f40000c13d000018020000013d0000000007650019000000000006004b000018020000613d00000000080400190000000009050019000000008a0804340000000009a90436000000000079004b000017fe0000c13d000000000002004b0000180f0000613d00000000046400190000000302200210000000000607043300000000062601cf000000000626022f00000000040404330000010002200089000000000424022f00000000022401cf000000000262019f0000000000270435000000000253001900000000000204350000002002000039000000400300043d000b00000003001d00000000022304363dda24b10000040f0000000b02000029000000000121004900000f780010009c00000f7801008041000000600110021000000f780020009c00000f78020080410000004002200210000000000121019f00003ddb0001042e000000060200002900000f780020009c00000f7802008041000000400220021000000f780010009c00000f7801008041000000c001100210000000000121019f00000fcb011001c700000007020000293dda3dd50000040f000000600310027000000f7803300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000006057000290000183a0000613d000000000801034f0000000609000029000000008a08043c0000000009a90436000000000059004b000018360000c13d000000000006004b000018470000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f00030000000103550000000100200190000018cc0000613d0000001f01400039000000600110018f000000060110002900000fd10010009c000018c60000213d000000400010043f000000200030008c000017520000413d0000000602000029000000000202043300000f7b0020009c000017520000213d0000000003000410000000000032004b00001a030000c13d0000000b010000293dda25ce0000040f000000000001004b00001a3d0000c13d0000000b010000293dda36440000040f000000400200043d000600000002001d000000000001004b00001a500000c13d0000000601000029000010130010009c000018c60000213d00000006020000290000004001200039000000400010043f0000000101000039000000000112043600000000020000310000000202200367000000000302043b0000000000310435000000400200043d000500000002001d000010130020009c000018c60000213d00000005040000290000004002400039000000400020043f00000001020000390000000002240436000000000032043500000006030000290000000003030433000000000003004b000018840000613d0000000a03000029000000000031043500000005010000290000000001010433000000000001004b00001bef0000c13d0000102701000041000000000010043f0000003201000039000000040010043f00000fcb0100004100003ddc0001043000000f78033001970000001f0530018f00000f7a06300198000000400200043d000000000462001900001a2a0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000018920000c13d00001a2a0000013d000000070300002900000f780030009c00000f7803008041000000400330021000000f780010009c00000f7801008041000000c001100210000000000131019f00000fcb011001c73dda3dd50000040f000000600310027000000f7803300197000000200030008c000000200400003900000000040340190000001f0640018f00000020074001900000000705700029000018b00000613d000000000801034f0000000709000029000000008a08043c0000000009a90436000000000059004b000018ac0000c13d000000000006004b000018bd0000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f00030000000103550000000100200190000019500000613d0000001f01400039000000600110018f000000070110002900000fd10010009c000018e50000a13d0000102701000041000000000010043f0000004101000039000000040010043f00000fcb0100004100003ddc000104300000001f0530018f00000f7a06300198000000400200043d000000000462001900001a2a0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000018d30000c13d00001a2a0000013d00000f78033001970000001f0530018f00000f7a06300198000000400200043d000000000462001900001a2a0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000018e00000c13d00001a2a0000013d000000400010043f000000200030008c000017520000413d00000007010000290000000001010433000900000001001d00000f7b0010009c000017520000213d0000000201000039000000000101041a000800000001001d00000fcc01000041000000000010044300000009010000290000000400100443000000000100041400000f780010009c00000f7801008041000000c00110021000000fcd011001c700008002020000393dda3dd50000040f0000000100200190000023c30000613d000000000101043b000000000001004b000017520000613d000000400300043d000000640130003900000000020004110000000000210435000000440130003900000ffa02000041000000000021043500000fe80100004100000000001304350000000401300039000600000001001d00000008020000290000000000210435000700000003001d0000002401300039000000000001043500000000010004140000000902000029000000040020008c000019240000613d000000070200002900000f780020009c00000f7802008041000000400220021000000f780010009c00000f7801008041000000c001100210000000000121019f00000fd0011001c700000009020000293dda3dd00000040f000000600310027000010f780030019d0003000000010355000000010020019000001b560000613d000000070100002900000fd10010009c000018c60000213d0000000703000029000000400030043f0000000101000039000000000201041a00000fc901000041000000000013043500000fca01000041000000060300002900000000001304350000000001000414000000080220027000000f7b02200197000000040020008c00001b630000c13d0000000103000031000000200030008c0000002004000039000000000403401900001b8d0000013d0000000a0000006b000019690000c13d00000fe1010000410000000702000029000000000012043500000020010000390000000403000029000000000013043500000024010000390000000503000029000000000013043500000fea010000410000000303000029000000000013043500000feb010000410000000203000029000000000013043500000f780020009c00000f7802008041000000400120021000000fd0011001c700003ddc000104300000001f0530018f00000f7a06300198000000400200043d000000000462001900001a2a0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000019570000c13d00001a2a0000013d00000f78033001970000001f0530018f00000f7a06300198000000400200043d000000000462001900001a2a0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000019640000c13d00001a2a0000013d000000090000006b00001a090000c13d00000fe1010000410000000702000029000000000012043500000020010000390000000403000029000000000013043500000013010000390000000503000029000000000013043500000fe9010000410000000303000029000000000013043500000f780020009c00000f7802008041000000400120021000000fd9011001c700003ddc00010430000000070300002900000f780030009c00000f7803008041000000400330021000000f780010009c00000f7801008041000000c001100210000000000131019f00000fcb011001c73dda3dd50000040f000000600310027000000f7803300197000000200030008c000000200400003900000000040340190000001f0640018f00000020074001900000000705700029000019950000613d000000000801034f0000000709000029000000008a08043c0000000009a90436000000000059004b000019910000c13d000000000006004b000019a20000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f0003000000010355000000010020019000001a1f0000613d0000001f01400039000000600110018f000000070110002900000fd10010009c000018c60000213d000000400010043f000000200030008c000017520000413d00000007010000290000000001010433000900000001001d00000f7b0010009c000017520000213d0000000201000039000000000101041a000800000001001d00000fcc01000041000000000010044300000009010000290000000400100443000000000100041400000f780010009c00000f7801008041000000c00110021000000fcd011001c700008002020000393dda3dd50000040f0000000100200190000023c30000613d000000000101043b000000000001004b000017520000613d000000400300043d00000044013000390000100502000041000000000021043500000024013000390000000b02000029000000000021043500000fdd0100004100000000001304350000000401300039000600000001001d0000000802000029000000000021043500000064010000390000000201100367000000000101043b000700000003001d0000006402300039000000000012043500000000010004140000000902000029000000040020008c000019ed0000613d000000070200002900000f780020009c00000f7802008041000000400220021000000f780010009c00000f7801008041000000c001100210000000000121019f00000fd0011001c700000009020000293dda3dd00000040f000000600310027000010f780030019d0003000000010355000000010020019000001be20000613d000000070100002900000fd10010009c000018c60000213d0000000703000029000000400030043f0000000101000039000000000201041a00000fc901000041000000000013043500000fca01000041000000060300002900000000001304350000000001000414000000080220027000000f7b02200197000000040020008c00001c010000c13d0000000103000031000000200030008c0000002004000039000000000403401900001c2b0000013d00000044021000390000101003000041000000000032043500000024021000390000001603000039000014220000013d000000080100002900080f7b0010019c00001a440000c13d000600120000003d0000000101000039000000000201041a00000fc9010000410000000703000029000000000013043500000fca01000041000000040300002900000000001304350000000001000414000000080220027000000f7b02200197000000040020008c00001a570000c13d0000000103000031000000200030008c0000002004000039000000000403401900001a820000013d0000001f0530018f00000f7a06300198000000400200043d000000000462001900001a2a0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00001a260000c13d000000000005004b00001a370000613d000000000161034f0000000305500210000000000604043300000000065601cf000000000656022f000000000101043b0000010005500089000000000151022f00000000015101cf000000000161019f0000000000140435000000600130021000000f780020009c00000f78020080410000004002200210000000000112019f00003ddc00010430000000400100043d00000044021000390000101103000041000000000032043500000024021000390000000e03000039000014220000013d00000fde010000410000000702000029000000000012043500000000010004140000000802000029000000040020008c00001ae20000c13d0000000103000031000000200030008c0000002004000039000000000403401900001b0d0000013d000000060300002900000044013000390000101202000041000000000021043500000024013000390000001f020000390000177e0000013d0000000703000029000700000003001d00000f780030009c00000f7803008041000000400330021000000f780010009c00000f7801008041000000c001100210000000000131019f00000fcb011001c73dda3dd50000040f000000600310027000000f7803300197000000200030008c000000200400003900000000040340190000001f0640018f0000002007400190000000070570002900001a710000613d000000000801034f0000000709000029000000008a08043c0000000009a90436000000000059004b00001a6d0000c13d000000000006004b00001a7e0000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f0003000000010355000000010020019000001b3e0000613d0000001f01400039000000600210018f0000000701200029000000000021004b0000000002000039000000010200403900000fd10010009c000018c60000213d0000000100200190000018c60000c13d000000400010043f000000200030008c000017520000413d00000007010000290000000001010433000700000001001d00000f7b0010009c000017520000213d0000000201000039000000000101041a000500000001001d00000fcc01000041000000000010044300000007010000290000000400100443000000000100041400000f780010009c00000f7801008041000000c00110021000000fcd011001c700008002020000393dda3dd50000040f0000000100200190000023c30000613d000000000101043b000000000001004b000017520000613d000000400300043d000000640130003900000009020000290000000000210435000000440130003900000fe402000041000000000021043500000024013000390000000102000029000000000021043500000fdd010000410000000000130435000400000003001d0000000401300039000900000001001d0000000502000029000000000021043500000000010004140000000702000029000000040020008c00001acc0000613d000000040200002900000f780020009c00000f7802008041000000400220021000000f780010009c00000f7801008041000000c001100210000000000121019f00000fd0011001c700000007020000293dda3dd00000040f000000600310027000010f780030019d0003000000010355000000010020019000001d290000613d000000040100002900000fd10010009c000018c60000213d0000000403000029000000400030043f0000000101000039000000000201041a00000fc901000041000000000013043500000fca01000041000000090300002900000000001304350000000001000414000000080220027000000f7b02200197000000040020008c00001d360000c13d0000000103000031000000200030008c0000002004000039000000000403401900001d600000013d000000070200002900000f780020009c00000f7802008041000000400220021000000f780010009c00000f7801008041000000c001100210000000000121019f00000fdf011001c700000008020000293dda3dd50000040f000000600310027000000f7803300197000000200030008c000000200400003900000000040340190000001f0640018f0000002007400190000000070570002900001afc0000613d000000000801034f0000000709000029000000008a08043c0000000009a90436000000000059004b00001af80000c13d000000000006004b00001b090000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f0003000000010355000000010020019000001b4a0000613d0000001f01400039000000600110018f000000070110002900000fd10010009c000018c60000213d000000400010043f000000200030008c000017520000413d00000007020000290000000002020433000600000002001d000000ff0020008c000017520000213d00000006020000290000004d0020008c000021e00000213d000000060000006b000000010500003900001b290000613d0000000a030000390000000602000029000000010020019000000000043300a9000000010300603900000000055300a90000000102200272000000000304001900001b220000c13d0000000a025000b90000000a032000fa000000000053004b000021e00000c13d000400040010003d00000fe00020009c00001d1a0000813d00000fe1020000410000000000210435000000200200003900000004030000290000000000230435000000640210003900000fe2030000410000000000320435000000440210003900000fe303000041000000000032043500000024021000390000002a030000390000076f0000013d0000001f0530018f00000f7a06300198000000400200043d000000000462001900001a2a0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00001b450000c13d00001a2a0000013d0000001f0530018f00000f7a06300198000000400200043d000000000462001900001a2a0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00001b510000c13d00001a2a0000013d00000f78033001970000001f0530018f00000f7a06300198000000400200043d000000000462001900001a2a0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00001b5e0000c13d00001a2a0000013d000000070300002900000f780030009c00000f7803008041000000400330021000000f780010009c00000f7801008041000000c001100210000000000131019f00000fcb011001c73dda3dd50000040f000000600310027000000f7803300197000000200030008c000000200400003900000000040340190000001f0640018f0000002007400190000000070570002900001b7c0000613d000000000801034f0000000709000029000000008a08043c0000000009a90436000000000059004b00001b780000c13d000000000006004b00001b890000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f0003000000010355000000010020019000001bd60000613d0000001f01400039000000600110018f000000070110002900000fd10010009c000018c60000213d000000400010043f000000200030008c000017520000413d00000007010000290000000001010433000900000001001d00000f7b0010009c000017520000213d0000000201000039000000000101041a000800000001001d00000fcc01000041000000000010044300000009010000290000000400100443000000000100041400000f780010009c00000f7801008041000000c00110021000000fcd011001c700008002020000393dda3dd50000040f0000000100200190000023c30000613d000000000101043b000000000001004b000017520000613d000000400300043d000000640130003900000080020000390000000000210435000000440130003900001000020000410000000000210435000010010100004100000000001304350000000401300039000600000001001d00000008020000290000000000210435000000240130003900000000000104350000000b0100002900000000010104330000008402300039000000000012043500001036051001970000001f0410018f000700000003001d000000a4033000390000000a0030006b00001dbb0000813d000000000005004b00001bd20000613d0000000a074000290000000006430019000000200660008a000000200770008a0000000008560019000000000957001900000000090904330000000000980435000000200550008c00001bcc0000c13d000000000004004b00001dd20000613d000000000603001900001dc70000013d0000001f0530018f00000f7a06300198000000400200043d000000000462001900001a2a0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00001bdd0000c13d00001a2a0000013d00000f78033001970000001f0530018f00000f7a06300198000000400200043d000000000462001900001a2a0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00001bea0000c13d00001a2a0000013d0000000901000029000000000012043500000fc901000041000000400200043d0000000000120435000400000002001d00000004012000390000101402000041000000000021043500000000010004140000000702000029000000040020008c00001c880000c13d0000000103000031000000200030008c0000002004000039000000000403401900001cb30000013d000000070300002900000f780030009c00000f7803008041000000400330021000000f780010009c00000f7801008041000000c001100210000000000131019f00000fcb011001c73dda3dd50000040f000000600310027000000f7803300197000000200030008c000000200400003900000000040340190000001f0640018f0000002007400190000000070570002900001c1a0000613d000000000801034f0000000709000029000000008a08043c0000000009a90436000000000059004b00001c160000c13d000000000006004b00001c270000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f0003000000010355000000010020019000001d0e0000613d0000001f01400039000000600110018f000000070110002900000fd10010009c000018c60000213d000000400010043f000000200030008c000017520000413d00000007010000290000000001010433000900000001001d00000f7b0010009c000017520000213d0000000201000039000000000101041a000800000001001d00000fcc01000041000000000010044300000009010000290000000400100443000000000100041400000f780010009c00000f7801008041000000c00110021000000fcd011001c700008002020000393dda3dd50000040f0000000100200190000023c30000613d000000000101043b000000000001004b000017520000613d000000400300043d00000044013000390000100602000041000000000021043500000024013000390000000b02000029000000000021043500000fdd0100004100000000001304350000000401300039000600000001001d0000000802000029000000000021043500000084010000390000000201100367000000000101043b000700000003001d0000006402300039000000000012043500000000010004140000000902000029000000040020008c00001c720000613d000000070200002900000f780020009c00000f7802008041000000400220021000000f780010009c00000f7801008041000000c001100210000000000121019f00000fd0011001c700000009020000293dda3dd00000040f000000600310027000010f780030019d0003000000010355000000010020019000001f260000613d000000070100002900000fd10010009c000018c60000213d0000000703000029000000400030043f0000000101000039000000000201041a00000fc901000041000000000013043500000fca01000041000000060300002900000000001304350000000001000414000000080220027000000f7b02200197000000040020008c00001f330000c13d0000000103000031000000200030008c0000002004000039000000000403401900001f5d0000013d000000040200002900000f780020009c00000f7802008041000000400220021000000f780010009c00000f7801008041000000c001100210000000000121019f00000fcb011001c700000007020000293dda3dd50000040f000000600310027000000f7803300197000000200030008c000000200400003900000000040340190000001f0640018f0000002007400190000000040570002900001ca20000613d000000000801034f0000000409000029000000008a08043c0000000009a90436000000000059004b00001c9e0000c13d000000000006004b00001caf0000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f0003000000010355000000010020019000001d1d0000613d0000001f01400039000000600110018f0000000404100029000000000014004b00000000020000390000000102004039000700000004001d00000fd10040009c000018c60000213d0000000100200190000018c60000c13d0000000702000029000000400020043f000000200030008c000017520000413d0000000402000029000000000202043300000f7b0020009c000017520000213d00000007070000290000002405700039000000a00400003900000000004504350000101505000041000000000057043500000004057000390000000006000411000000000065043500000006050000290000000006050433000000a4057000390000000000650435000000c405700039000000000006004b00001cde0000613d000000000700001900000006090000290000002009900039000000000809043300000000058504360000000107700039000000000067004b00001cd80000413d00000007070000290000000006750049000000040660008a00000044077000390000000000670435000000050600002900000000060604330000000005650436000000000006004b00001cf00000613d000000000700001900000005090000290000002009900039000000000809043300000000058504360000000107700039000000000067004b00001cea0000413d00000007080000290000006406800039000000080700002900000000007604350000000006850049000000040660008a00000084078000390000000000670435000000800600043d000000000565043600001036086001970000001f0760018f000000a10050008c00001e100000413d000000000008004b00001d090000613d000000000975001900000080047001bf000000200990008a000000000a890019000000000b840019000000000b0b04330000000000ba0435000000200880008c00001d030000c13d000000000007004b00001e250000613d000000a004000039000000000905001900001e1b0000013d0000001f0530018f00000f7a06300198000000400200043d000000000462001900001a2a0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00001d150000c13d00001a2a0000013d000a0fe000200132000700000001001d00001a0d0000013d0000001f0530018f00000f7a06300198000000400200043d000000000462001900001a2a0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00001d240000c13d00001a2a0000013d00000f78033001970000001f0530018f00000f7a06300198000000400200043d000000000462001900001a2a0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00001d310000c13d00001a2a0000013d000000040300002900000f780030009c00000f7803008041000000400330021000000f780010009c00000f7801008041000000c001100210000000000131019f00000fcb011001c73dda3dd50000040f000000600310027000000f7803300197000000200030008c000000200400003900000000040340190000001f0640018f0000002007400190000000040570002900001d4f0000613d000000000801034f0000000409000029000000008a08043c0000000009a90436000000000059004b00001d4b0000c13d000000000006004b00001d5c0000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f0003000000010355000000010020019000001e040000613d0000001f01400039000000600110018f000000040110002900000fd10010009c000018c60000213d000000400010043f000000200030008c000017520000413d00000004010000290000000001010433000900000001001d00000f7b0010009c000017520000213d0000000201000039000000000101041a000700000001001d00000fcc01000041000000000010044300000009010000290000000400100443000000000100041400000f780010009c00000f7801008041000000c00110021000000fcd011001c700008002020000393dda3dd50000040f0000000100200190000023c30000613d000000000101043b000000000001004b000017520000613d000000400300043d00000064013000390000000b020000290000000000210435000000440130003900000fe502000041000000000021043500000024013000390000000102000029000000000021043500000fdd010000410000000000130435000500000003001d0000000401300039000b00000001001d0000000702000029000000000021043500000000010004140000000902000029000000040020008c00001da50000613d000000050200002900000f780020009c00000f7802008041000000400220021000000f780010009c00000f7801008041000000c001100210000000000121019f00000fd0011001c700000009020000293dda3dd00000040f000000600310027000010f780030019d000300000001035500000001002001900000205d0000613d000000050100002900000fd10010009c000018c60000213d0000000503000029000000400030043f0000000101000039000000000201041a00000fc901000041000000000013043500000fca010000410000000b0300002900000000001304350000000001000414000000080220027000000f7b02200197000000040020008c0000206a0000c13d0000000103000031000000200030008c00000020040000390000000004034019000020940000013d0000000006530019000000000005004b00001dc40000613d0000000a07000029000000000803001900000000790704340000000008980436000000000068004b00001dc00000c13d000000000004004b00001dd20000613d000a000a0050002d0000000304400210000000000506043300000000054501cf000000000545022f0000000a0700002900000000070704330000010004400089000000000747022f00000000044701cf000000000454019f00000000004604350000000003310019000000000003043500000000030004140000000904000029000000040040008c00001dee0000613d0000001f011000390000103601100197000000a40110003900000f780010009c00000f78010080410000006001100210000000070200002900000f780020009c00000f78020080410000004002200210000000000121019f00000f780030009c00000f7803008041000000c002300210000000000112019f00000009020000293dda3dd00000040f000000600310027000010f780030019d0003000000010355000000010020019000001e880000613d000000070100002900000fd10010009c000018c60000213d0000000703000029000000400030043f0000000101000039000000000201041a00000fc901000041000000000013043500000fca01000041000000060300002900000000001304350000000001000414000000080220027000000f7b02200197000000040020008c00001e950000c13d0000000103000031000000200030008c0000002004000039000000000403401900001ebf0000013d0000001f0530018f00000f7a06300198000000400200043d000000000462001900001a2a0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00001e0b0000c13d00001a2a0000013d0000000009850019000000000008004b00001e180000613d000000000a050019000000004b040434000000000aba043600000000009a004b00001e140000c13d000000000007004b00001e250000613d000000a0048000390000000307700210000000000809043300000000087801cf000000000878022f00000000040404330000010007700089000000000474022f00000000047401cf000000000484019f000000000049043500000000045600190000000000040435000000000400041400000f7b02200197000000040020008c00001e5f0000613d0000001f01600039000010360110019700000007060000290000000003650049000000000113001900000f780010009c00000f7801008041000000600110021000000f780060009c00000f780300004100000000030640190000004003300210000000000131019f00000f780040009c00000f7804008041000000c003400210000000000113019f3dda3dd00000040f000000600310027000000f7803300197000000200030008c000000200400003900000000040340190000001f0640018f0000002007400190000000070570002900001e4c0000613d000000000801034f0000000709000029000000008a08043c0000000009a90436000000000059004b00001e480000c13d000000000006004b00001e590000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f0003000000010355000000010020019000001f0e0000613d0000001f01400039000000600110018f0000000702100029000000000012004b0000000001000039000000010100403900000fd10020009c000018c60000213d0000000100100190000018c60000c13d000000400020043f000000200030008c000017520000413d00000007010000290000000001010433000000000001004b0000000002000039000000010200c039000000000021004b000017520000c13d0000000b010000293dda24f00000040f000000000001004b000020410000c13d0000000101000039000000000201041a000000400300043d00000fc9010000410000000000130435000700000003001d0000000401300039000010160300004100000000003104350000000001000414000000080220027000000f7b02200197000000040020008c00001fba0000c13d0000000103000031000000200030008c0000002004000039000000000403401900001fe40000013d00000f78033001970000001f0530018f00000f7a06300198000000400200043d000000000462001900001a2a0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00001e900000c13d00001a2a0000013d000000070300002900000f780030009c00000f7803008041000000400330021000000f780010009c00000f7801008041000000c001100210000000000131019f00000fcb011001c73dda3dd50000040f000000600310027000000f7803300197000000200030008c000000200400003900000000040340190000001f0640018f0000002007400190000000070570002900001eae0000613d000000000801034f0000000709000029000000008a08043c0000000009a90436000000000059004b00001eaa0000c13d000000000006004b00001ebb0000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f0003000000010355000000010020019000001f1a0000613d0000001f01400039000000600110018f000000070110002900000fd10010009c000018c60000213d000000400010043f000000200030008c000017520000413d00000007010000290000000001010433000b00000001001d00000f7b0010009c000017520000213d0000000201000039000000000101041a000a00000001001d00000fcc0100004100000000001004430000000b010000290000000400100443000000000100041400000f780010009c00000f7801008041000000c00110021000000fcd011001c700008002020000393dda3dd50000040f0000000100200190000023c30000613d000000000101043b000000000001004b000017520000613d000000400300043d000000640130003900000f7e02000041000000000021043500000044013000390000100202000041000000000021043500000fdd01000041000000000013043500000004013000390000000a020000290000000000210435000a00000003001d0000002401300039000000000001043500000000010004140000000b02000029000000040020008c00001f020000613d0000000a0200002900000f780020009c00000f7802008041000000400220021000000f780010009c00000f7801008041000000c001100210000000000121019f00000fd0011001c70000000b020000293dda3dd00000040f000000600310027000010f780030019d000300000001035500000001002001900000213c0000613d0000000a0100002900000fd10010009c000018c60000213d0000000a01000029000000400010043f0000000303000039000000000103041a000010370110019700000001011001bf000000000013041b000000000100001900003ddb0001042e0000001f0530018f00000f7a06300198000000400200043d000000000462001900001a2a0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00001f150000c13d00001a2a0000013d0000001f0530018f00000f7a06300198000000400200043d000000000462001900001a2a0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00001f210000c13d00001a2a0000013d00000f78033001970000001f0530018f00000f7a06300198000000400200043d000000000462001900001a2a0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00001f2e0000c13d00001a2a0000013d000000070300002900000f780030009c00000f7803008041000000400330021000000f780010009c00000f7801008041000000c001100210000000000131019f00000fcb011001c73dda3dd50000040f000000600310027000000f7803300197000000200030008c000000200400003900000000040340190000001f0640018f0000002007400190000000070570002900001f4c0000613d000000000801034f0000000709000029000000008a08043c0000000009a90436000000000059004b00001f480000c13d000000000006004b00001f590000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f0003000000010355000000010020019000001fae0000613d0000001f01400039000000600110018f000000070110002900000fd10010009c000018c60000213d000000400010043f000000200030008c000017520000413d00000007010000290000000001010433000900000001001d00000f7b0010009c000017520000213d0000000201000039000000000101041a000800000001001d00000fcc01000041000000000010044300000009010000290000000400100443000000000100041400000f780010009c00000f7801008041000000c00110021000000fcd011001c700008002020000393dda3dd50000040f0000000100200190000023c30000613d000000000101043b000000000001004b000017520000613d000000400300043d00000064013000390000000a02000029000000000021043500000044013000390000100702000041000000000021043500000024013000390000000b02000029000000000021043500000fce010000410000000000130435000b00000003001d00000004013000390000000802000029000000000021043500000000010004140000000902000029000000040020008c00000f570000613d0000000b0200002900000f780020009c00000f7802008041000000400220021000000f780010009c00000f7801008041000000c001100210000000000121019f00000fd0011001c700000009020000293dda3dd00000040f000000600310027000010f780030019d0003000000010355000000010020019000000f570000c13d00000f78033001970000001f0530018f00000f7a06300198000000400200043d000000000462001900001a2a0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00001fa90000c13d00001a2a0000013d0000001f0530018f00000f7a06300198000000400200043d000000000462001900001a2a0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00001fb50000c13d00001a2a0000013d000000070300002900000f780030009c00000f7803008041000000400330021000000f780010009c00000f7801008041000000c001100210000000000131019f00000fcb011001c73dda3dd50000040f000000600310027000000f7803300197000000200030008c000000200400003900000000040340190000001f0640018f0000002007400190000000070570002900001fd30000613d000000000801034f0000000709000029000000008a08043c0000000009a90436000000000059004b00001fcf0000c13d000000000006004b00001fe00000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f00030000000103550000000100200190000021000000613d0000001f01400039000000600110018f0000000704100029000000000014004b00000000020000390000000102004039000600000004001d00000fd10040009c000018c60000213d0000000100200190000018c60000c13d0000000602000029000000400020043f000000200030008c000017520000413d0000000702000029000000000202043300000f7b0020009c000017520000213d0000101704000041000000060500002900000000004504350000000404500039000000000500041100000000005404350000000004000414000000040020008c0000202c0000613d000000060100002900000f780010009c00000f7801008041000000400110021000000f780040009c00000f7804008041000000c003400210000000000113019f00000fcb011001c73dda3dd50000040f000000600310027000000f7803300197000000200030008c000000200400003900000000040340190000001f0640018f00000020074001900000000605700029000020190000613d000000000801034f0000000609000029000000008a08043c0000000009a90436000000000059004b000020150000c13d000000000006004b000020260000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f00030000000103550000000100200190000021530000613d0000001f01400039000000600110018f000000060110002900000fd10010009c000018c60000213d000000400010043f000000200030008c000017520000413d00000006020000290000000002020433000000000002004b0000000003000039000000010300c039000000000032004b000017520000c13d000000000002004b000020410000c13d00000044021000390000102c03000041000000000032043500000024021000390000001403000039000014220000013d0000000b010000293dda33840000040f000700000004001d0000000a0010006c000020530000c13d000000000002004b000020f40000c13d000000400100043d00000044021000390000102b03000041000000000032043500000fe10200004100000000002104350000002402100039000000200300003900000000003204350000000402100039000014270000013d000000400100043d000000640210003900001018030000410000000000320435000000440210003900001019030000410000000000320435000000240210003900000026030000390000076a0000013d00000f78033001970000001f0530018f00000f7a06300198000000400200043d000000000462001900001a2a0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000020650000c13d00001a2a0000013d000000050300002900000f780030009c00000f7803008041000000400330021000000f780010009c00000f7801008041000000c001100210000000000131019f00000fcb011001c73dda3dd50000040f000000600310027000000f7803300197000000200030008c000000200400003900000000040340190000001f0640018f00000020074001900000000505700029000020830000613d000000000801034f0000000509000029000000008a08043c0000000009a90436000000000059004b0000207f0000c13d000000000006004b000020900000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f000300000001035500000001002001900000210c0000613d0000001f01400039000000600110018f000000050110002900000fd10010009c000018c60000213d000000400010043f000000200030008c000017520000413d00000005010000290000000001010433000b00000001001d00000f7b0010009c000017520000213d0000000201000039000000000101041a000900000001001d00000fcc0100004100000000001004430000000b010000290000000400100443000000000100041400000f780010009c00000f7801008041000000c00110021000000fcd011001c700008002020000393dda3dd50000040f0000000100200190000023c30000613d000000000101043b000000000001004b000017520000613d000000400300043d00000064013000390000000a020000290000000000210435000000440130003900000fe602000041000000000021043500000024013000390000000102000029000000000021043500000fdd010000410000000000130435000a00000003001d00000004013000390000000902000029000000000021043500000000010004140000000b02000029000000040020008c000020d80000613d0000000a0200002900000f780020009c00000f7802008041000000400220021000000f780010009c00000f7801008041000000c001100210000000000121019f00000fd0011001c70000000b020000293dda3dd00000040f000000600310027000010f780030019d00030000000103550000000100200190000021ed0000613d0000000a0100002900000fd10010009c000018c60000213d0000000a01000029000000400010043f0000000601000029000000ff0210018f00000001010000293dda3a2b0000040f0000000101000039000000000201041a000000400300043d00000fc9010000410000000000130435000b00000003001d000000040130003900000fca0300004100000000003104350000000001000414000000080220027000000f7b02200197000000040020008c000022010000c13d0000000103000031000000200030008c000000200400003900000000040340190000222b0000013d000000090000006b000021180000c13d000000400100043d00000064021000390000102903000041000000000032043500000044021000390000102a030000410000000000320435000000240210003900000022030000390000076a0000013d0000001f0530018f00000f7a06300198000000400200043d000000000462001900001a2a0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000021070000c13d00001a2a0000013d0000001f0530018f00000f7a06300198000000400200043d000000000462001900001a2a0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000021130000c13d00001a2a0000013d000a000910200101000000000001004b000021490000c13d0006000a003000bd000000090020006c000021220000213d0000000a0200002900000006012000f9000000000031004b000021e00000c13d0000000b0100002900000000020004113dda28f60000040f00000ff0020000410000000000200443000900000001001d000000000100041400000f780010009c00000f7801008041000000c0011002100000101c011001c70000800b020000393dda3dd50000040f0000000100200190000023c30000613d000000000101043b000500000001001d000000090010006c0000215f0000813d000000400100043d00000044021000390000102803000041000000000032043500000024021000390000001503000039000014220000013d00000f78033001970000001f0530018f00000f7a06300198000000400200043d000000000462001900001a2a0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000021440000c13d00001a2a0000013d000000400100043d00000064021000390000101a03000041000000000032043500000044021000390000101b030000410000000000320435000000240210003900000035030000390000076a0000013d0000001f0530018f00000f7a06300198000000400200043d000000000462001900001a2a0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b0000215a0000c13d00001a2a0000013d0000000b0100002900000000020004110000000a030000293dda2b130000040f000000000001004b000021e60000c13d0000000b010000290000000a020000293dda277b0000040f000000000001004b000021fa0000c13d0000000b010000290000000a020000293dda26ac0000040f000000400200043d000000000001004b0000228b0000c13d000000000100041100000060011002100000004b0320003900000000001304350000002001200039000010220300004100000000003104350000002b032000390000000b0400002900000000004304350000003f030000390000000000320435000010230020009c000018c60000213d0000006003200039000000400030043f00000f780010009c00000f78010080410000004001100210000000000202043300000f780020009c00000f78020080410000006002200210000000000112019f000000000200041400000f780020009c00000f7802008041000000c002200210000000000112019f0000100b011001c700008010020000393dda3dd50000040f0000000100200190000017520000613d000000000101043b000900000001001d3dda30200000040f0000000a0010002a000021e00000413d0000000a0210002900000009010000293dda396a0000040f000000090100002900000005020000293dda38a90000040f000000090100002900000000020004113dda3cf60000040f0000000b010000293dda30200000040f0000000a0010002a000021e00000413d0000000a021000290000000b010000293dda396a0000040f000000400100043d0000004e021000390000000b030000290000000000320435000000200210003900000fd50300004100000000003204350000002e03100039000000080400002900000000004304350000004e0300003900000000003104350000100d0010009c000018c60000213d0000008003100039000000400030043f00000f780020009c00000f78020080410000004002200210000000000101043300000f780010009c00000f78010080410000006001100210000000000121019f000000000200041400000f780020009c00000f7802008041000000c002200210000000000112019f0000100b011001c700008010020000393dda3dd50000040f0000000100200190000017520000613d000000000101043b000400000001001d00000000020004113dda3cf60000040f0000000101000039000000000201041a000000400300043d00000fc9010000410000000000130435000900000003001d000000040130003900000fca0300004100000000003104350000000001000414000000080220027000000f7b02200197000000040020008c0000229a0000c13d0000000103000031000000200030008c00000020040000390000000004034019000022c40000013d0000102701000041000000000010043f0000001101000039000000040010043f00000fcb0100004100003ddc00010430000000400100043d00000064021000390000101d03000041000000000032043500000044021000390000101e03000041000020fc0000013d00000f78033001970000001f0530018f00000f7a06300198000000400200043d000000000462001900001a2a0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000021f50000c13d00001a2a0000013d000000400100043d00000044021000390000101f03000041000000000032043500000024021000390000001d03000039000014220000013d0000000b0300002900000f780030009c00000f7803008041000000400330021000000f780010009c00000f7801008041000000c001100210000000000131019f00000fcb011001c73dda3dd50000040f000000600310027000000f7803300197000000200030008c000000200400003900000000040340190000001f0640018f00000020074001900000000b057000290000221a0000613d000000000801034f0000000b09000029000000008a08043c0000000009a90436000000000059004b000022160000c13d000000000006004b000022270000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f00030000000103550000000100200190000023350000613d0000001f01400039000000600210018f0000000b01200029000000000021004b0000000002000039000000010200403900000fd10010009c000018c60000213d0000000100200190000018c60000c13d000000400010043f000000200030008c000017520000413d0000000b010000290000000001010433000a00000001001d00000f7b0010009c000017520000213d0000000201000039000000000101041a000700000001001d00000fcc0100004100000000001004430000000a010000290000000400100443000000000100041400000f780010009c00000f7801008041000000c00110021000000fcd011001c700008002020000393dda3dd50000040f0000000100200190000023c30000613d000000000101043b000000000001004b000017520000613d000000400300043d000000640130003900000008020000290000000000210435000000440130003900000fe702000041000000000021043500000024013000390000000102000029000000000021043500000fe8010000410000000000130435000b00000003001d0000000401300039000900000001001d0000000702000029000000000021043500000000010004140000000a02000029000000040020008c000022750000613d0000000b0200002900000f780020009c00000f7802008041000000400220021000000f780010009c00000f7801008041000000c001100210000000000121019f00000fd0011001c70000000a020000293dda3dd00000040f000000600310027000010f780030019d00030000000103550000000100200190000023410000613d0000000b0100002900000fd10010009c000018c60000213d0000000b03000029000000400030043f0000000101000039000000000201041a00000fc901000041000000000013043500000fca01000041000000090300002900000000001304350000000001000414000000080220027000000f7b02200197000000040020008c0000234e0000c13d0000000103000031000000200030008c00000020040000390000000004034019000023780000013d00000064012000390000102003000041000000000031043500000044012000390000102103000041000000000031043500000024012000390000002703000039000000000031043500000fe10100004100000000001204350000000401200039000000200300003900000000003104350000194b0000013d000000090300002900000f780030009c00000f7803008041000000400330021000000f780010009c00000f7801008041000000c001100210000000000131019f00000fcb011001c73dda3dd50000040f000000600310027000000f7803300197000000200030008c000000200400003900000000040340190000001f0640018f00000020074001900000000905700029000022b30000613d000000000801034f0000000909000029000000008a08043c0000000009a90436000000000059004b000022af0000c13d000000000006004b000022c00000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f00030000000103550000000100200190000023c40000613d0000001f01400039000000600210018f0000000901200029000000000021004b0000000002000039000000010200403900000fd10010009c000018c60000213d0000000100200190000018c60000c13d000000400010043f000000200030008c000017520000413d00000009010000290000000001010433000900000001001d00000f7b0010009c000017520000213d0000000201000039000000000101041a000300000001001d00000fcc01000041000000000010044300000009010000290000000400100443000000000100041400000f780010009c00000f7801008041000000c00110021000000fcd011001c700008002020000393dda3dd50000040f0000000100200190000023c30000613d000000000101043b000000000001004b000017520000613d000000400300043d00000064013000390000000802000029000000000021043500000044013000390000100202000041000000000021043500000024013000390000000402000029000000000021043500000fdd010000410000000000130435000800000003001d00000004013000390000000302000029000000000021043500000000010004140000000902000029000000040020008c0000230d0000613d000000080200002900000f780020009c00000f7802008041000000400220021000000f780010009c00000f7801008041000000c001100210000000000121019f00000fd0011001c700000009020000293dda3dd00000040f000000600310027000010f780030019d00030000000103550000000100200190000023d00000613d000000080100002900000fd10010009c000018c60000213d0000000801000029000000400010043f00000004010000290000000b020000293dda3a2b0000040f000000040100002900000005020000293dda37e80000040f00000004010000290000000a020000293dda3aec0000040f0000000701000029000a0f7b0010019c000023dd0000c13d0000100a01000041000000000010044300000000010004100000000400100443000000000100041400000f780010009c00000f7801008041000000c00110021000000fcd011001c70000800a020000393dda3dd50000040f0000000100200190000023c30000613d000000000101043b000000060010006c000023ed0000813d000000400100043d00000044021000390000102603000041000000000032043500000024021000390000001803000039000014220000013d0000001f0530018f00000f7a06300198000000400200043d000000000462001900001a2a0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b0000233c0000c13d00001a2a0000013d00000f78033001970000001f0530018f00000f7a06300198000000400200043d000000000462001900001a2a0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000023490000c13d00001a2a0000013d0000000b0300002900000f780030009c00000f7803008041000000400330021000000f780010009c00000f7801008041000000c001100210000000000131019f00000fcb011001c73dda3dd50000040f000000600310027000000f7803300197000000200030008c000000200400003900000000040340190000001f0640018f00000020074001900000000b05700029000023670000613d000000000801034f0000000b09000029000000008a08043c0000000009a90436000000000059004b000023630000c13d000000000006004b000023740000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f00030000000103550000000100200190000023f40000613d0000001f01400039000000600110018f0000000b0110002900000fd10010009c000018c60000213d000000400010043f000000200030008c000017520000413d0000000b010000290000000001010433000b00000001001d00000f7b0010009c000017520000213d0000000201000039000000000101041a000900000001001d00000fcc0100004100000000001004430000000b010000290000000400100443000000000100041400000f780010009c00000f7801008041000000c00110021000000fcd011001c700008002020000393dda3dd50000040f0000000100200190000023c30000613d000000000101043b000000000001004b000017520000613d000000400300043d000000640130003900000001020000390000000000210435000000440130003900000fcf02000041000000000021043500000024013000390000000102000029000000000021043500000fce010000410000000000130435000a00000003001d00000004013000390000000902000029000000000021043500000000010004140000000b02000029000000040020008c000023bc0000613d0000000a0200002900000f780020009c00000f7802008041000000400220021000000f780010009c00000f7801008041000000c001100210000000000121019f00000fd0011001c70000000b020000293dda3dd00000040f000000600310027000010f780030019d00030000000103550000000100200190000024000000613d0000000a0100002900000fd10010009c000018c60000213d0000000a02000029000000400020043f0000000101000029000003b50000013d000000000001042f0000001f0530018f00000f7a06300198000000400200043d000000000462001900001a2a0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000023cb0000c13d00001a2a0000013d00000f78033001970000001f0530018f00000f7a06300198000000400200043d000000000462001900001a2a0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000023d80000c13d00001a2a0000013d000000400200043d00000ffb010000410000000000120435000b00000002001d00000004012000390000000002000410000000000021043500000000010004140000000a02000029000000040020008c0000240d0000c13d0000000103000031000000200030008c00000020040000390000000004034019000024380000013d00000000010004140000000002000411000000040020008c0000244f0000c13d00000001010000310000000102000039000024710000013d0000001f0530018f00000f7a06300198000000400200043d000000000462001900001a2a0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000023fb0000c13d00001a2a0000013d00000f78033001970000001f0530018f00000f7a06300198000000400200043d000000000462001900001a2a0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000024080000c13d00001a2a0000013d0000000b0200002900000f780020009c00000f7802008041000000400220021000000f780010009c00000f7801008041000000c001100210000000000121019f00000fcb011001c70000000a020000293dda3dd50000040f000000600310027000000f7803300197000000200030008c000000200400003900000000040340190000001f0640018f00000020074001900000000b05700029000024270000613d000000000801034f0000000b09000029000000008a08043c0000000009a90436000000000059004b000024230000c13d000000000006004b000024340000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f00030000000103550000000100200190000024560000613d0000001f01400039000000600210018f0000000b01200029000000000021004b0000000002000039000000010200403900000fd10010009c000018c60000213d0000000100200190000018c60000c13d000000400010043f000000200030008c000017520000413d0000000b020000290000000002020433000000060020006c000024620000813d00000044021000390000102403000041000000000032043500000024021000390000001a03000039000014220000013d00000f780010009c00000f7801008041000000c001100210000000060000006b000024670000c13d00000000020004110000246c0000013d0000001f0530018f00000f7a06300198000000400200043d000000000462001900001a2a0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b0000245d0000c13d00001a2a0000013d0000000a01000029000000000200041100000006030000293dda3bd80000040f0000249d0000013d0000100b011001c700008009020000390000000603000029000000000400041100000000050000193dda3dd00000040f0003000000010355000000600110027000010f780010019d00000f7801100197000000000001004b0000249b0000613d00000fd10010009c000018c60000213d0000001f0310003900001036033001970000003f033000390000103604300197000000400300043d0000000004430019000000000034004b0000000005000039000000010500403900000fd10040009c000018c60000213d0000000100500190000018c60000c13d000000400040043f000000000613043600001036031001980000001f0410018f000000000136001900000003050003670000248e0000613d000000000705034f000000007807043c0000000006860436000000000016004b0000248a0000c13d000000000004004b0000249b0000613d000000000335034f0000000304400210000000000501043300000000054501cf000000000545022f000000000303043b0000010004400089000000000343022f00000000034301cf000000000353019f00000000003104350000000100200190000024a10000613d0000000102000039000000000020041b000000400100043d000010ae0000013d000000400100043d000000440210003900001025030000410000141f0000013d00000ff30010009c000024af0000213d000000430010008c000024af0000a13d00000002020003670000000401200370000000000101043b0000002402200370000000000202043b000000000001042d000000000100001900003ddc000104300000000043010434000000000132043600001036063001970000001f0530018f000000000014004b000024c70000813d000000000006004b000024c30000613d00000000085400190000000007510019000000200770008a000000200880008a0000000009670019000000000a680019000000000a0a04330000000000a90435000000200660008c000024bd0000c13d000000000005004b000024dd0000613d0000000007010019000024d30000013d0000000007610019000000000006004b000024d00000613d00000000080400190000000009010019000000008a0804340000000009a90436000000000079004b000024cc0000c13d000000000005004b000024dd0000613d00000000046400190000000305500210000000000607043300000000065601cf000000000656022f00000000040404330000010005500089000000000454022f00000000045401cf000000000464019f0000000000470435000000000431001900000000000404350000001f0330003900001036023001970000000001210019000000000001042d000000000301001900000000040104330000000001420436000000000004004b000024ef0000613d00000000020000190000002003300039000000000503043300000000015104360000000102200039000000000042004b000024e90000413d000000000001042d00020000000000020000000102000039000000000202041a000000400c00043d00000fc90300004100000000003c04350000000404c0003900000fca0300004100000000003404350000000004000414000000080220027000000f7b02200197000000040020008c000025030000c13d0000000103000031000000200030008c00000020040000390000000004034019000025310000013d000100000001001d00000f7800c0009c00000f780300004100000000030c4019000000400330021000000f780040009c00000f7804008041000000c001400210000000000131019f00000fcb011001c700020000000c001d3dda3dd50000040f000000020c000029000000600310027000000f7803300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057c00190000251f0000613d000000000801034f00000000090c0019000000008a08043c0000000009a90436000000000059004b0000251b0000c13d000000000006004b0000252c0000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f00030000000103550000000100200190000025920000613d00000001010000290000001f02400039000000600720018f000000000bc7001900000000007b004b0000000002000039000000010200403900000fd100b0009c0000258c0000213d00000001002001900000258c0000c13d0000004000b0043f0000001f0030008c0000258a0000a13d00000000020c043300000f7b0020009c0000258a0000213d0000000204000039000000000404041a0000004405b00039000010070600004100000000006504350000002405b00039000000000015043500000ff80500004100000000005b04350000000405b0003900000000004504350000000004000414000000040020008c0000257d0000613d00000f7800b0009c00000f780100004100000000010b4019000000400110021000000f780040009c00000f7804008041000000c003400210000000000113019f00000fd9011001c700020000000b001d3dda3dd50000040f000000020b000029000000600310027000000f7803300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057b00190000256a0000613d000000000801034f00000000090b0019000000008a08043c0000000009a90436000000000059004b000025660000c13d000000000006004b000025770000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f00030000000103550000000100200190000025b00000613d0000001f01400039000000600710018f0000000001b7001900000fd10010009c0000258c0000213d000000400010043f000000200030008c0000258a0000413d00000000010b0433000000000001004b0000000002000039000000010200c039000000000021004b0000258a0000c13d000000000001042d000000000100001900003ddc000104300000102701000041000000000010043f0000004101000039000000040010043f00000fcb0100004100003ddc000104300000001f0530018f00000f7a06300198000000400200043d00000000046200190000259d0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000025990000c13d000000000005004b000025aa0000613d000000000161034f0000000305500210000000000604043300000000065601cf000000000656022f000000000101043b0000010005500089000000000151022f00000000015101cf000000000161019f0000000000140435000000600130021000000f780020009c00000f78020080410000004002200210000000000112019f00003ddc000104300000001f0530018f00000f7a06300198000000400200043d0000000004620019000025bb0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000025b70000c13d000000000005004b000025c80000613d000000000161034f0000000305500210000000000604043300000000065601cf000000000656022f000000000101043b0000010005500089000000000151022f00000000015101cf000000000161019f0000000000140435000000600130021000000f780020009c00000f78020080410000004002200210000000000121019f00003ddc0001043000020000000000020000000102000039000000000202041a000000400c00043d00000fc90300004100000000003c04350000000404c0003900000fca0300004100000000003404350000000004000414000000080220027000000f7b02200197000000040020008c000025e10000c13d0000000103000031000000200030008c000000200400003900000000040340190000260f0000013d000100000001001d00000f7800c0009c00000f780300004100000000030c4019000000400330021000000f780040009c00000f7804008041000000c001400210000000000131019f00000fcb011001c700020000000c001d3dda3dd50000040f000000020c000029000000600310027000000f7803300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057c0019000025fd0000613d000000000801034f00000000090c0019000000008a08043c0000000009a90436000000000059004b000025f90000c13d000000000006004b0000260a0000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f00030000000103550000000100200190000026700000613d00000001010000290000001f02400039000000600720018f000000000bc7001900000000007b004b0000000002000039000000010200403900000fd100b0009c0000266a0000213d00000001002001900000266a0000c13d0000004000b0043f0000001f0030008c000026680000a13d00000000020c043300000f7b0020009c000026680000213d0000000204000039000000000404041a0000004405b0003900000fcf0600004100000000006504350000002405b00039000000000015043500000ff80500004100000000005b04350000000405b0003900000000004504350000000004000414000000040020008c0000265b0000613d00000f7800b0009c00000f780100004100000000010b4019000000400110021000000f780040009c00000f7804008041000000c003400210000000000113019f00000fd9011001c700020000000b001d3dda3dd50000040f000000020b000029000000600310027000000f7803300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057b0019000026480000613d000000000801034f00000000090b0019000000008a08043c0000000009a90436000000000059004b000026440000c13d000000000006004b000026550000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f000300000001035500000001002001900000268e0000613d0000001f01400039000000600710018f0000000001b7001900000fd10010009c0000266a0000213d000000400010043f000000200030008c000026680000413d00000000010b0433000000000001004b0000000002000039000000010200c039000000000021004b000026680000c13d000000000001042d000000000100001900003ddc000104300000102701000041000000000010043f0000004101000039000000040010043f00000fcb0100004100003ddc000104300000001f0530018f00000f7a06300198000000400200043d00000000046200190000267b0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000026770000c13d000000000005004b000026880000613d000000000161034f0000000305500210000000000604043300000000065601cf000000000656022f000000000101043b0000010005500089000000000151022f00000000015101cf000000000161019f0000000000140435000000600130021000000f780020009c00000f78020080410000004002200210000000000112019f00003ddc000104300000001f0530018f00000f7a06300198000000400200043d0000000004620019000026990000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000026950000c13d000000000005004b000026a60000613d000000000161034f0000000305500210000000000604043300000000065601cf000000000656022f000000000101043b0000010005500089000000000151022f00000000015101cf000000000161019f0000000000140435000000600130021000000f780020009c00000f78020080410000004002200210000000000121019f00003ddc000104300003000000000002000300000002001d0000000102000039000000000202041a000000400c00043d00000fc90300004100000000003c04350000000404c0003900000fca0300004100000000003404350000000004000414000000080220027000000f7b02200197000000040020008c000026c00000c13d0000000103000031000000200030008c00000020040000390000000004034019000026ee0000013d000100000001001d00000f7800c0009c00000f780300004100000000030c4019000000400330021000000f780040009c00000f7804008041000000c001400210000000000131019f00000fcb011001c700020000000c001d3dda3dd50000040f000000020c000029000000600310027000000f7803300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057c0019000026dc0000613d000000000801034f00000000090c0019000000008a08043c0000000009a90436000000000059004b000026d80000c13d000000000006004b000026e90000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f00030000000103550000000100200190000027510000613d00000001010000290000001f02400039000000600720018f000000000bc7001900000000007b004b0000000002000039000000010200403900000fd100b0009c0000274b0000213d00000001002001900000274b0000c13d0000004000b0043f0000001f0030008c000027490000a13d00000000020c043300000f7b0020009c000027490000213d0000000204000039000000000404041a0000004405b00039000010380600004100000000006504350000002405b00039000000000015043500000fdb0500004100000000005b04350000000405b0003900000000004504350000000004000414000000040020008c0000273a0000613d00000f7800b0009c00000f780100004100000000010b4019000000400110021000000f780040009c00000f7804008041000000c003400210000000000113019f00000fd9011001c700020000000b001d3dda3dd50000040f000000020b000029000000600310027000000f7803300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057b0019000027270000613d000000000801034f00000000090b0019000000008a08043c0000000009a90436000000000059004b000027230000c13d000000000006004b000027340000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f000300000001035500000001002001900000275d0000613d0000001f01400039000000600710018f0000000001b7001900000fd10010009c0000274b0000213d000000400010043f000000200030008c000027490000413d00000000010b0433000000030010006c00000000020000390000000102004039000000000001004b0000000001000039000000010100c039000000000121016f000000000001042d000000000100001900003ddc000104300000102701000041000000000010043f0000004101000039000000040010043f00000fcb0100004100003ddc000104300000001f0530018f00000f7a06300198000000400200043d0000000004620019000027680000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000027580000c13d000027680000013d0000001f0530018f00000f7a06300198000000400200043d0000000004620019000027680000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000027640000c13d000000000005004b000027750000613d000000000161034f0000000305500210000000000604043300000000065601cf000000000656022f000000000101043b0000010005500089000000000151022f00000000015101cf000000000161019f0000000000140435000000600130021000000f780020009c00000f78020080410000004002200210000000000112019f00003ddc000104300004000000000002000300000002001d000400000001001d0000000101000039000000000201041a000000400c00043d00000fc90100004100000000001c04350000000401c0003900000fca0300004100000000003104350000000001000414000000080220027000000f7b02200197000000040020008c000027900000c13d0000000103000031000000200030008c00000020040000390000000004034019000027bc0000013d00000f7800c0009c00000f780300004100000000030c4019000000400330021000000f780010009c00000f7801008041000000c001100210000000000131019f00000fcb011001c700020000000c001d3dda3dd50000040f000000020c000029000000600310027000000f7803300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057c0019000027ab0000613d000000000801034f00000000090c0019000000008a08043c0000000009a90436000000000059004b000027a70000c13d000000000006004b000027b80000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f00030000000103550000000100200190000028ae0000613d0000001f01400039000000600110018f000000000bc1001900000000001b004b0000000002000039000000010200403900000fd100b0009c000028a80000213d0000000100200190000028a80000c13d0000004000b0043f0000001f0030008c000028a60000a13d00000000020c043300000f7b0020009c000028a60000213d0000000204000039000000000404041a0000004405b00039000010040600004100000000006504350000002405b000390000000406000029000000000065043500000fdb0500004100000000005b04350000000405b0003900000000004504350000000004000414000000040020008c000028090000613d00000f7800b0009c00000f780100004100000000010b4019000000400110021000000f780040009c00000f7804008041000000c003400210000000000113019f00000fd9011001c700020000000b001d3dda3dd50000040f000000020b000029000000600310027000000f7803300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057b0019000027f60000613d000000000801034f00000000090b0019000000008a08043c0000000009a90436000000000059004b000027f20000c13d000000000006004b000028030000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f00030000000103550000000100200190000028ba0000613d0000001f01400039000000600110018f000000000cb1001900000fd100c0009c000028a80000213d0000004000c0043f000000200030008c000028a60000413d00000000010b0433000000000001004b000028210000613d000200000001001d0000000101000039000000000201041a00000fc90100004100000000001c04350000000401c0003900000fca0400004100000000004104350000000001000414000000080220027000000f7b02200197000000040020008c000028230000c13d00000020040000390000284f0000013d0000000001000019000000000001042d00000f7800c0009c00000f780300004100000000030c4019000000400330021000000f780010009c00000f7801008041000000c001100210000000000131019f00000fcb011001c700010000000c001d3dda3dd50000040f000000010c000029000000600310027000000f7803300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057c00190000283e0000613d000000000801034f00000000090c0019000000008a08043c0000000009a90436000000000059004b0000283a0000c13d000000000006004b0000284b0000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f00030000000103550000000100200190000028c60000613d0000001f01400039000000600110018f000000000bc1001900000fd100b0009c000028a80000213d0000004000b0043f000000200030008c000028a60000413d00000000020c043300000f7b0020009c000028a60000213d0000000204000039000000000404041a0000004405b00039000010390600004100000000006504350000002405b000390000000406000029000000000065043500000fdb0500004100000000005b04350000000405b0003900000000004504350000000004000414000000040020008c000028970000613d00000f7800b0009c00000f780100004100000000010b4019000000400110021000000f780040009c00000f7804008041000000c003400210000000000113019f00000fd9011001c700040000000b001d3dda3dd50000040f000000040b000029000000600310027000000f7803300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057b0019000028840000613d000000000801034f00000000090b0019000000008a08043c0000000009a90436000000000059004b000028800000c13d000000000006004b000028910000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f00030000000103550000000100200190000028d20000613d0000001f01400039000000600110018f0000000001b1001900000fd10010009c000028a80000213d000000400010043f000000200030008c000028a60000413d00000000010b04330000000302000029000000000021001a000028f00000413d0000000001210019000000020010006c00000000010000390000000101002039000000000001042d000000000100001900003ddc000104300000102701000041000000000010043f0000004101000039000000040010043f00000fcb0100004100003ddc000104300000001f0530018f00000f7a06300198000000400200043d0000000004620019000028dd0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000028b50000c13d000028dd0000013d0000001f0530018f00000f7a06300198000000400200043d0000000004620019000028dd0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000028c10000c13d000028dd0000013d0000001f0530018f00000f7a06300198000000400200043d0000000004620019000028dd0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000028cd0000c13d000028dd0000013d0000001f0530018f00000f7a06300198000000400200043d0000000004620019000028dd0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000028d90000c13d000000000005004b000028ea0000613d000000000161034f0000000305500210000000000604043300000000065601cf000000000656022f000000000101043b0000010005500089000000000151022f00000000015101cf000000000161019f0000000000140435000000600130021000000f780020009c00000f78020080410000004002200210000000000112019f00003ddc000104300000102701000041000000000010043f0000001101000039000000040010043f00000fcb0100004100003ddc000104300003000000000002000200000002001d0000000102000039000000000202041a000000400c00043d00000fc90300004100000000003c04350000000404c0003900000fca0300004100000000003404350000000004000414000000080220027000000f7b02200197000000040020008c000300000001001d0000290b0000c13d0000000103000031000000200030008c00000020040000390000000004034019000029380000013d00000f7800c0009c00000f780300004100000000030c4019000000400330021000000f780040009c00000f7804008041000000c001400210000000000131019f00000fcb011001c700010000000c001d3dda3dd50000040f000000010c000029000000600310027000000f7803300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057c0019000029260000613d000000000801034f00000000090c0019000000008a08043c0000000009a90436000000000059004b000029220000c13d000000000006004b000029330000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f0003000000010355000000010020019000002a530000613d00000003010000290000001f02400039000000600720018f000000000bc7001900000000007b004b0000000002000039000000010200403900000fd100b0009c00002a4d0000213d000000010020019000002a4d0000c13d0000004000b0043f0000001f0030008c00002a4b0000a13d00000000020c043300000f7b0020009c00002a4b0000213d0000000204000039000000000404041a0000004405b00039000010060600004100000000006504350000002405b00039000000000015043500000fdb0500004100000000005b04350000000405b0003900000000004504350000000004000414000000040020008c000029850000613d00000f7800b0009c00000f780100004100000000010b4019000000400110021000000f780040009c00000f7804008041000000c003400210000000000113019f00000fd9011001c700010000000b001d3dda3dd50000040f000000010b000029000000600310027000000f7803300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057b0019000029710000613d000000000801034f00000000090b0019000000008a08043c0000000009a90436000000000059004b0000296d0000c13d000000000006004b0000297e0000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f0003000000010355000000010020019000002a5f0000613d0000001f01400039000000600710018f00000003010000290000000004b7001900000fd10040009c00002a4d0000213d000000400040043f000000200030008c00002a4b0000413d00000000020b0433000000000002004b000029c30000613d000100000002001d000000020200002900000060022002100000004b0340003900000000002304350000002002400039000010220300004100000000003204350000002b0340003900000000001304350000003f030000390000000000340435000010230040009c00002a4d0000213d0000006003400039000000400030043f00000f780020009c00000f78020080410000004002200210000000000104043300000f780010009c00000f78010080410000006001100210000000000121019f000000000200041400000f780020009c00000f7802008041000000c002200210000000000112019f0000100b011001c700008010020000393dda3dd50000040f000000010020019000002a4b0000613d000000000701043b0000000101000039000000000201041a000000400c00043d00000fc90100004100000000001c04350000000401c0003900000fca0300004100000000003104350000000001000414000000080220027000000f7b02200197000000040020008c000029c50000c13d0000000103000031000000200030008c00000020040000390000000004034019000029f30000013d0000000001000019000000000001042d000200000007001d00000f7800c0009c00000f780300004100000000030c4019000000400330021000000f780010009c00000f7801008041000000c001100210000000000131019f00000fcb011001c700030000000c001d3dda3dd50000040f000000030c000029000000600310027000000f7803300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057c0019000029e10000613d000000000801034f00000000090c0019000000008a08043c0000000009a90436000000000059004b000029dd0000c13d000000000006004b000029ee0000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f0003000000010355000000010020019000002a6b0000613d00000002070000290000001f01400039000000600110018f000000000bc1001900000000001b004b0000000002000039000000010200403900000fd100b0009c00002a4d0000213d000000010020019000002a4d0000c13d0000004000b0043f000000200030008c00002a4b0000413d00000000020c043300000f7b0020009c00002a4b0000213d0000000204000039000000000404041a0000004405b000390000103a0600004100000000006504350000002405b00039000000000075043500000fdb0500004100000000005b04350000000405b0003900000000004504350000000004000414000000040020008c00002a3f0000613d00000f7800b0009c00000f780100004100000000010b4019000000400110021000000f780040009c00000f7804008041000000c003400210000000000113019f00000fd9011001c700030000000b001d3dda3dd50000040f000000030b000029000000600310027000000f7803300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057b001900002a2c0000613d000000000801034f00000000090b0019000000008a08043c0000000009a90436000000000059004b00002a280000c13d000000000006004b00002a390000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f0003000000010355000000010020019000002a770000613d0000001f01400039000000600110018f0000000001b1001900000fd10010009c00002a4d0000213d000000400010043f000000200030008c00002a4b0000413d00000000010b04330000000102000029000000000021001a00002a950000413d0000000001210019000000000001042d000000000100001900003ddc000104300000102701000041000000000010043f0000004101000039000000040010043f00000fcb0100004100003ddc000104300000001f0530018f00000f7a06300198000000400200043d000000000462001900002a820000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00002a5a0000c13d00002a820000013d0000001f0530018f00000f7a06300198000000400200043d000000000462001900002a820000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00002a660000c13d00002a820000013d0000001f0530018f00000f7a06300198000000400200043d000000000462001900002a820000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00002a720000c13d00002a820000013d0000001f0530018f00000f7a06300198000000400200043d000000000462001900002a820000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00002a7e0000c13d000000000005004b00002a8f0000613d000000000161034f0000000305500210000000000604043300000000065601cf000000000656022f000000000101043b0000010005500089000000000151022f00000000015101cf000000000161019f0000000000140435000000600130021000000f780020009c00000f78020080410000004002200210000000000112019f00003ddc000104300000102701000041000000000010043f0000001101000039000000040010043f00000fcb0100004100003ddc0001043000010000000000020000000101000039000000000201041a000000ff0120019000002aec0000c13d000000400b00043d0000100e0100004100000000001b04350000000001000414000000080220027000000f7b02200197000000040020008c00002aad0000c13d0000000103000031000000200030008c0000002004000039000000000403401900002ad90000013d00000f7800b0009c00000f780300004100000000030b4019000000400330021000000f780010009c00000f7801008041000000c001100210000000000131019f00000fdf011001c700010000000b001d3dda3dd50000040f000000010b000029000000600310027000000f7803300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057b001900002ac80000613d000000000801034f00000000090b0019000000008a08043c0000000009a90436000000000059004b00002ac40000c13d000000000006004b00002ad50000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f0003000000010355000000010020019000002af50000613d0000001f01400039000000600210018f0000000001b20019000000000021004b0000000002000039000000010200403900000fd10010009c00002aef0000213d000000010020019000002aef0000c13d000000400010043f0000001f0030008c00002aed0000a13d00000000010b0433000000000001004b0000000002000039000000010200c039000000000021004b00002aed0000c13d000000000001042d000000000100001900003ddc000104300000102701000041000000000010043f0000004101000039000000040010043f00000fcb0100004100003ddc000104300000001f0530018f00000f7a06300198000000400200043d000000000462001900002b000000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00002afc0000c13d000000000005004b00002b0d0000613d000000000161034f0000000305500210000000000604043300000000065601cf000000000656022f000000000101043b0000010005500089000000000151022f00000000015101cf000000000161019f0000000000140435000000600130021000000f780020009c00000f78020080410000004002200210000000000121019f00003ddc000104300004000000000002000200000003001d000300000002001d0000000102000039000000000202041a000000400c00043d00000fc90300004100000000003c04350000000404c0003900000fca0300004100000000003404350000000004000414000000080220027000000f7b02200197000000040020008c000400000001001d00002b290000c13d0000000103000031000000200030008c0000002004000039000000000403401900002b560000013d00000f7800c0009c00000f780300004100000000030c4019000000400330021000000f780040009c00000f7804008041000000c001400210000000000131019f00000fcb011001c700010000000c001d3dda3dd50000040f000000010c000029000000600310027000000f7803300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057c001900002b440000613d000000000801034f00000000090c0019000000008a08043c0000000009a90436000000000059004b00002b400000c13d000000000006004b00002b510000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f0003000000010355000000010020019000002c740000613d00000004010000290000001f02400039000000600720018f000000000bc7001900000000007b004b0000000002000039000000010200403900000fd100b0009c00002c6e0000213d000000010020019000002c6e0000c13d0000004000b0043f0000001f0030008c00002c6c0000a13d00000000020c043300000f7b0020009c00002c6c0000213d0000000204000039000000000404041a0000004405b00039000010050600004100000000006504350000002405b00039000000000015043500000fdb0500004100000000005b04350000000405b0003900000000004504350000000004000414000000040020008c00002ba30000613d00000f7800b0009c00000f780100004100000000010b4019000000400110021000000f780040009c00000f7804008041000000c003400210000000000113019f00000fd9011001c700010000000b001d3dda3dd50000040f000000010b000029000000600310027000000f7803300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057b001900002b8f0000613d000000000801034f00000000090b0019000000008a08043c0000000009a90436000000000059004b00002b8b0000c13d000000000006004b00002b9c0000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f0003000000010355000000010020019000002c800000613d0000001f01400039000000600710018f00000004010000290000000004b7001900000fd10040009c00002c6e0000213d000000400040043f000000200030008c00002c6c0000413d00000000020b0433000000000002004b00002be10000613d000100000002001d000000030200002900000060022002100000004b0340003900000000002304350000002002400039000010220300004100000000003204350000002b0340003900000000001304350000003f030000390000000000340435000010230040009c00002c6e0000213d0000006003400039000000400030043f00000f780020009c00000f78020080410000004002200210000000000104043300000f780010009c00000f78010080410000006001100210000000000121019f000000000200041400000f780020009c00000f7802008041000000c002200210000000000112019f0000100b011001c700008010020000393dda3dd50000040f000000010020019000002c6c0000613d000000000701043b0000000101000039000000000201041a000000400c00043d00000fc90100004100000000001c04350000000401c0003900000fca0300004100000000003104350000000001000414000000080220027000000f7b02200197000000040020008c00002be30000c13d0000000103000031000000200030008c0000002004000039000000000403401900002c110000013d0000000001000019000000000001042d000300000007001d00000f7800c0009c00000f780300004100000000030c4019000000400330021000000f780010009c00000f7801008041000000c001100210000000000131019f00000fcb011001c700040000000c001d3dda3dd50000040f000000040c000029000000600310027000000f7803300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057c001900002bff0000613d000000000801034f00000000090c0019000000008a08043c0000000009a90436000000000059004b00002bfb0000c13d000000000006004b00002c0c0000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f0003000000010355000000010020019000002c8c0000613d00000003070000290000001f01400039000000600110018f000000000bc1001900000000001b004b0000000002000039000000010200403900000fd100b0009c00002c6e0000213d000000010020019000002c6e0000c13d0000004000b0043f000000200030008c00002c6c0000413d00000000020c043300000f7b0020009c00002c6c0000213d0000000204000039000000000404041a0000004405b00039000010390600004100000000006504350000002405b00039000000000075043500000fdb0500004100000000005b04350000000405b0003900000000004504350000000004000414000000040020008c00002c5d0000613d00000f7800b0009c00000f780100004100000000010b4019000000400110021000000f780040009c00000f7804008041000000c003400210000000000113019f00000fd9011001c700040000000b001d3dda3dd50000040f000000040b000029000000600310027000000f7803300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057b001900002c4a0000613d000000000801034f00000000090b0019000000008a08043c0000000009a90436000000000059004b00002c460000c13d000000000006004b00002c570000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f0003000000010355000000010020019000002c980000613d0000001f01400039000000600110018f0000000001b1001900000fd10010009c00002c6e0000213d000000400010043f000000200030008c00002c6c0000413d00000000010b04330000000202000029000000000021001a00002cb60000413d0000000001210019000000010010006c00000000010000390000000101002039000000000001042d000000000100001900003ddc000104300000102701000041000000000010043f0000004101000039000000040010043f00000fcb0100004100003ddc000104300000001f0530018f00000f7a06300198000000400200043d000000000462001900002ca30000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00002c7b0000c13d00002ca30000013d0000001f0530018f00000f7a06300198000000400200043d000000000462001900002ca30000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00002c870000c13d00002ca30000013d0000001f0530018f00000f7a06300198000000400200043d000000000462001900002ca30000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00002c930000c13d00002ca30000013d0000001f0530018f00000f7a06300198000000400200043d000000000462001900002ca30000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00002c9f0000c13d000000000005004b00002cb00000613d000000000161034f0000000305500210000000000604043300000000065601cf000000000656022f000000000101043b0000010005500089000000000151022f00000000015101cf000000000161019f0000000000140435000000600130021000000f780020009c00000f78020080410000004002200210000000000112019f00003ddc000104300000102701000041000000000010043f0000001101000039000000040010043f00000fcb0100004100003ddc0001043000020000000000020000000102000039000000000202041a000000400c00043d00000fc90300004100000000003c04350000000404c0003900000fca0300004100000000003404350000000004000414000000080220027000000f7b02200197000000040020008c00002ccf0000c13d0000000103000031000000200030008c0000002004000039000000000403401900002cfd0000013d000100000001001d00000f7800c0009c00000f780300004100000000030c4019000000400330021000000f780040009c00000f7804008041000000c001400210000000000131019f00000fcb011001c700020000000c001d3dda3dd50000040f000000020c000029000000600310027000000f7803300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057c001900002ceb0000613d000000000801034f00000000090c0019000000008a08043c0000000009a90436000000000059004b00002ce70000c13d000000000006004b00002cf80000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f0003000000010355000000010020019000002d590000613d00000001010000290000001f02400039000000600720018f000000000bc7001900000000007b004b0000000002000039000000010200403900000fd100b0009c00002d530000213d000000010020019000002d530000c13d0000004000b0043f0000001f0030008c00002d510000a13d00000000020c043300000f7b0020009c00002d510000213d0000000204000039000000000404041a0000004405b00039000010050600004100000000006504350000002405b00039000000000015043500000fdb0500004100000000005b04350000000405b0003900000000004504350000000004000414000000040020008c00002d490000613d00000f7800b0009c00000f780100004100000000010b4019000000400110021000000f780040009c00000f7804008041000000c003400210000000000113019f00000fd9011001c700020000000b001d3dda3dd50000040f000000020b000029000000600310027000000f7803300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057b001900002d360000613d000000000801034f00000000090b0019000000008a08043c0000000009a90436000000000059004b00002d320000c13d000000000006004b00002d430000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f0003000000010355000000010020019000002d770000613d0000001f01400039000000600710018f0000000001b7001900000fd10010009c00002d530000213d000000400010043f000000200030008c00002d510000413d00000000010b0433000000000001042d000000000100001900003ddc000104300000102701000041000000000010043f0000004101000039000000040010043f00000fcb0100004100003ddc000104300000001f0530018f00000f7a06300198000000400200043d000000000462001900002d640000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00002d600000c13d000000000005004b00002d710000613d000000000161034f0000000305500210000000000604043300000000065601cf000000000656022f000000000101043b0000010005500089000000000151022f00000000015101cf000000000161019f0000000000140435000000600130021000000f780020009c00000f78020080410000004002200210000000000112019f00003ddc000104300000001f0530018f00000f7a06300198000000400200043d000000000462001900002d820000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00002d7e0000c13d000000000005004b00002d8f0000613d000000000161034f0000000305500210000000000604043300000000065601cf000000000656022f000000000101043b0000010005500089000000000151022f00000000015101cf000000000161019f0000000000140435000000600130021000000f780020009c00000f78020080410000004002200210000000000121019f00003ddc0001043000020000000000020000000102000039000000000202041a000000400c00043d00000fc90300004100000000003c04350000000404c0003900000fca0300004100000000003404350000000004000414000000080220027000000f7b02200197000000040020008c00002da80000c13d0000000103000031000000200030008c0000002004000039000000000403401900002dd60000013d000100000001001d00000f7800c0009c00000f780300004100000000030c4019000000400330021000000f780040009c00000f7804008041000000c001400210000000000131019f00000fcb011001c700020000000c001d3dda3dd50000040f000000020c000029000000600310027000000f7803300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057c001900002dc40000613d000000000801034f00000000090c0019000000008a08043c0000000009a90436000000000059004b00002dc00000c13d000000000006004b00002dd10000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f0003000000010355000000010020019000002e320000613d00000001010000290000001f02400039000000600720018f000000000bc7001900000000007b004b0000000002000039000000010200403900000fd100b0009c00002e2c0000213d000000010020019000002e2c0000c13d0000004000b0043f0000001f0030008c00002e2a0000a13d00000000020c043300000f7b0020009c00002e2a0000213d0000000204000039000000000404041a0000004405b000390000103b0600004100000000006504350000002405b00039000000000015043500000fdb0500004100000000005b04350000000405b0003900000000004504350000000004000414000000040020008c00002e220000613d00000f7800b0009c00000f780100004100000000010b4019000000400110021000000f780040009c00000f7804008041000000c003400210000000000113019f00000fd9011001c700020000000b001d3dda3dd50000040f000000020b000029000000600310027000000f7803300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057b001900002e0f0000613d000000000801034f00000000090b0019000000008a08043c0000000009a90436000000000059004b00002e0b0000c13d000000000006004b00002e1c0000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f0003000000010355000000010020019000002e500000613d0000001f01400039000000600710018f0000000001b7001900000fd10010009c00002e2c0000213d000000400010043f000000200030008c00002e2a0000413d00000000010b0433000000000001042d000000000100001900003ddc000104300000102701000041000000000010043f0000004101000039000000040010043f00000fcb0100004100003ddc000104300000001f0530018f00000f7a06300198000000400200043d000000000462001900002e3d0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00002e390000c13d000000000005004b00002e4a0000613d000000000161034f0000000305500210000000000604043300000000065601cf000000000656022f000000000101043b0000010005500089000000000151022f00000000015101cf000000000161019f0000000000140435000000600130021000000f780020009c00000f78020080410000004002200210000000000112019f00003ddc000104300000001f0530018f00000f7a06300198000000400200043d000000000462001900002e5b0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00002e570000c13d000000000005004b00002e680000613d000000000161034f0000000305500210000000000604043300000000065601cf000000000656022f000000000101043b0000010005500089000000000151022f00000000015101cf000000000161019f0000000000140435000000600130021000000f780020009c00000f78020080410000004002200210000000000121019f00003ddc0001043000020000000000020000000102000039000000000202041a000000400c00043d00000fc90300004100000000003c04350000000404c0003900000fca0300004100000000003404350000000004000414000000080220027000000f7b02200197000000040020008c00002e810000c13d0000000103000031000000200030008c0000002004000039000000000403401900002eaf0000013d000100000001001d00000f7800c0009c00000f780300004100000000030c4019000000400330021000000f780040009c00000f7804008041000000c001400210000000000131019f00000fcb011001c700020000000c001d3dda3dd50000040f000000020c000029000000600310027000000f7803300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057c001900002e9d0000613d000000000801034f00000000090c0019000000008a08043c0000000009a90436000000000059004b00002e990000c13d000000000006004b00002eaa0000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f0003000000010355000000010020019000002f0b0000613d00000001010000290000001f02400039000000600720018f000000000bc7001900000000007b004b0000000002000039000000010200403900000fd100b0009c00002f050000213d000000010020019000002f050000c13d0000004000b0043f0000001f0030008c00002f030000a13d00000000020c043300000f7b0020009c00002f030000213d0000000204000039000000000404041a0000004405b0003900000fe40600004100000000006504350000002405b00039000000000015043500000fdb0500004100000000005b04350000000405b0003900000000004504350000000004000414000000040020008c00002efb0000613d00000f7800b0009c00000f780100004100000000010b4019000000400110021000000f780040009c00000f7804008041000000c003400210000000000113019f00000fd9011001c700020000000b001d3dda3dd50000040f000000020b000029000000600310027000000f7803300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057b001900002ee80000613d000000000801034f00000000090b0019000000008a08043c0000000009a90436000000000059004b00002ee40000c13d000000000006004b00002ef50000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f0003000000010355000000010020019000002f290000613d0000001f01400039000000600710018f0000000001b7001900000fd10010009c00002f050000213d000000400010043f000000200030008c00002f030000413d00000000010b0433000000000001042d000000000100001900003ddc000104300000102701000041000000000010043f0000004101000039000000040010043f00000fcb0100004100003ddc000104300000001f0530018f00000f7a06300198000000400200043d000000000462001900002f160000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00002f120000c13d000000000005004b00002f230000613d000000000161034f0000000305500210000000000604043300000000065601cf000000000656022f000000000101043b0000010005500089000000000151022f00000000015101cf000000000161019f0000000000140435000000600130021000000f780020009c00000f78020080410000004002200210000000000112019f00003ddc000104300000001f0530018f00000f7a06300198000000400200043d000000000462001900002f340000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00002f300000c13d000000000005004b00002f410000613d000000000161034f0000000305500210000000000604043300000000065601cf000000000656022f000000000101043b0000010005500089000000000151022f00000000015101cf000000000161019f0000000000140435000000600130021000000f780020009c00000f78020080410000004002200210000000000121019f00003ddc0001043000020000000000020000000102000039000000000202041a000000400c00043d00000fc90300004100000000003c04350000000404c0003900000fca0300004100000000003404350000000004000414000000080220027000000f7b02200197000000040020008c00002f5a0000c13d0000000103000031000000200030008c0000002004000039000000000403401900002f880000013d000100000001001d00000f7800c0009c00000f780300004100000000030c4019000000400330021000000f780040009c00000f7804008041000000c001400210000000000131019f00000fcb011001c700020000000c001d3dda3dd50000040f000000020c000029000000600310027000000f7803300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057c001900002f760000613d000000000801034f00000000090c0019000000008a08043c0000000009a90436000000000059004b00002f720000c13d000000000006004b00002f830000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f0003000000010355000000010020019000002fe40000613d00000001010000290000001f02400039000000600720018f000000000bc7001900000000007b004b0000000002000039000000010200403900000fd100b0009c00002fde0000213d000000010020019000002fde0000c13d0000004000b0043f0000001f0030008c00002fdc0000a13d00000000020c043300000f7b0020009c00002fdc0000213d0000000204000039000000000404041a0000004405b000390000103a0600004100000000006504350000002405b00039000000000015043500000fdb0500004100000000005b04350000000405b0003900000000004504350000000004000414000000040020008c00002fd40000613d00000f7800b0009c00000f780100004100000000010b4019000000400110021000000f780040009c00000f7804008041000000c003400210000000000113019f00000fd9011001c700020000000b001d3dda3dd50000040f000000020b000029000000600310027000000f7803300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057b001900002fc10000613d000000000801034f00000000090b0019000000008a08043c0000000009a90436000000000059004b00002fbd0000c13d000000000006004b00002fce0000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f00030000000103550000000100200190000030020000613d0000001f01400039000000600710018f0000000001b7001900000fd10010009c00002fde0000213d000000400010043f000000200030008c00002fdc0000413d00000000010b0433000000000001042d000000000100001900003ddc000104300000102701000041000000000010043f0000004101000039000000040010043f00000fcb0100004100003ddc000104300000001f0530018f00000f7a06300198000000400200043d000000000462001900002fef0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00002feb0000c13d000000000005004b00002ffc0000613d000000000161034f0000000305500210000000000604043300000000065601cf000000000656022f000000000101043b0000010005500089000000000151022f00000000015101cf000000000161019f0000000000140435000000600130021000000f780020009c00000f78020080410000004002200210000000000112019f00003ddc000104300000001f0530018f00000f7a06300198000000400200043d00000000046200190000300d0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000030090000c13d000000000005004b0000301a0000613d000000000161034f0000000305500210000000000604043300000000065601cf000000000656022f000000000101043b0000010005500089000000000151022f00000000015101cf000000000161019f0000000000140435000000600130021000000f780020009c00000f78020080410000004002200210000000000121019f00003ddc0001043000020000000000020000000102000039000000000202041a000000400c00043d00000fc90300004100000000003c04350000000404c0003900000fca0300004100000000003404350000000004000414000000080220027000000f7b02200197000000040020008c000030330000c13d0000000103000031000000200030008c00000020040000390000000004034019000030610000013d000100000001001d00000f7800c0009c00000f780300004100000000030c4019000000400330021000000f780040009c00000f7804008041000000c001400210000000000131019f00000fcb011001c700020000000c001d3dda3dd50000040f000000020c000029000000600310027000000f7803300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057c00190000304f0000613d000000000801034f00000000090c0019000000008a08043c0000000009a90436000000000059004b0000304b0000c13d000000000006004b0000305c0000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f00030000000103550000000100200190000030bd0000613d00000001010000290000001f02400039000000600720018f000000000bc7001900000000007b004b0000000002000039000000010200403900000fd100b0009c000030b70000213d0000000100200190000030b70000c13d0000004000b0043f0000001f0030008c000030b50000a13d00000000020c043300000f7b0020009c000030b50000213d0000000204000039000000000404041a0000004405b00039000010390600004100000000006504350000002405b00039000000000015043500000fdb0500004100000000005b04350000000405b0003900000000004504350000000004000414000000040020008c000030ad0000613d00000f7800b0009c00000f780100004100000000010b4019000000400110021000000f780040009c00000f7804008041000000c003400210000000000113019f00000fd9011001c700020000000b001d3dda3dd50000040f000000020b000029000000600310027000000f7803300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057b00190000309a0000613d000000000801034f00000000090b0019000000008a08043c0000000009a90436000000000059004b000030960000c13d000000000006004b000030a70000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f00030000000103550000000100200190000030db0000613d0000001f01400039000000600710018f0000000001b7001900000fd10010009c000030b70000213d000000400010043f000000200030008c000030b50000413d00000000010b0433000000000001042d000000000100001900003ddc000104300000102701000041000000000010043f0000004101000039000000040010043f00000fcb0100004100003ddc000104300000001f0530018f00000f7a06300198000000400200043d0000000004620019000030c80000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000030c40000c13d000000000005004b000030d50000613d000000000161034f0000000305500210000000000604043300000000065601cf000000000656022f000000000101043b0000010005500089000000000151022f00000000015101cf000000000161019f0000000000140435000000600130021000000f780020009c00000f78020080410000004002200210000000000112019f00003ddc000104300000001f0530018f00000f7a06300198000000400200043d0000000004620019000030e60000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000030e20000c13d000000000005004b000030f30000613d000000000161034f0000000305500210000000000604043300000000065601cf000000000656022f000000000101043b0000010005500089000000000151022f00000000015101cf000000000161019f0000000000140435000000600130021000000f780020009c00000f78020080410000004002200210000000000121019f00003ddc0001043000020000000000020000000102000039000000000202041a000000400c00043d00000fc90300004100000000003c04350000000404c0003900000fca0300004100000000003404350000000004000414000000080220027000000f7b02200197000000040020008c0000310c0000c13d0000000103000031000000200030008c000000200400003900000000040340190000313a0000013d000100000001001d00000f7800c0009c00000f780300004100000000030c4019000000400330021000000f780040009c00000f7804008041000000c001400210000000000131019f00000fcb011001c700020000000c001d3dda3dd50000040f000000020c000029000000600310027000000f7803300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057c0019000031280000613d000000000801034f00000000090c0019000000008a08043c0000000009a90436000000000059004b000031240000c13d000000000006004b000031350000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f00030000000103550000000100200190000031960000613d00000001010000290000001f02400039000000600720018f000000000bc7001900000000007b004b0000000002000039000000010200403900000fd100b0009c000031900000213d0000000100200190000031900000c13d0000004000b0043f0000001f0030008c0000318e0000a13d00000000020c043300000f7b0020009c0000318e0000213d0000000204000039000000000404041a0000004405b00039000010380600004100000000006504350000002405b00039000000000015043500000fdb0500004100000000005b04350000000405b0003900000000004504350000000004000414000000040020008c000031860000613d00000f7800b0009c00000f780100004100000000010b4019000000400110021000000f780040009c00000f7804008041000000c003400210000000000113019f00000fd9011001c700020000000b001d3dda3dd50000040f000000020b000029000000600310027000000f7803300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057b0019000031730000613d000000000801034f00000000090b0019000000008a08043c0000000009a90436000000000059004b0000316f0000c13d000000000006004b000031800000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f00030000000103550000000100200190000031b40000613d0000001f01400039000000600710018f0000000001b7001900000fd10010009c000031900000213d000000400010043f000000200030008c0000318e0000413d00000000010b0433000000000001042d000000000100001900003ddc000104300000102701000041000000000010043f0000004101000039000000040010043f00000fcb0100004100003ddc000104300000001f0530018f00000f7a06300198000000400200043d0000000004620019000031a10000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b0000319d0000c13d000000000005004b000031ae0000613d000000000161034f0000000305500210000000000604043300000000065601cf000000000656022f000000000101043b0000010005500089000000000151022f00000000015101cf000000000161019f0000000000140435000000600130021000000f780020009c00000f78020080410000004002200210000000000112019f00003ddc000104300000001f0530018f00000f7a06300198000000400200043d0000000004620019000031bf0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000031bb0000c13d000000000005004b000031cc0000613d000000000161034f0000000305500210000000000604043300000000065601cf000000000656022f000000000101043b0000010005500089000000000151022f00000000015101cf000000000161019f0000000000140435000000600130021000000f780020009c00000f78020080410000004002200210000000000121019f00003ddc0001043000020000000000020000000102000039000000000202041a000000400c00043d00000fc90300004100000000003c04350000000404c0003900000fca0300004100000000003404350000000004000414000000080220027000000f7b02200197000000040020008c000031e50000c13d0000000103000031000000200030008c00000020040000390000000004034019000032130000013d000100000001001d00000f7800c0009c00000f780300004100000000030c4019000000400330021000000f780040009c00000f7804008041000000c001400210000000000131019f00000fcb011001c700020000000c001d3dda3dd50000040f000000020c000029000000600310027000000f7803300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057c0019000032010000613d000000000801034f00000000090c0019000000008a08043c0000000009a90436000000000059004b000031fd0000c13d000000000006004b0000320e0000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f000300000001035500000001002001900000326f0000613d00000001010000290000001f02400039000000600720018f000000000bc7001900000000007b004b0000000002000039000000010200403900000fd100b0009c000032690000213d0000000100200190000032690000c13d0000004000b0043f0000001f0030008c000032670000a13d00000000020c043300000f7b0020009c000032670000213d0000000204000039000000000404041a0000004405b00039000010040600004100000000006504350000002405b00039000000000015043500000fdb0500004100000000005b04350000000405b0003900000000004504350000000004000414000000040020008c0000325f0000613d00000f7800b0009c00000f780100004100000000010b4019000000400110021000000f780040009c00000f7804008041000000c003400210000000000113019f00000fd9011001c700020000000b001d3dda3dd50000040f000000020b000029000000600310027000000f7803300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057b00190000324c0000613d000000000801034f00000000090b0019000000008a08043c0000000009a90436000000000059004b000032480000c13d000000000006004b000032590000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f000300000001035500000001002001900000328d0000613d0000001f01400039000000600710018f0000000001b7001900000fd10010009c000032690000213d000000400010043f000000200030008c000032670000413d00000000010b0433000000000001042d000000000100001900003ddc000104300000102701000041000000000010043f0000004101000039000000040010043f00000fcb0100004100003ddc000104300000001f0530018f00000f7a06300198000000400200043d00000000046200190000327a0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000032760000c13d000000000005004b000032870000613d000000000161034f0000000305500210000000000604043300000000065601cf000000000656022f000000000101043b0000010005500089000000000151022f00000000015101cf000000000161019f0000000000140435000000600130021000000f780020009c00000f78020080410000004002200210000000000112019f00003ddc000104300000001f0530018f00000f7a06300198000000400200043d0000000004620019000032980000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000032940000c13d000000000005004b000032a50000613d000000000161034f0000000305500210000000000604043300000000065601cf000000000656022f000000000101043b0000010005500089000000000151022f00000000015101cf000000000161019f0000000000140435000000600130021000000f780020009c00000f78020080410000004002200210000000000121019f00003ddc0001043000020000000000020000000102000039000000000202041a000000400c00043d00000fc90300004100000000003c04350000000404c0003900000fca0300004100000000003404350000000004000414000000080220027000000f7b02200197000000040020008c000032be0000c13d0000000103000031000000200030008c00000020040000390000000004034019000032ec0000013d000100000001001d00000f7800c0009c00000f780300004100000000030c4019000000400330021000000f780040009c00000f7804008041000000c001400210000000000131019f00000fcb011001c700020000000c001d3dda3dd50000040f000000020c000029000000600310027000000f7803300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057c0019000032da0000613d000000000801034f00000000090c0019000000008a08043c0000000009a90436000000000059004b000032d60000c13d000000000006004b000032e70000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f00030000000103550000000100200190000033480000613d00000001010000290000001f02400039000000600720018f000000000bc7001900000000007b004b0000000002000039000000010200403900000fd100b0009c000033420000213d0000000100200190000033420000c13d0000004000b0043f0000001f0030008c000033400000a13d00000000020c043300000f7b0020009c000033400000213d0000000204000039000000000404041a0000004405b00039000010060600004100000000006504350000002405b00039000000000015043500000fdb0500004100000000005b04350000000405b0003900000000004504350000000004000414000000040020008c000033380000613d00000f7800b0009c00000f780100004100000000010b4019000000400110021000000f780040009c00000f7804008041000000c003400210000000000113019f00000fd9011001c700020000000b001d3dda3dd50000040f000000020b000029000000600310027000000f7803300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057b0019000033250000613d000000000801034f00000000090b0019000000008a08043c0000000009a90436000000000059004b000033210000c13d000000000006004b000033320000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f00030000000103550000000100200190000033660000613d0000001f01400039000000600710018f0000000001b7001900000fd10010009c000033420000213d000000400010043f000000200030008c000033400000413d00000000010b0433000000000001042d000000000100001900003ddc000104300000102701000041000000000010043f0000004101000039000000040010043f00000fcb0100004100003ddc000104300000001f0530018f00000f7a06300198000000400200043d0000000004620019000033530000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b0000334f0000c13d000000000005004b000033600000613d000000000161034f0000000305500210000000000604043300000000065601cf000000000656022f000000000101043b0000010005500089000000000151022f00000000015101cf000000000161019f0000000000140435000000600130021000000f780020009c00000f78020080410000004002200210000000000112019f00003ddc000104300000001f0530018f00000f7a06300198000000400200043d0000000004620019000033710000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b0000336d0000c13d000000000005004b0000337e0000613d000000000161034f0000000305500210000000000604043300000000065601cf000000000656022f000000000101043b0000010005500089000000000151022f00000000015101cf000000000161019f0000000000140435000000600130021000000f780020009c00000f78020080410000004002200210000000000121019f00003ddc000104300005000000000002000500000001001d0000000101000039000000000201041a000000400c00043d00000fc90100004100000000001c04350000000401c0003900000fca0300004100000000003104350000000001000414000000080220027000000f7b02200197000000040020008c000033980000c13d0000000103000031000000200030008c00000020040000390000000004034019000033c40000013d00000f7800c0009c00000f780300004100000000030c4019000000400330021000000f780010009c00000f7801008041000000c001100210000000000131019f00000fcb011001c700040000000c001d3dda3dd50000040f000000040c000029000000600310027000000f7803300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057c0019000033b30000613d000000000801034f00000000090c0019000000008a08043c0000000009a90436000000000059004b000033af0000c13d000000000006004b000033c00000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f00030000000103550000000100200190000035c00000613d0000001f01400039000000600110018f000000000bc1001900000000001b004b0000000002000039000000010200403900000fd100b0009c000035ba0000213d0000000100200190000035ba0000c13d0000004000b0043f0000001f0030008c000035b80000a13d00000000020c043300000f7b0020009c000035b80000213d0000000204000039000000000404041a0000004405b0003900000fe40600004100000000006504350000002405b000390000000506000029000000000065043500000fdb0500004100000000005b04350000000405b0003900000000004504350000000004000414000000040020008c000034110000613d00000f7800b0009c00000f780100004100000000010b4019000000400110021000000f780040009c00000f7804008041000000c003400210000000000113019f00000fd9011001c700040000000b001d3dda3dd50000040f000000040b000029000000600310027000000f7803300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057b0019000033fe0000613d000000000801034f00000000090b0019000000008a08043c0000000009a90436000000000059004b000033fa0000c13d000000000006004b0000340b0000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f00030000000103550000000100200190000035cc0000613d0000001f01400039000000600110018f000000000cb1001900000fd100c0009c000035ba0000213d0000004000c0043f000000200030008c000035b80000413d00000000010b0433000400000001001d0000000101000039000000000201041a00000fc90100004100000000001c04350000000401c0003900000fca0400004100000000004104350000000001000414000000080220027000000f7b02200197000000040020008c000034270000c13d0000002004000039000034530000013d00000f7800c0009c00000f780300004100000000030c4019000000400330021000000f780010009c00000f7801008041000000c001100210000000000131019f00000fcb011001c700030000000c001d3dda3dd50000040f000000030c000029000000600310027000000f7803300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057c0019000034420000613d000000000801034f00000000090c0019000000008a08043c0000000009a90436000000000059004b0000343e0000c13d000000000006004b0000344f0000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f00030000000103550000000100200190000035ea0000613d0000001f01400039000000600110018f000000000bc1001900000fd100b0009c000035ba0000213d0000004000b0043f000000200030008c000035b80000413d00000000020c043300000f7b0020009c000035b80000213d0000000204000039000000000404041a0000004405b0003900000fe50600004100000000006504350000002405b000390000000506000029000000000065043500000fdb0500004100000000005b04350000000405b0003900000000004504350000000004000414000000040020008c0000349b0000613d00000f7800b0009c00000f780100004100000000010b4019000000400110021000000f780040009c00000f7804008041000000c003400210000000000113019f00000fd9011001c700030000000b001d3dda3dd50000040f000000030b000029000000600310027000000f7803300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057b0019000034880000613d000000000801034f00000000090b0019000000008a08043c0000000009a90436000000000059004b000034840000c13d000000000006004b000034950000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f00030000000103550000000100200190000035f60000613d0000001f01400039000000600110018f000000000cb1001900000fd100c0009c000035ba0000213d0000004000c0043f000000200030008c000035b80000413d00000000020b0433000300000002001d0000000102000039000000000202041a00000fc90400004100000000004c04350000000404c0003900000fca0500004100000000005404350000000004000414000000080220027000000f7b02200197000000040020008c000034dd0000613d00000f7800c0009c00000f780100004100000000010c4019000000400110021000000f780040009c00000f7804008041000000c003400210000000000113019f00000fcb011001c700020000000c001d3dda3dd50000040f000000020c000029000000600310027000000f7803300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057c0019000034ca0000613d000000000801034f00000000090c0019000000008a08043c0000000009a90436000000000059004b000034c60000c13d000000000006004b000034d70000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f00030000000103550000000100200190000036020000613d0000001f01400039000000600110018f000000000bc1001900000fd100b0009c000035ba0000213d0000004000b0043f000000200030008c000035b80000413d00000000020c043300000f7b0020009c000035b80000213d0000000204000039000000000404041a0000004405b0003900000fe60600004100000000006504350000002405b000390000000506000029000000000065043500000fdb0500004100000000005b04350000000405b0003900000000004504350000000004000414000000040020008c000035230000613d00000f7800b0009c00000f780100004100000000010b4019000000400110021000000f780040009c00000f7804008041000000c003400210000000000113019f00000fd9011001c700020000000b001d3dda3dd50000040f000000020b000029000000600310027000000f7803300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057b0019000035100000613d000000000801034f00000000090b0019000000008a08043c0000000009a90436000000000059004b0000350c0000c13d000000000006004b0000351d0000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f000300000001035500000001002001900000360e0000613d0000001f01400039000000600110018f000000000cb1001900000fd100c0009c000035ba0000213d0000004000c0043f000000200030008c000035b80000413d00000000020b0433000200000002001d0000000102000039000000000202041a00000fc90400004100000000004c04350000000404c0003900000fca0500004100000000005404350000000004000414000000080220027000000f7b02200197000000040020008c000035650000613d00000f7800c0009c00000f780100004100000000010c4019000000400110021000000f780040009c00000f7804008041000000c003400210000000000113019f00000fcb011001c700010000000c001d3dda3dd50000040f000000010c000029000000600310027000000f7803300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057c0019000035520000613d000000000801034f00000000090c0019000000008a08043c0000000009a90436000000000059004b0000354e0000c13d000000000006004b0000355f0000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f000300000001035500000001002001900000361a0000613d0000001f01400039000000600110018f000000000bc1001900000fd100b0009c000035ba0000213d0000004000b0043f000000200030008c000035b80000413d00000000020c043300000f7b0020009c000035b80000213d0000000204000039000000000404041a0000004405b0003900000fe70600004100000000006504350000002405b000390000000506000029000000000065043500000fd80500004100000000005b04350000000405b0003900000000004504350000000004000414000000040020008c000035ab0000613d00000f7800b0009c00000f780100004100000000010b4019000000400110021000000f780040009c00000f7804008041000000c003400210000000000113019f00000fd9011001c700050000000b001d3dda3dd50000040f000000050b000029000000600310027000000f7803300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057b0019000035980000613d000000000801034f00000000090b0019000000008a08043c0000000009a90436000000000059004b000035940000c13d000000000006004b000035a50000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f00030000000103550000000100200190000036260000613d0000001f01400039000000600110018f0000000001b1001900000fd10010009c000035ba0000213d000000400010043f000000200030008c000035b80000413d00000000040b043300000f7b0040009c000035b80000213d000000040100002900000003020000290000000203000029000000000001042d000000000100001900003ddc000104300000102701000041000000000010043f0000004101000039000000040010043f00000fcb0100004100003ddc000104300000001f0530018f00000f7a06300198000000400200043d0000000004620019000035d70000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000035c70000c13d000035d70000013d0000001f0530018f00000f7a06300198000000400200043d0000000004620019000035d70000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000035d30000c13d000000000005004b000035e40000613d000000000161034f0000000305500210000000000604043300000000065601cf000000000656022f000000000101043b0000010005500089000000000151022f00000000015101cf000000000161019f0000000000140435000000600130021000000f780020009c00000f78020080410000004002200210000000000112019f00003ddc000104300000001f0530018f00000f7a06300198000000400200043d0000000004620019000036310000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000035f10000c13d000036310000013d0000001f0530018f00000f7a06300198000000400200043d0000000004620019000036310000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000035fd0000c13d000036310000013d0000001f0530018f00000f7a06300198000000400200043d0000000004620019000036310000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000036090000c13d000036310000013d0000001f0530018f00000f7a06300198000000400200043d0000000004620019000036310000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000036150000c13d000036310000013d0000001f0530018f00000f7a06300198000000400200043d0000000004620019000036310000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000036210000c13d000036310000013d0000001f0530018f00000f7a06300198000000400200043d0000000004620019000036310000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b0000362d0000c13d000000000005004b0000363e0000613d000000000161034f0000000305500210000000000604043300000000065601cf000000000656022f000000000101043b0000010005500089000000000151022f00000000015101cf000000000161019f0000000000140435000000600130021000000f780020009c00000f78020080410000004002200210000000000121019f00003ddc000104300003000000000002000300000001001d0000000101000039000000000201041a000000400c00043d00000fc90100004100000000001c04350000000401c0003900000fca0300004100000000003104350000000001000414000000080220027000000f7b02200197000000040020008c000036580000c13d0000000103000031000000200030008c00000020040000390000000004034019000036840000013d00000f7800c0009c00000f780300004100000000030c4019000000400330021000000f780010009c00000f7801008041000000c001100210000000000131019f00000fcb011001c700020000000c001d3dda3dd50000040f000000020c000029000000600310027000000f7803300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057c0019000036730000613d000000000801034f00000000090c0019000000008a08043c0000000009a90436000000000059004b0000366f0000c13d000000000006004b000036800000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f00030000000103550000000100200190000037a50000613d0000001f01400039000000600110018f000000000bc1001900000000001b004b0000000002000039000000010200403900000fd100b0009c0000379f0000213d00000001002001900000379f0000c13d0000004000b0043f0000001f0030008c0000379d0000a13d00000000020c043300000f7b0020009c0000379d0000213d0000000204000039000000000404041a0000004405b000390000103b0600004100000000006504350000002405b000390000000306000029000000000065043500000fdb0500004100000000005b04350000000405b0003900000000004504350000000004000414000000040020008c000036d10000613d00000f7800b0009c00000f780100004100000000010b4019000000400110021000000f780040009c00000f7804008041000000c003400210000000000113019f00000fd9011001c700020000000b001d3dda3dd50000040f000000020b000029000000600310027000000f7803300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057b0019000036be0000613d000000000801034f00000000090b0019000000008a08043c0000000009a90436000000000059004b000036ba0000c13d000000000006004b000036cb0000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f00030000000103550000000100200190000037b10000613d0000001f01400039000000600110018f000000000cb1001900000fd100c0009c0000379f0000213d0000004000c0043f000000200030008c0000379d0000413d00000000010b0433000200000001001d0000000101000039000000000201041a00000fc90100004100000000001c04350000000401c0003900000fca0400004100000000004104350000000001000414000000080220027000000f7b02200197000000040020008c000036e70000c13d0000002004000039000037130000013d00000f7800c0009c00000f780300004100000000030c4019000000400330021000000f780010009c00000f7801008041000000c001100210000000000131019f00000fcb011001c700010000000c001d3dda3dd50000040f000000010c000029000000600310027000000f7803300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057c0019000037020000613d000000000801034f00000000090c0019000000008a08043c0000000009a90436000000000059004b000036fe0000c13d000000000006004b0000370f0000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f00030000000103550000000100200190000037bd0000613d0000001f01400039000000600110018f000000000bc1001900000fd100b0009c0000379f0000213d0000004000b0043f000000200030008c0000379d0000413d00000000020c043300000f7b0020009c0000379d0000213d0000000204000039000000000404041a0000004405b000390000103a0600004100000000006504350000002405b000390000000306000029000000000065043500000fdb0500004100000000005b04350000000405b0003900000000004504350000000004000414000000040020008c0000375b0000613d00000f7800b0009c00000f780100004100000000010b4019000000400110021000000f780040009c00000f7804008041000000c003400210000000000113019f00000fd9011001c700030000000b001d3dda3dd50000040f000000030b000029000000600310027000000f7803300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057b0019000037480000613d000000000801034f00000000090b0019000000008a08043c0000000009a90436000000000059004b000037440000c13d000000000006004b000037550000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f00030000000103550000000100200190000037c90000613d0000001f01400039000000600110018f0000000001b1001900000fd10010009c0000379f0000213d000000400010043f000000200030008c0000379d0000413d00000000020b043300000002002001b00000000001000019000037670000c13d000000010110018f000000000001042d00000ff0010000410000000000100443000000000002004b0000377f0000613d000300000002001d000000020000006b0000378e0000613d000000000100041400000f780010009c00000f7801008041000000c0011002100000101c011001c70000800b020000393dda3dd50000040f0000000100200190000037e70000613d000000000201043b000000030020006c00000000010000390000000101002039000000020020006c00000001011041bf000000010110018f000000000001042d000000000100041400000f780010009c00000f7801008041000000c0011002100000101c011001c70000800b020000393dda3dd50000040f0000000100200190000037e70000613d000000000101043b000000020010006c00000000010000390000000101004039000000010110018f000000000001042d000000000100041400000f780010009c00000f7801008041000000c0011002100000101c011001c70000800b020000393dda3dd50000040f0000000100200190000037e70000613d000000000101043b000000030010006c00000000010000390000000101002039000000010110018f000000000001042d000000000100001900003ddc000104300000102701000041000000000010043f0000004101000039000000040010043f00000fcb0100004100003ddc000104300000001f0530018f00000f7a06300198000000400200043d0000000004620019000037d40000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000037ac0000c13d000037d40000013d0000001f0530018f00000f7a06300198000000400200043d0000000004620019000037d40000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000037b80000c13d000037d40000013d0000001f0530018f00000f7a06300198000000400200043d0000000004620019000037d40000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000037c40000c13d000037d40000013d0000001f0530018f00000f7a06300198000000400200043d0000000004620019000037d40000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000037d00000c13d000000000005004b000037e10000613d000000000161034f0000000305500210000000000604043300000000065601cf000000000656022f000000000101043b0000010005500089000000000151022f00000000015101cf000000000161019f0000000000140435000000600130021000000f780020009c00000f78020080410000004002200210000000000112019f00003ddc00010430000000000001042f0004000000000002000300000002001d000400000001001d0000000101000039000000000201041a000000400b00043d00000fc90100004100000000001b04350000000401b0003900000fca0300004100000000003104350000000001000414000000080220027000000f7b02200197000000040020008c000037fd0000c13d0000000103000031000000200030008c00000020040000390000000004034019000038290000013d00000f7800b0009c00000f780300004100000000030b4019000000400330021000000f780010009c00000f7801008041000000c001100210000000000131019f00000fcb011001c700020000000b001d3dda3dd50000040f000000020b000029000000600310027000000f7803300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057b0019000038180000613d000000000801034f00000000090b0019000000008a08043c0000000009a90436000000000059004b000038140000c13d000000000006004b000038250000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f000300000001035500000001002001900000387e0000613d0000001f01400039000000600210018f0000000001b20019000000000021004b0000000002000039000000010200403900000fd10010009c000038770000213d0000000100200190000038770000c13d000000400010043f0000001f0030008c000038750000a13d00000000020b043300000f7b0020009c000038750000213d0000000201000039000000000101041a000100000001001d00000fcc010000410000000000100443000200000002001d0000000400200443000000000100041400000f780010009c00000f7801008041000000c00110021000000fcd011001c700008002020000393dda3dd50000040f00000001002001900000387d0000613d000000000101043b000000000001004b0000000203000029000038750000613d000000400400043d00000064014000390000000302000029000000000021043500000044014000390000103b02000041000000000021043500000024014000390000000402000029000000000021043500000fdd0100004100000000001404350000000401400039000000010200002900000000002104350000000001000414000000040030008c000038710000613d00000f780040009c00000f78020000410000000002044019000000400220021000000f780010009c00000f7801008041000000c001100210000000000121019f00000fd0011001c70000000002030019000400000004001d3dda3dd00000040f0000000404000029000000600310027000010f780030019d000300000001035500000001002001900000388a0000613d00000fd10040009c000038770000213d000000400040043f000000000001042d000000000100001900003ddc000104300000102701000041000000000010043f0000004101000039000000040010043f00000fcb0100004100003ddc00010430000000000001042f0000001f0530018f00000f7a06300198000000400200043d0000000004620019000038960000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000038850000c13d000038960000013d00000f78033001970000001f0530018f00000f7a06300198000000400200043d0000000004620019000038960000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000038920000c13d000000000005004b000038a30000613d000000000161034f0000000305500210000000000604043300000000065601cf000000000656022f000000000101043b0000010005500089000000000151022f00000000015101cf000000000161019f0000000000140435000000600130021000000f780020009c00000f78020080410000004002200210000000000112019f00003ddc000104300004000000000002000300000002001d000400000001001d0000000101000039000000000201041a000000400b00043d00000fc90100004100000000001b04350000000401b0003900000fca0300004100000000003104350000000001000414000000080220027000000f7b02200197000000040020008c000038be0000c13d0000000103000031000000200030008c00000020040000390000000004034019000038ea0000013d00000f7800b0009c00000f780300004100000000030b4019000000400330021000000f780010009c00000f7801008041000000c001100210000000000131019f00000fcb011001c700020000000b001d3dda3dd50000040f000000020b000029000000600310027000000f7803300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057b0019000038d90000613d000000000801034f00000000090b0019000000008a08043c0000000009a90436000000000059004b000038d50000c13d000000000006004b000038e60000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f000300000001035500000001002001900000393f0000613d0000001f01400039000000600210018f0000000001b20019000000000021004b0000000002000039000000010200403900000fd10010009c000039380000213d0000000100200190000039380000c13d000000400010043f0000001f0030008c000039360000a13d00000000020b043300000f7b0020009c000039360000213d0000000201000039000000000101041a000100000001001d00000fcc010000410000000000100443000200000002001d0000000400200443000000000100041400000f780010009c00000f7801008041000000c00110021000000fcd011001c700008002020000393dda3dd50000040f00000001002001900000393e0000613d000000000101043b000000000001004b0000000203000029000039360000613d000000400400043d00000064014000390000000302000029000000000021043500000044014000390000103a02000041000000000021043500000024014000390000000402000029000000000021043500000fdd0100004100000000001404350000000401400039000000010200002900000000002104350000000001000414000000040030008c000039320000613d00000f780040009c00000f78020000410000000002044019000000400220021000000f780010009c00000f7801008041000000c001100210000000000121019f00000fd0011001c70000000002030019000400000004001d3dda3dd00000040f0000000404000029000000600310027000010f780030019d000300000001035500000001002001900000394b0000613d00000fd10040009c000039380000213d000000400040043f000000000001042d000000000100001900003ddc000104300000102701000041000000000010043f0000004101000039000000040010043f00000fcb0100004100003ddc00010430000000000001042f0000001f0530018f00000f7a06300198000000400200043d0000000004620019000039570000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000039460000c13d000039570000013d00000f78033001970000001f0530018f00000f7a06300198000000400200043d0000000004620019000039570000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000039530000c13d000000000005004b000039640000613d000000000161034f0000000305500210000000000604043300000000065601cf000000000656022f000000000101043b0000010005500089000000000151022f00000000015101cf000000000161019f0000000000140435000000600130021000000f780020009c00000f78020080410000004002200210000000000112019f00003ddc000104300004000000000002000300000002001d000400000001001d0000000101000039000000000201041a000000400b00043d00000fc90100004100000000001b04350000000401b0003900000fca0300004100000000003104350000000001000414000000080220027000000f7b02200197000000040020008c0000397f0000c13d0000000103000031000000200030008c00000020040000390000000004034019000039ab0000013d00000f7800b0009c00000f780300004100000000030b4019000000400330021000000f780010009c00000f7801008041000000c001100210000000000131019f00000fcb011001c700020000000b001d3dda3dd50000040f000000020b000029000000600310027000000f7803300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057b00190000399a0000613d000000000801034f00000000090b0019000000008a08043c0000000009a90436000000000059004b000039960000c13d000000000006004b000039a70000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f0003000000010355000000010020019000003a000000613d0000001f01400039000000600210018f0000000001b20019000000000021004b0000000002000039000000010200403900000fd10010009c000039f90000213d0000000100200190000039f90000c13d000000400010043f0000001f0030008c000039f70000a13d00000000020b043300000f7b0020009c000039f70000213d0000000201000039000000000101041a000100000001001d00000fcc010000410000000000100443000200000002001d0000000400200443000000000100041400000f780010009c00000f7801008041000000c00110021000000fcd011001c700008002020000393dda3dd50000040f0000000100200190000039ff0000613d000000000101043b000000000001004b0000000203000029000039f70000613d000000400400043d00000064014000390000000302000029000000000021043500000044014000390000103902000041000000000021043500000024014000390000000402000029000000000021043500000fdd0100004100000000001404350000000401400039000000010200002900000000002104350000000001000414000000040030008c000039f30000613d00000f780040009c00000f78020000410000000002044019000000400220021000000f780010009c00000f7801008041000000c001100210000000000121019f00000fd0011001c70000000002030019000400000004001d3dda3dd00000040f0000000404000029000000600310027000010f780030019d0003000000010355000000010020019000003a0c0000613d00000fd10040009c000039f90000213d000000400040043f000000000001042d000000000100001900003ddc000104300000102701000041000000000010043f0000004101000039000000040010043f00000fcb0100004100003ddc00010430000000000001042f0000001f0530018f00000f7a06300198000000400200043d000000000462001900003a180000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00003a070000c13d00003a180000013d00000f78033001970000001f0530018f00000f7a06300198000000400200043d000000000462001900003a180000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00003a140000c13d000000000005004b00003a250000613d000000000161034f0000000305500210000000000604043300000000065601cf000000000656022f000000000101043b0000010005500089000000000151022f00000000015101cf000000000161019f0000000000140435000000600130021000000f780020009c00000f78020080410000004002200210000000000112019f00003ddc000104300004000000000002000300000002001d000400000001001d0000000101000039000000000201041a000000400b00043d00000fc90100004100000000001b04350000000401b0003900000fca0300004100000000003104350000000001000414000000080220027000000f7b02200197000000040020008c00003a400000c13d0000000103000031000000200030008c0000002004000039000000000403401900003a6c0000013d00000f7800b0009c00000f780300004100000000030b4019000000400330021000000f780010009c00000f7801008041000000c001100210000000000131019f00000fcb011001c700020000000b001d3dda3dd50000040f000000020b000029000000600310027000000f7803300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057b001900003a5b0000613d000000000801034f00000000090b0019000000008a08043c0000000009a90436000000000059004b00003a570000c13d000000000006004b00003a680000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f0003000000010355000000010020019000003ac10000613d0000001f01400039000000600210018f0000000001b20019000000000021004b0000000002000039000000010200403900000fd10010009c00003aba0000213d000000010020019000003aba0000c13d000000400010043f0000001f0030008c00003ab80000a13d00000000020b043300000f7b0020009c00003ab80000213d0000000201000039000000000101041a000100000001001d00000fcc010000410000000000100443000200000002001d0000000400200443000000000100041400000f780010009c00000f7801008041000000c00110021000000fcd011001c700008002020000393dda3dd50000040f000000010020019000003ac00000613d000000000101043b000000000001004b000000020300002900003ab80000613d000000400400043d00000064014000390000000302000029000000000021043500000044014000390000103c02000041000000000021043500000024014000390000000402000029000000000021043500000fdd0100004100000000001404350000000401400039000000010200002900000000002104350000000001000414000000040030008c00003ab40000613d00000f780040009c00000f78020000410000000002044019000000400220021000000f780010009c00000f7801008041000000c001100210000000000121019f00000fd0011001c70000000002030019000400000004001d3dda3dd00000040f0000000404000029000000600310027000010f780030019d0003000000010355000000010020019000003acd0000613d00000fd10040009c00003aba0000213d000000400040043f000000000001042d000000000100001900003ddc000104300000102701000041000000000010043f0000004101000039000000040010043f00000fcb0100004100003ddc00010430000000000001042f0000001f0530018f00000f7a06300198000000400200043d000000000462001900003ad90000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00003ac80000c13d00003ad90000013d00000f78033001970000001f0530018f00000f7a06300198000000400200043d000000000462001900003ad90000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00003ad50000c13d000000000005004b00003ae60000613d000000000161034f0000000305500210000000000604043300000000065601cf000000000656022f000000000101043b0000010005500089000000000151022f00000000015101cf000000000161019f0000000000140435000000600130021000000f780020009c00000f78020080410000004002200210000000000112019f00003ddc000104300004000000000002000300000002001d000400000001001d0000000101000039000000000201041a000000400b00043d00000fc90100004100000000001b04350000000401b0003900000fca0300004100000000003104350000000001000414000000080220027000000f7b02200197000000040020008c00003b010000c13d0000000103000031000000200030008c0000002004000039000000000403401900003b2d0000013d00000f7800b0009c00000f780300004100000000030b4019000000400330021000000f780010009c00000f7801008041000000c001100210000000000131019f00000fcb011001c700020000000b001d3dda3dd50000040f000000020b000029000000600310027000000f7803300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057b001900003b1c0000613d000000000801034f00000000090b0019000000008a08043c0000000009a90436000000000059004b00003b180000c13d000000000006004b00003b290000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f0003000000010355000000010020019000003b820000613d0000001f01400039000000600210018f0000000001b20019000000000021004b0000000002000039000000010200403900000fd10010009c00003b7b0000213d000000010020019000003b7b0000c13d000000400010043f0000001f0030008c00003b790000a13d00000000020b043300000f7b0020009c00003b790000213d0000000201000039000000000101041a000100000001001d00000fcc010000410000000000100443000200000002001d0000000400200443000000000100041400000f780010009c00000f7801008041000000c00110021000000fcd011001c700008002020000393dda3dd50000040f000000010020019000003b810000613d000000000101043b000000000001004b000000020300002900003b790000613d000000400400043d00000064014000390000000302000029000000000021043500000044014000390000103802000041000000000021043500000024014000390000000402000029000000000021043500000fdd0100004100000000001404350000000401400039000000010200002900000000002104350000000001000414000000040030008c00003b750000613d00000f780040009c00000f78020000410000000002044019000000400220021000000f780010009c00000f7801008041000000c001100210000000000121019f00000fd0011001c70000000002030019000400000004001d3dda3dd00000040f0000000404000029000000600310027000010f780030019d0003000000010355000000010020019000003b8e0000613d00000fd10040009c00003b7b0000213d000000400040043f000000000001042d000000000100001900003ddc000104300000102701000041000000000010043f0000004101000039000000040010043f00000fcb0100004100003ddc00010430000000000001042f0000001f0530018f00000f7a06300198000000400200043d000000000462001900003b9a0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00003b890000c13d00003b9a0000013d00000f78033001970000001f0530018f00000f7a06300198000000400200043d000000000462001900003b9a0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00003b960000c13d000000000005004b00003ba70000613d000000000161034f0000000305500210000000000604043300000000065601cf000000000656022f000000000101043b0000010005500089000000000151022f00000000015101cf000000000161019f0000000000140435000000600130021000000f780020009c00000f78020080410000004002200210000000000112019f00003ddc000104300000006003200210000000400200043d0000004b0420003900000000003404350000002003200039000010220400004100000000004304350000002b0420003900000000001404350000003f0100003900000000001204350000103d0020009c00003bd00000813d0000006001200039000000400010043f00000f780030009c00000f78030080410000004001300210000000000202043300000f780020009c00000f78020080410000006002200210000000000112019f000000000200041400000f780020009c00000f7802008041000000c002200210000000000112019f0000100b011001c700008010020000393dda3dd50000040f000000010020019000003bd60000613d000000000101043b000000000001042d0000102701000041000000000010043f0000004101000039000000040010043f00000fcb0100004100003ddc00010430000000000100001900003ddc000104300004000000000002000000400400043d0000004405400039000000000035043500000020034000390000103e05000041000000000053043500000f7b0220019700000024054000390000000000250435000000440200003900000000002404350000103f0040009c00003caa0000813d0000008005400039000000400050043f000010400040009c00003caa0000213d000000c006400039000000000056004b00003caa0000413d00000f7b02100197000000400060043f00000020010000390000000000150435000000a0014000390000104106000041000000000061043500000000040404330000000001000414000000040020008c00003c230000c13d000000010100003200003c5d0000613d00000fd10010009c00003caa0000213d0000001f0310003900001036033001970000003f033000390000103603300197000000400a00043d00000000033a00190000000000a3004b0000000004000039000000010400403900000fd10030009c00003caa0000213d000000010040019000003caa0000c13d000000400030043f00000000051a043600001036021001980000001f0310018f0000000001250019000000030400036700003c150000613d000000000604034f000000006706043c0000000005750436000000000015004b00003c110000c13d000000000003004b00003c5e0000613d000000000224034f0000000303300210000000000401043300000000043401cf000000000434022f000000000202043b0000010003300089000000000232022f00000000023201cf000000000242019f000000000021043500003c5e0000013d000200000005001d00000f780030009c00000f7803008041000000400330021000000f780040009c00000f78040080410000006004400210000000000334019f00000f780010009c00000f7801008041000000c001100210000000000113019f000100000002001d3dda3dd00000040f0003000000010355000000600310027000010f780030019d00000f780430019800003c750000613d0000001f0340003900000f79033001970000003f033000390000104203300197000000400a00043d00000000033a00190000000000a3004b0000000005000039000000010500403900000fd10030009c00003caa0000213d000000010050019000003caa0000c13d000000400030043f0000001f0540018f00000000034a043600000f7a06400198000000000463001900003c4f0000613d000000000701034f0000000008030019000000007907043c0000000008980436000000000048004b00003c4b0000c13d000000000005004b00003c770000613d000000000161034f0000000305500210000000000604043300000000065601cf000000000656022f000000000101043b0000010005500089000000000151022f00000000015101cf000000000161019f000000000014043500003c770000013d000000600a0000390000000002000415000000040220008a000000050220021000000000010a0433000000000001004b00003c7f0000c13d00020000000a001d00000fcc01000041000000000010044300000004010000390000000400100443000000000100041400000f780010009c00000f7801008041000000c00110021000000fcd011001c700008002020000393dda3dd50000040f000000010020019000003cdc0000613d0000000002000415000000040220008a00003c920000013d000000600a000039000000800300003900000000010a0433000000010020019000003cc60000613d0000000002000415000000030220008a0000000502200210000000000001004b00003c820000613d000000050220027000000000020a001f00003c9c0000013d00020000000a001d00000fcc01000041000000000010044300000001010000290000000400100443000000000100041400000f780010009c00000f7801008041000000c00110021000000fcd011001c700008002020000393dda3dd50000040f000000010020019000003cdc0000613d0000000002000415000000030220008a0000000502200210000000000101043b000000000001004b000000020a00002900003cdd0000613d00000000010a0433000000050220027000000000020a001f000000000001004b00003ca90000613d00000ff30010009c00003cb00000213d000000200010008c00003cb00000413d0000002001a000390000000001010433000000000001004b0000000002000039000000010200c039000000000021004b00003cb00000c13d000000000001004b00003cb20000613d000000000001042d0000102701000041000000000010043f0000004101000039000000040010043f00000fcb0100004100003ddc00010430000000000100001900003ddc00010430000000400100043d00000064021000390000104303000041000000000032043500000044021000390000104403000041000000000032043500000024021000390000002a03000039000000000032043500000fe102000041000000000021043500000004021000390000002003000039000000000032043500000f780010009c00000f7801008041000000400110021000000fd0011001c700003ddc00010430000000000001004b00003cee0000c13d000000400300043d000100000003001d00000fe1010000410000000000130435000000040130003900000020020000390000000000210435000000240230003900000002010000293dda24b10000040f0000000102000029000000000121004900000f780010009c00000f780100804100000f780020009c00000f780200804100000060011002100000004002200210000000000121019f00003ddc00010430000000000001042f000000400100043d00000044021000390000104503000041000000000032043500000024021000390000001d03000039000000000032043500000fe102000041000000000021043500000004021000390000002003000039000000000032043500000f780010009c00000f7801008041000000400110021000000fd9011001c700003ddc0001043000000f780030009c00000f7803008041000000400230021000000f780010009c00000f78010080410000006001100210000000000121019f00003ddc000104300004000000000002000300000002001d000400000001001d0000000101000039000000000201041a000000400b00043d00000fc90100004100000000001b04350000000401b0003900000fca0300004100000000003104350000000001000414000000080220027000000f7b02200197000000040020008c00003d0b0000c13d0000000103000031000000200030008c0000002004000039000000000403401900003d370000013d00000f7800b0009c00000f780300004100000000030b4019000000400330021000000f780010009c00000f7801008041000000c001100210000000000131019f00000fcb011001c700020000000b001d3dda3dd50000040f000000020b000029000000600310027000000f7803300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057b001900003d260000613d000000000801034f00000000090b0019000000008a08043c0000000009a90436000000000059004b00003d220000c13d000000000006004b00003d330000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f0003000000010355000000010020019000003d8d0000613d0000001f01400039000000600210018f0000000001b20019000000000021004b0000000002000039000000010200403900000fd10010009c00003d860000213d000000010020019000003d860000c13d000000400010043f0000001f0030008c00003d840000a13d00000000020b043300000f7b0020009c00003d840000213d0000000201000039000000000101041a000100000001001d00000fcc010000410000000000100443000200000002001d0000000400200443000000000100041400000f780010009c00000f7801008041000000c00110021000000fcd011001c700008002020000393dda3dd50000040f000000010020019000003d8c0000613d000000000101043b000000000001004b000000020300002900003d840000613d000000030100002900000f7b01100197000000400400043d00000064024000390000000000120435000000440140003900000fd702000041000000000021043500000024014000390000000402000029000000000021043500000fe80100004100000000001404350000000401400039000000010200002900000000002104350000000001000414000000040030008c00003d800000613d00000f780040009c00000f78020000410000000002044019000000400220021000000f780010009c00000f7801008041000000c001100210000000000121019f00000fd0011001c70000000002030019000400000004001d3dda3dd00000040f0000000404000029000000600310027000010f780030019d0003000000010355000000010020019000003d990000613d00000fd10040009c00003d860000213d000000400040043f000000000001042d000000000100001900003ddc000104300000102701000041000000000010043f0000004101000039000000040010043f00000fcb0100004100003ddc00010430000000000001042f0000001f0530018f00000f7a06300198000000400200043d000000000462001900003da50000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00003d940000c13d00003da50000013d00000f78033001970000001f0530018f00000f7a06300198000000400200043d000000000462001900003da50000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00003da10000c13d000000000005004b00003db20000613d000000000161034f0000000305500210000000000604043300000000065601cf000000000656022f000000000101043b0000010005500089000000000151022f00000000015101cf000000000161019f0000000000140435000000600130021000000f780020009c00000f78020080410000004002200210000000000112019f00003ddc00010430000000000001042f00000000050100190000000000200443000000040030008c00003dc00000a13d00000005014002700000000001010031000000040010044300000f780030009c00000f78030080410000006001300210000000000200041400000f780020009c00000f7802008041000000c002200210000000000112019f00001046011001c700000000020500193dda3dd50000040f000000010020019000003dcf0000613d000000000101043b000000000001042d000000000001042f00003dd3002104210000000102000039000000000001042d0000000002000019000000000001042d00003dd8002104230000000102000039000000000001042d0000000002000019000000000001042d00003dda0000043200003ddb0001042e00003ddc0001043000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffff00000000000000000000000000000000000000000000000000000001ffffffe000000000000000000000000000000000000000000000000000000000ffffffe0000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffff0010c8a71bc361fda44a4f7cf93cad2a8f56967b11e59ee9556cccd3892c9d5fb200000002000000000000000000000000000000400000010000000000000000000000000000000000000000000000000000000000000000000000000065e6848700000000000000000000000000000000000000000000000000000000a16ad7d900000000000000000000000000000000000000000000000000000000dd898b2e00000000000000000000000000000000000000000000000000000000e5bf780b00000000000000000000000000000000000000000000000000000000edf2117300000000000000000000000000000000000000000000000000000000edf2117400000000000000000000000000000000000000000000000000000000ef281d5d00000000000000000000000000000000000000000000000000000000e5bf780c00000000000000000000000000000000000000000000000000000000ed022ebd00000000000000000000000000000000000000000000000000000000dd898b2f00000000000000000000000000000000000000000000000000000000e25a307400000000000000000000000000000000000000000000000000000000e576c93200000000000000000000000000000000000000000000000000000000c03ad0bd00000000000000000000000000000000000000000000000000000000c03ad0be00000000000000000000000000000000000000000000000000000000ce62bc8c00000000000000000000000000000000000000000000000000000000da241bc000000000000000000000000000000000000000000000000000000000a16ad7da00000000000000000000000000000000000000000000000000000000a485b4cf00000000000000000000000000000000000000000000000000000000b76ac0d7000000000000000000000000000000000000000000000000000000008129fc1b0000000000000000000000000000000000000000000000000000000085c681c400000000000000000000000000000000000000000000000000000000894760680000000000000000000000000000000000000000000000000000000089476069000000000000000000000000000000000000000000000000000000008da5cb5b0000000000000000000000000000000000000000000000000000000085c681c50000000000000000000000000000000000000000000000000000000088e4f1cb000000000000000000000000000000000000000000000000000000008129fc1c000000000000000000000000000000000000000000000000000000008245e4720000000000000000000000000000000000000000000000000000000082840eed000000000000000000000000000000000000000000000000000000006fca66fd000000000000000000000000000000000000000000000000000000006fca66fe0000000000000000000000000000000000000000000000000000000077278ae80000000000000000000000000000000000000000000000000000000078df32610000000000000000000000000000000000000000000000000000000065e68488000000000000000000000000000000000000000000000000000000006bb6246b000000000000000000000000000000000000000000000000000000006e033bce00000000000000000000000000000000000000000000000000000000267659e1000000000000000000000000000000000000000000000000000000003ccfd60a0000000000000000000000000000000000000000000000000000000059edff82000000000000000000000000000000000000000000000000000000005d1ca630000000000000000000000000000000000000000000000000000000005d1ca631000000000000000000000000000000000000000000000000000000005f58da2f0000000000000000000000000000000000000000000000000000000059edff83000000000000000000000000000000000000000000000000000000005c975abb000000000000000000000000000000000000000000000000000000003ccfd60b000000000000000000000000000000000000000000000000000000004d1afde600000000000000000000000000000000000000000000000000000000560311c1000000000000000000000000000000000000000000000000000000002c1462bf000000000000000000000000000000000000000000000000000000002c1462c0000000000000000000000000000000000000000000000000000000002fb0b8740000000000000000000000000000000000000000000000000000000031a05e6800000000000000000000000000000000000000000000000000000000267659e20000000000000000000000000000000000000000000000000000000028854ab5000000000000000000000000000000000000000000000000000000002bbc62bc000000000000000000000000000000000000000000000000000000001328357e0000000000000000000000000000000000000000000000000000000015be71fe0000000000000000000000000000000000000000000000000000000015be71ff0000000000000000000000000000000000000000000000000000000016c38b3c00000000000000000000000000000000000000000000000000000000184e4504000000000000000000000000000000000000000000000000000000001328357f0000000000000000000000000000000000000000000000000000000013e27b990000000000000000000000000000000000000000000000000000000014f615940000000000000000000000000000000000000000000000000000000006491e730000000000000000000000000000000000000000000000000000000006491e740000000000000000000000000000000000000000000000000000000006fdde03000000000000000000000000000000000000000000000000000000000f88a261000000000000000000000000000000000000000000000000000000000035a9ae00000000000000000000000000000000000000000000000000000000004cf921000000000000000000000000000000000000000000000000000000000152a1080000000000000000000000000000000000000020000000000000000000000000c36dd7ea00000000000000000000000000000000000000000000000000000000241ecf16d79d0f8dbfb92cbc07fe17840425976cf0667f022fe9877caa831b08000000000000000000000000000000000000004400000080000000000000000053e41c1e000000000000000000000000000000000000000000000000000000009750ad73d9615445751d3fd0a61d867ae6a6dd1dfb5f65ef07fe835b7d5ca6bd00000000000000000000000000000000000000240000000000000000000000001806aa1896bbf26568e884a7374b41e002500962caba6a15023a8d90e8508b830200000200000000000000000000000000000024000000000000000000000000f2c071ca0000000000000000000000000000000000000000000000000000000058d3147cb7cba8a57e7a7f6021ee129c5f39c5292213d70eff79c1ffd11d6f380000000000000000000000000000000000000084000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffff0161a64a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000440000000000000000000000000000000000000000000000000000000000000020000000800000000000000000726564656d7074696f6e5f6c6f67000000000000000000000000000000000000020000000000000000000000000000000000004e000000a00000000000000000326d994cdb81aaccb84aa1f62bae636dc0aaf98ab22f66b0c9224f1edccd7cc9e81b22ea0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000640000000000000000000000000000000000000000000000000000000000000060000000000000000000000000a1b9224c00000000000000000000000000000000000000000000000000000000a2a9f6940e96680af2fe721eb59341cde71d9b7ae61dc834d205d6c59360268e9b29de6900000000000000000000000000000000000000000000000000000000313ce5670000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000de0b6b3a764000008c379a0000000000000000000000000000000000000000000000000000000006e20646563696d616c73000000000000000000000000000000000000000000004f757470757420616d6f756e7420746f6f20736d616c6c20666f7220746f6b6550fc4a86286314eb3aa17200f6e9ba0d1cda18b0acbfb54e6d9dd307e46c2d2894c58e36f93af84b7aaa6f1f298e1f17719ac0f716089415dd7b0fc52462140bdf2e094cda4de966de648b49bb33e4cc78940d8747c74548217090b9a507ce9f421683f821a0574472445355be6d2b769119e8515f8376a1d7878523dfdecf7b0a41b90f000000000000000000000000000000000000000000000000000000004974656d2049442063616e6e6f742062652030000000000000000000000000004f757470757420616d6f756e74206d7573742062652067726561746572207468616e203000000000000000000000000000000000000000000000000000000000496e70757420616d6f756e74206d7573742062652067726561746572207468616e20300000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffff0000000000000000000000000000000000000000ffa4b9148100000000000000000000000000000000000000000000000000000000796b89b91644bc98cd93958e4c9038275d622183e25ac5af08cc6b5d9553913200000000000000000000000000000000000000240000008000000000000000008a4bcc90000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff800000000000000000000000000000000000000000000000000000000000000007fef63300000000000000000000000000000000000000000000000000000000bfa2ccd2000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0651689700000000000000000000000000000000000000000000000000000000007b920aa0000000000000000000000000000000000000000000000000000000002016836a56b71f0d02689e69e326f4f4c1b9057164ef592671cf0d37c8040c070a08231000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000fc425f2263d0df187444b70e47283d622c70181c5baebb1306a01edba1ce184c52656465656d53797374656d00000000000000000000000000000000000000000dc149f0000000000000000000000000000000000000000000000000000000002361458367e696363fbcc70777d07ebbd2394e89fd0adcaf147faccd1d294d60e95c048700000000000000000000000000000000000000000000000000000000a709fd3aa96d9faf770e44a5aef2f4808a6fe3a5ddf546568f36ad3a3873f31dbb44a248000000000000000000000000000000000000000000000000000000007e61c209e219816f2d6552de7fdbac392549e401c2ca89cd18a229b82bce31a2ea06f38f7e4f15e87567361213c28f235cccdaa1d7fd34c9db1dfe9489c6a091e304a5c70fd9a92a756a98ab89d05a9d1ea7d24975986fd7971033be6405d6b02dd6753d7447d2bb3cd72464154a7bc06c4a5d5747f9553d5247b4dc12c2e7774465616c206973206e6f742070617573656400000000000000000000000000007b53b4e6000000000000000000000000000000000000000000000000000000009cc7f708afc65944829bd487b90b72536b1951864fbfc14e125fc972a6507f3902000000000000000000000000000000000000000000000000000000000000005472616e73666572206661696c65640000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffff7f5c975abb000000000000000000000000000000000000000000000000000000005061757361626c653a2070617573656400000000000000000000000000000000436f6e7472616374206973206e6f7420616374697665000000000000000000004465616c206973207061757365640000000000000000000000000000000000004465616c206973206e6f742061637469766520617420746869732074696d6500000000000000000000000000000000000000000000000000ffffffffffffffbfe03ea41631fd55276af9e94c9ecd0f11699bb2ea9c20ef910daf61979d392fcd549b7651000000000000000000000000000000000000000000000000000000005fc998f6f1112087a6a7f978c03b3ef6c1298970e0970ce1bba412cafeba982bcd90c4c1000000000000000000000000000000000000000000000000000000006e206465616c00000000000000000000000000000000000000000000000000004974656d20494420646f6573206e6f74206d6174636820726564656d7074696f662074686520726564656d7074696f6e207261746500000000000000000000004974656d20616d6f756e74206d7573742062652061206d756c7469706c65206f0200000200000000000000000000000000000004000000000000000000000000657200000000000000000000000000000000000000000000000000000000000045786365656473206d617820726564656d7074696f6e732070657220706c617945786365656473206d617820746f74616c20726564656d7074696f6e7300000073616374696f6e0000000000000000000000000000000000000000000000000045786365656473206d617820726564656d7074696f6e7320706572207472616e706c617965725f6465616c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffff9f496e73756666696369656e7420746f6b656e2062616c616e6365000000000000455448207472616e73666572206661696c656400000000000000000000000000496e73756666696369656e74204554482062616c616e636500000000000000004e487b7100000000000000000000000000000000000000000000000000000000506c61796572206973206f6e20636f6f6c646f776e000000000000000000000020300000000000000000000000000000000000000000000000000000000000004974656d20616d6f756e74206d7573742062652067726561746572207468616e4e6f20726564656d7074696f6e206465616c20666f722074686973206974656d506c61796572206973206e6f74206a75696365640000000000000000000000005265656e7472616e637947756172643a207265656e7472616e742063616c6c0065d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a020000000000000000000000000000000000002000000000000000000000000062e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2585db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa5061757361626c653a206e6f74207061757365640000000000000000000000006500000000000000000000000000000000000000000000000000000000000000456e642074696d65206d7573742062652061667465722073746172742074696d4465616c20646f6573206e6f7420657869737400000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00fa75861a3823dd5286f0891f7ddce6cb62e6deee6aa355ff0e641afd829dbdcd7ec44d5489e2b86ed2f87d84b04b5a3949fba967937842e10302a5545dfc631530ae2c83fb63a1d7345739c2148d1bd925ce1b962c11197a573f48712e3c42d64ebf727c48eac2c66272456b06a885c5cc03e54d140f63b63b6fd10c1227958ef6107defa27e89b692bb66715910b52654e5ff87667d894ef03866f892ca1521000000000000000000000000000000000000000000000000ffffffffffffffa0a9059cbb00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffff80000000000000000000000000000000000000000000000000ffffffffffffff3f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656400000000000000000000000000000000000000000000000000000003ffffffe06f742073756363656564000000000000000000000000000000000000000000005361666545524332303a204552433230206f7065726174696f6e20646964206e416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000002000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000152cc20408b263b234d09ea4dce76028915d8051f6e90f0f213d02f97b63c056
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000074eb92b33f2400eb14f6d6725b14f76078d5e731
-----Decoded View---------------
Arg [0] : gameRegistryAddress (address): 0x74eb92b33f2400EB14F6D6725B14F76078d5E731
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 00000000000000000000000074eb92b33f2400eb14f6d6725b14f76078d5e731
Loading...
Loading
Loading...
Loading
Loading...
Loading
Net Worth in USD
$1,952.41
Net Worth in ETH
0.664177
Token Allocations
USDC.E
100.00%
Multichain Portfolio | 35 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|---|---|---|---|---|
| ABSTRACT | 100.00% | $0.999696 | 1,953 | $1,952.41 |
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.