ETH Price: $3,399.06 (+2.58%)

Contract

0xA8CF5eDc80517500075c71aCBc603FDA43eD4E69
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Emergency Withdr...193934512024-03-08 22:42:23290 days ago1709937743IN
0xA8CF5eDc...A43eD4E69
0 ETH0.00503157.32160025
Emergency Withdr...192075292024-02-11 21:36:59316 days ago1707687419IN
0xA8CF5eDc...A43eD4E69
0 ETH0.0029720534.74953958
Emergency Withdr...192075262024-02-11 21:36:23316 days ago1707687383IN
0xA8CF5eDc...A43eD4E69
0 ETH0.0033284837.92366359
Emergency Withdr...191920852024-02-09 17:33:59318 days ago1707500039IN
0xA8CF5eDc...A43eD4E69
0 ETH0.0063864972.76563804
Unstake Tokens191706022024-02-06 17:12:47321 days ago1707239567IN
0xA8CF5eDc...A43eD4E69
0 ETH0.0073200541.63402054
Emergency Withdr...191637442024-02-05 18:08:23322 days ago1707156503IN
0xA8CF5eDc...A43eD4E69
0 ETH0.0021651921.3428899
Unstake Tokens191636482024-02-05 17:48:47322 days ago1707155327IN
0xA8CF5eDc...A43eD4E69
0 ETH0.0040224621.93285238
Unstake Tokens191630312024-02-05 15:42:59322 days ago1707147779IN
0xA8CF5eDc...A43eD4E69
0 ETH0.0051332929.36648518
Claim Rewards191630302024-02-05 15:42:47322 days ago1707147767IN
0xA8CF5eDc...A43eD4E69
0 ETH0.0041767427.38814131
Claim Rewards191630292024-02-05 15:42:35322 days ago1707147755IN
0xA8CF5eDc...A43eD4E69
0 ETH0.0046942327.84506818
Emergency Withdr...191623052024-02-05 13:15:35322 days ago1707138935IN
0xA8CF5eDc...A43eD4E69
0 ETH0.0015800715.57522312
Claim Rewards191623032024-02-05 13:15:11322 days ago1707138911IN
0xA8CF5eDc...A43eD4E69
0 ETH0.0026169615.52321829
Unstake Tokens191622952024-02-05 13:13:35322 days ago1707138815IN
0xA8CF5eDc...A43eD4E69
0 ETH0.0034674316.86879955
Unstake Tokens191622442024-02-05 13:03:23322 days ago1707138203IN
0xA8CF5eDc...A43eD4E69
0 ETH0.0031255917.88086542
Claim Rewards191622382024-02-05 13:02:11322 days ago1707138131IN
0xA8CF5eDc...A43eD4E69
0 ETH0.0021201915.77714863
Add Reward191621512024-02-05 12:44:35322 days ago1707137075IN
0xA8CF5eDc...A43eD4E69
0 ETH0.0022623917.24884089
Claim Rewards191586272024-02-05 0:52:35323 days ago1707094355IN
0xA8CF5eDc...A43eD4E69
0 ETH0.0018503814.52435542
Claim Rewards191545012024-02-04 10:57:47323 days ago1707044267IN
0xA8CF5eDc...A43eD4E69
0 ETH0.0024379715.47656448
Claim Rewards191350282024-02-01 17:20:35326 days ago1706808035IN
0xA8CF5eDc...A43eD4E69
0 ETH0.0057677741.07310329
Claim Rewards191331922024-02-01 11:09:11326 days ago1706785751IN
0xA8CF5eDc...A43eD4E69
0 ETH0.0020006215.83008491
Add Reward191330992024-02-01 10:50:23326 days ago1706784623IN
0xA8CF5eDc...A43eD4E69
0 ETH0.0025222919.23213537
Update Pool Acti...191330132024-02-01 10:32:11326 days ago1706783531IN
0xA8CF5eDc...A43eD4E69
0 ETH0.0005253716.62678618
Add Reward191329702024-02-01 10:23:35326 days ago1706783015IN
0xA8CF5eDc...A43eD4E69
0 ETH0.0025352419.33091389
Claim Rewards191322572024-02-01 7:59:59327 days ago1706774399IN
0xA8CF5eDc...A43eD4E69
0 ETH0.0019278315.12322146
Unstake Tokens191322092024-02-01 7:50:23327 days ago1706773823IN
0xA8CF5eDc...A43eD4E69
0 ETH0.0027776318.42028114
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
TokenFarm

Compiler Version
v0.8.18+commit.87f61d96

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-01-18
*/

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.9;

library SafeMathInt {
    int256 private constant MIN_INT256 = int256(1) << 255;
    int256 private constant MAX_INT256 = ~(int256(1) << 255);

    function mul(int256 a, int256 b) internal pure returns (int256) {
        int256 c = a * b;

        require(c != MIN_INT256 || (a & MIN_INT256) != (b & MIN_INT256));
        require((b == 0) || (c / b == a), 'mul overflow');
        return c;
    }

    function div(int256 a, int256 b) internal pure returns (int256) {
        require(b != -1 || a != MIN_INT256);

        return a / b;
    }

    function sub(int256 a, int256 b) internal pure returns (int256) {
        int256 c = a - b;
        require((b >= 0 && c <= a) || (b < 0 && c > a),
            'sub overflow');
        return c;
    }

    function add(int256 a, int256 b) internal pure returns (int256) {
        int256 c = a + b;
        require((b >= 0 && c >= a) || (b < 0 && c < a),
            'add overflow');
        return c;
    }

    function abs(int256 a) internal pure returns (int256) {
        require(a != MIN_INT256,
            'abs overflow');
        return a < 0 ? -a : a;
    }

    function max(uint256 a, uint256 b) internal pure returns (uint256) {
        return a >= b ? a : b;
    }

    function min(uint256 a, uint256 b) internal pure returns (uint256) {
        return a < b ? a : b;
    }
}

library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, 'SafeMath: addition overflow');

        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, 'SafeMath: subtraction overflow');
    }

    function sub(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, 'SafeMath: multiplication overflow');

        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, 'SafeMath: division by zero');
    }

    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;

        return c;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b != 0,
            'parameter 2 can not be 0');
        return a % b;
    }

    function max(uint256 a, uint256 b) internal pure returns (uint256) {
        return a >= b ? a : b;
    }

    function min(uint256 a, uint256 b) internal pure returns (uint256) {
        return a < b ? a : b;
    }
}

interface IBEP20 {

    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);

    function totalSupply() external view returns (uint256);

    function balanceOf(address who) external view returns (uint256);

    function allowance(address owner, address spender)
    external
    view
    returns (uint256);

    function transfer(address to, uint256 value) external returns (bool);

    function approve(address spender, uint256 value) external returns (bool);

    function transferFrom(
        address from,
        address to,
        uint256 value
    ) external returns (bool);

    event Transfer(address indexed from, address indexed to, uint256 value);

    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
}

contract Ownable {
    address private _owner;

    event OwnershipRenounced(address indexed previousOwner);
    event TransferOwnerShip(address indexed previousOwner);

    event OwnershipTransferred(
        address indexed previousOwner,
        address indexed newOwner
    );

    constructor() {
        _owner = msg.sender;
    }

    function owner() public view returns (address) {
        return _owner;
    }

    modifier onlyOwner() {
        require(msg.sender == _owner, 'Not owner');
        _;
    }

    function renounceOwnership() public onlyOwner {
        emit OwnershipRenounced(_owner);
        _owner = address(0);
    }

    function transferOwnership(address newOwner) public onlyOwner {
        emit TransferOwnerShip(newOwner);
        _transferOwnership(newOwner);
    }

    function _transferOwnership(address newOwner) internal {
        require(newOwner != address(0),
            'Owner can not be 0');
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

contract TokenFarm is Ownable {

    using SafeMath for uint256;
    using SafeMathInt for int256;

    address public tokenWallet;

    struct UserInfo {
        uint256 amount;     // How many tokens the user has provided.
        uint256 stakingTime; // The time at which the user staked tokens.
        uint256 rewardClaimed; // The amount of reward claimed by the user.
    }

    struct PoolInfo {
        address tokenAddress;
        address rewardTokenAddress;
        uint256 maxPoolSize; 
        uint256 currentPoolSize;
        uint256 maxContribution;
        uint256 minContribution;
        uint256 apy; // it is in 1000 times, so 1000 means 100%
        uint256 emergencyFees; // it is the fees in percentage, final fees is emergencyFees/1000
        uint256 minLockDays;
        uint256 totalRewardsClaimed; // total rewards claimed by the users
        bool poolType; // true for public staking, false for whitelist staking
        bool poolActive;
    }

    // Info of each pool.
    PoolInfo[] public poolInfo;
    uint256 [] public rewardTimes;
    bool lock_= false;

    uint256 public totalRewardsClaimed = 0;
    // Info of each user that stakes tokens.
    mapping (uint256 => mapping (address => UserInfo)) public userInfo;
    mapping (uint256 => mapping (address => bool)) public whitelistedAddress;
    mapping (uint256 => uint256) public rewardAmount;
    mapping (uint256 => uint256) public rewardCurrentPoolSize;

    event Deposit(address indexed user, uint256 indexed pid, uint256 amount);
    event Withdraw(address indexed user, uint256 indexed pid, uint256 amount);
    event EmergencyWithdraw(address indexed user, uint256 indexed pid, uint256 amount);


    constructor (address _wallet) {
        require(_wallet != address(0), "Invalid wallet address");
        tokenWallet = _wallet;
    }


    modifier lock {
        require(!lock_, "Process is locked");
        lock_ = true;
        _;
        lock_ = false;
    }

    function poolLength() public view returns (uint256) {
        return poolInfo.length;
    }

    function addPool (address _tokenAddress, address _rewardTokenAddress, uint256 _maxPoolSize, uint256 _maxContribution,uint256 _emergencyFee, uint256 _minContribution, uint256 _apy, uint256 _minLockDays, bool _poolType, bool _poolActive) public onlyOwner {
        poolInfo.push(PoolInfo({
            tokenAddress: _tokenAddress,
            rewardTokenAddress: _rewardTokenAddress,
            maxPoolSize: _maxPoolSize,
            currentPoolSize: 0,
            minContribution: _minContribution,
            maxContribution: _maxContribution,
            apy: _apy,
            emergencyFees: _emergencyFee,
            minLockDays: _minLockDays,
            poolType: _poolType,
            poolActive: _poolActive,
            totalRewardsClaimed: 0
        }));
    }

    function updateMaxPoolSize (uint256 _pid, uint256 _maxPoolSize) public onlyOwner{
        require (_pid < poolLength(), "Invalid pool ID");
        require (_maxPoolSize >= poolInfo[_pid].currentPoolSize, "Cannot reduce the max size below the current pool size");
        poolInfo[_pid].maxPoolSize = _maxPoolSize;
    }

    function updateMaxContribution (uint256 _pid, uint256 _maxContribution) public onlyOwner{
        require (_pid < poolLength(), "Invalid pool ID");
        poolInfo[_pid].maxContribution = _maxContribution;
    }

    function updateEmergencyFees (uint256 _pid, uint256 _emergencyFees) public onlyOwner {
        require (_pid < poolLength(), "Invalid pool ID");
        if (poolInfo[_pid].currentPoolSize > 0){
            require (_emergencyFees <= poolInfo[_pid].emergencyFees, "You can't increase the emergency fees when people started staking");
        }
        poolInfo[_pid].emergencyFees = _emergencyFees;
    }

    function updateRewardToken(address _rewardTokenAddress, uint256 _pid) public onlyOwner {
        require (_pid < poolLength(), "Invalid pool ID");
        poolInfo[_pid].rewardTokenAddress = _rewardTokenAddress;
    }

    function updateToken(address _tokenAddress, uint256 _pid) public onlyOwner {
        require (_pid < poolLength(), "Invalid pool ID");
        poolInfo[_pid].tokenAddress = _tokenAddress;
    }

    function updateTokenWallet(address _wallet) public onlyOwner {
        require (_wallet != address(0), "Invalid wallet address");
        tokenWallet = _wallet;
    }

    function updateMinLockDays (uint256 _pid, uint256 _lockDays) public onlyOwner {
        require (_pid < poolLength(), "Invalid pool ID");
        require (poolInfo[_pid].currentPoolSize == 0, "Cannot change lock time after people started staking");
        poolInfo[_pid].minLockDays = _lockDays;
    }

    function updateApy (uint256 _pid, uint256 _apy) public onlyOwner {
        require (_pid < poolLength(), "Invalid pool ID");
        poolInfo[_pid].apy = _apy;
    }

    function updatePoolType (uint256 _pid, bool _poolType) public onlyOwner {
        require (_pid < poolLength(), "Invalid pool ID");
        poolInfo[_pid].poolType = _poolType;
    }

    function updatePoolActive (uint256 _pid, bool _poolActive) public onlyOwner {
        require (_pid < poolLength(), "Invalid pool ID");
        poolInfo[_pid].poolActive = _poolActive;
    }

    function updateMinContribution (uint256 _pid, uint256 _minContribution) public onlyOwner {
        require (_pid < poolLength(), "Invalid pool ID");
        poolInfo[_pid].minContribution = _minContribution;
    }

    function addWhitelist (uint256 _pid, address [] memory _whitelistAddresses) public onlyOwner {
        require (_pid < poolLength(), "Invalid pool ID");
        uint256 length = _whitelistAddresses.length;
        require (length<= 200, "Can add only 200 wl at a time");
        for (uint256 i = 0; i < length; i++){
            address _whitelistAddress = _whitelistAddresses[i];
            whitelistedAddress[_pid][_whitelistAddress] = true;
        }
    }

    function addReward (uint256 _pid, uint256 _amount) public onlyOwner {
        rewardTimes.push(block.timestamp);
        rewardAmount[block.timestamp] = _amount;
        rewardCurrentPoolSize[block.timestamp] = poolInfo[_pid].currentPoolSize;
        address _rewardTokenAddress = poolInfo[_pid].rewardTokenAddress;
        IBEP20 rewardToken = IBEP20 (_rewardTokenAddress);
        bool success = rewardToken.transferFrom(msg.sender, tokenWallet, _amount);
        require(success, "Transfer failed");
    }

    function emergencyLock (bool _lock) public onlyOwner {
        lock_ = _lock;
    }

    function stakeTokens (uint256 _pid, uint256 _amount) public lock {
        require (_pid < poolLength(), "Invalid pool ID");
        require (poolInfo[_pid].poolActive, "Pool is not active");
        require (_amount >= (userInfo[_pid][msg.sender].amount).add(poolInfo[_pid].minContribution), "Amount is less than min contribution");
        require (poolInfo[_pid].currentPoolSize.add(_amount) <= poolInfo[_pid].maxPoolSize, "Staking exceeds max pool size");
        require ((userInfo[_pid][msg.sender].amount).add(_amount) <= poolInfo[_pid].maxContribution , "Max Contribution exceeds");
        
        if (poolInfo[_pid].poolType == false){
            require (whitelistedAddress[_pid][msg.sender], "You are not whitelisted for this pool");
        }

        // Sending the claimable tokens to the user
        if (claimableRewards(_pid, msg.sender) > 0){
            claimRewards(_pid);
        }

        address _tokenAddress = poolInfo[_pid].tokenAddress;
        IBEP20 token = IBEP20 (_tokenAddress);
        bool success = token.transferFrom(msg.sender, tokenWallet, _amount);
        require (success, "Transfer From failed. Please approve the token");

        poolInfo[_pid].currentPoolSize = (poolInfo[_pid].currentPoolSize).add(_amount);
        uint256 _stakingTime = block.timestamp; 
        _amount = _amount.add(userInfo[_pid][msg.sender].amount);
        uint256 _rewardClaimed = 0;
        userInfo[_pid][msg.sender] = UserInfo ({
            amount: _amount,
            stakingTime: _stakingTime,
            rewardClaimed: _rewardClaimed
        });
    }

    function claimableRewards (uint256 _pid, address _user) public view returns (uint256) {
        require (_pid < poolLength(), "Invalid pool ID");

        uint256 _stakingTime = userInfo[_pid][_user].stakingTime;
        uint256 lockDays = (block.timestamp - _stakingTime) / 1 days;
        if(lockDays < poolInfo[_pid].minLockDays) return 0;
        if (userInfo[_pid][_user].amount == 0) return 0;

        uint256 _claimableReward = 0;
        for (uint256 i = 0; i < rewardTimes.length; i++){
            uint256 _rewardTime = rewardTimes[i];
            uint256 _rewardAmount = rewardAmount[_rewardTime];
            uint256 _rewardCurrentPoolSize = rewardCurrentPoolSize[_rewardTime];
            if (_rewardTime > _stakingTime){
                uint256 _refundValue = ((userInfo[_pid][_user].amount * _rewardAmount) / (_rewardCurrentPoolSize));
                _claimableReward = _claimableReward.add(_refundValue);
            }
        }
        if (userInfo[_pid][_user].rewardClaimed >= _claimableReward) return 0;
        return _claimableReward - userInfo[_pid][_user].rewardClaimed;
    }

    function claimableNativeRewards (uint256 _pid, address _user) public view returns (uint256) {
        require (_pid < poolLength(), "Invalid pool ID");

        uint256 lockDays = (block.timestamp - userInfo[_pid][_user].stakingTime) / 1 days;
        uint256 _refundValue = ((userInfo[_pid][_user].amount *  poolInfo[_pid].apy * lockDays) / (1000 * 365));
        return _refundValue;
    }

    function unstakeTokens (uint256 _pid) public lock {
        require (_pid < poolLength(), "Invalid pool ID");
        require (userInfo[_pid][msg.sender].amount > 0 , "You don't have any staked tokens");
        require (userInfo[_pid][msg.sender].stakingTime > 0 , "You don't have any staked tokens");
        // check the min lock days is passed or not
        uint256 lockDays = (block.timestamp - userInfo[_pid][msg.sender].stakingTime) / 1 days;
        require (lockDays >= poolInfo[_pid].minLockDays, "You can't unstake before min lock days");
        
        address _tokenAddress = poolInfo[_pid].tokenAddress;
        IBEP20 token = IBEP20 (_tokenAddress);
        address _rewardTokenAddress = poolInfo[_pid].rewardTokenAddress;
        IBEP20 rewardToken = IBEP20 (_rewardTokenAddress);
        uint256 _amount = userInfo[_pid][msg.sender].amount;

        uint256 _refundValue = claimableRewards(_pid, msg.sender);
        uint256 _nativeReward = claimableNativeRewards(_pid, msg.sender);
        userInfo[_pid][msg.sender].rewardClaimed += _refundValue;
        poolInfo[_pid].currentPoolSize = (poolInfo[_pid].currentPoolSize).sub(userInfo[_pid][msg.sender].amount);
        poolInfo[_pid].totalRewardsClaimed += _refundValue;
        userInfo[_pid][msg.sender].amount = 0;
        userInfo[_pid][msg.sender].rewardClaimed = 0;

        bool success1 = token.transferFrom(tokenWallet,msg.sender, _amount);
        bool success2 = token.transferFrom(tokenWallet,msg.sender, _nativeReward);
        bool success3 = rewardToken.transferFrom(tokenWallet,msg.sender, _refundValue);
        require(success1 && success2 && success3, "Transfer failed");
    }

    function claimRewards (uint256 _pid) public lock {
        require (_pid < poolLength(), "Invalid pool ID");
        require (userInfo[_pid][msg.sender].amount > 0 , "You don't have any staked tokens");
        require (userInfo[_pid][msg.sender].stakingTime > 0 , "You don't have any staked tokens");

        address _rewardTokenAddress = poolInfo[_pid].rewardTokenAddress;
        IBEP20 rewardToken = IBEP20 (_rewardTokenAddress);
        uint256 _refundValue = claimableRewards(_pid, msg.sender);
        require(_refundValue > 0, "No rewards to claim"); // check if there is any reward to claim
        userInfo[_pid][msg.sender].rewardClaimed += _refundValue;
        poolInfo[_pid].totalRewardsClaimed += _refundValue;
        bool success = rewardToken.transferFrom(tokenWallet,msg.sender, _refundValue);
        require(success, "Transfer failed");
    }

    // emergency withdraw function
    function emergencyWithdraw (uint256 _pid) public lock {
        require (_pid < poolLength(), "Invalid pool ID");
        require (userInfo[_pid][msg.sender].amount > 0 , "You don't have any staked tokens");
        require (userInfo[_pid][msg.sender].stakingTime > 0 , "You don't have any staked tokens");

        address _tokenAddress = poolInfo[_pid].tokenAddress;
        IBEP20 token = IBEP20 (_tokenAddress);
        uint256 _amount = userInfo[_pid][msg.sender].amount;
        userInfo[_pid][msg.sender].amount = 0;
        userInfo[_pid][msg.sender].rewardClaimed = 0;
        poolInfo[_pid].currentPoolSize = (poolInfo[_pid].currentPoolSize).sub(_amount);

        uint256 afterDeductAmount = _amount.sub((_amount * poolInfo[_pid].emergencyFees) / 1000);
        bool success = token.transferFrom(tokenWallet,msg.sender, afterDeductAmount);
        require(success, "Transfer failed");
    }

    // this function is to withdraw BNB sent to this address by mistake
    function withdrawEth () external onlyOwner returns (bool) {
        uint256 balance = address(this).balance;
        (bool success, ) = payable(msg.sender).call{
            value: balance
        }("");
        return success;
    }

    // this function is to withdraw BEP20 tokens sent to this address by mistake
    function withdrawBEP20 (address _tokenAddress) external onlyOwner returns (bool) {
        IBEP20 token = IBEP20(_tokenAddress);
        uint256 balance = token.balanceOf(address(this));
        bool success = token.transfer(msg.sender, balance);
        return success;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_wallet","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"uint256","name":"pid","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Deposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"uint256","name":"pid","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"EmergencyWithdraw","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"}],"name":"OwnershipRenounced","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"}],"name":"TransferOwnerShip","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"uint256","name":"pid","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Withdraw","type":"event"},{"inputs":[{"internalType":"address","name":"_tokenAddress","type":"address"},{"internalType":"address","name":"_rewardTokenAddress","type":"address"},{"internalType":"uint256","name":"_maxPoolSize","type":"uint256"},{"internalType":"uint256","name":"_maxContribution","type":"uint256"},{"internalType":"uint256","name":"_emergencyFee","type":"uint256"},{"internalType":"uint256","name":"_minContribution","type":"uint256"},{"internalType":"uint256","name":"_apy","type":"uint256"},{"internalType":"uint256","name":"_minLockDays","type":"uint256"},{"internalType":"bool","name":"_poolType","type":"bool"},{"internalType":"bool","name":"_poolActive","type":"bool"}],"name":"addPool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"addReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"},{"internalType":"address[]","name":"_whitelistAddresses","type":"address[]"}],"name":"addWhitelist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"}],"name":"claimRewards","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"},{"internalType":"address","name":"_user","type":"address"}],"name":"claimableNativeRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"},{"internalType":"address","name":"_user","type":"address"}],"name":"claimableRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_lock","type":"bool"}],"name":"emergencyLock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"}],"name":"emergencyWithdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"poolInfo","outputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"address","name":"rewardTokenAddress","type":"address"},{"internalType":"uint256","name":"maxPoolSize","type":"uint256"},{"internalType":"uint256","name":"currentPoolSize","type":"uint256"},{"internalType":"uint256","name":"maxContribution","type":"uint256"},{"internalType":"uint256","name":"minContribution","type":"uint256"},{"internalType":"uint256","name":"apy","type":"uint256"},{"internalType":"uint256","name":"emergencyFees","type":"uint256"},{"internalType":"uint256","name":"minLockDays","type":"uint256"},{"internalType":"uint256","name":"totalRewardsClaimed","type":"uint256"},{"internalType":"bool","name":"poolType","type":"bool"},{"internalType":"bool","name":"poolActive","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"poolLength","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"rewardAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"rewardCurrentPoolSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"rewardTimes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"stakeTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"tokenWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalRewardsClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"}],"name":"unstakeTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"},{"internalType":"uint256","name":"_apy","type":"uint256"}],"name":"updateApy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"},{"internalType":"uint256","name":"_emergencyFees","type":"uint256"}],"name":"updateEmergencyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"},{"internalType":"uint256","name":"_maxContribution","type":"uint256"}],"name":"updateMaxContribution","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"},{"internalType":"uint256","name":"_maxPoolSize","type":"uint256"}],"name":"updateMaxPoolSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"},{"internalType":"uint256","name":"_minContribution","type":"uint256"}],"name":"updateMinContribution","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"},{"internalType":"uint256","name":"_lockDays","type":"uint256"}],"name":"updateMinLockDays","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"},{"internalType":"bool","name":"_poolActive","type":"bool"}],"name":"updatePoolActive","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"},{"internalType":"bool","name":"_poolType","type":"bool"}],"name":"updatePoolType","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_rewardTokenAddress","type":"address"},{"internalType":"uint256","name":"_pid","type":"uint256"}],"name":"updateRewardToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenAddress","type":"address"},{"internalType":"uint256","name":"_pid","type":"uint256"}],"name":"updateToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_wallet","type":"address"}],"name":"updateTokenWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"userInfo","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"stakingTime","type":"uint256"},{"internalType":"uint256","name":"rewardClaimed","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"whitelistedAddress","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenAddress","type":"address"}],"name":"withdrawBEP20","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawEth","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}]

60806040526000600460006101000a81548160ff02191690831515021790555060006005553480156200003157600080fd5b506040516200576f3803806200576f8339818101604052810190620000579190620001bb565b336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160362000109576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000100906200024e565b60405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505062000270565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620001838262000156565b9050919050565b620001958162000176565b8114620001a157600080fd5b50565b600081519050620001b5816200018a565b92915050565b600060208284031215620001d457620001d362000151565b5b6000620001e484828501620001a4565b91505092915050565b600082825260208201905092915050565b7f496e76616c69642077616c6c6574206164647265737300000000000000000000600082015250565b600062000236601683620001ed565b91506200024382620001fe565b602082019050919050565b60006020820190508181036000830152620002698162000227565b9050919050565b6154ef80620002806000396000f3fe608060405234801561001057600080fd5b50600436106102115760003560e01c806376f2639811610125578063a7a93ea9116100ad578063bff99c6c1161007c578063bff99c6c14610615578063e277136114610633578063e27f72711461064f578063ea0edf781461066b578063f2fde38b1461068757610211565b8063a7a93ea91461057d578063aa0ca17c146105ad578063ba82c897146105c9578063bd095c9e146105e557610211565b806393f1a40b116100f457806393f1a40b146104c357806394cab519146104f5578063a0ef91df14610525578063a34b0f7614610543578063a569e3671461056157610211565b806376f26398146104515780638aa1e44e1461046d5780638b20e52a146104895780638da5cb5b146104a557610211565b80633670cc17116101a8578063556ada4711610177578063556ada47146103c357806357fafbf2146103df578063608e4dd01461040f578063715018a61461042b57806375c93bb91461043557610211565b80633670cc17146103535780633b7b61881461036f578063459f40e31461038b5780635312ea8e146103a757610211565b80631526fe27116101e45780631526fe27146102b05780632649a774146102eb57806328eb423f1461031b5780632bce9e7b1461033757610211565b8063047e408614610216578063081e3eda146102465780630962ef79146102645780630f00f3bd14610280575b600080fd5b610230600480360381019061022b91906141a6565b6106a3565b60405161023d91906141ee565b60405180910390f35b61024e610844565b60405161025b9190614222565b60405180910390f35b61027e60048036038101906102799190614269565b610851565b005b61029a60048036038101906102959190614296565b610c7f565b6040516102a791906141ee565b60405180910390f35b6102ca60048036038101906102c59190614269565b610cae565b6040516102e29c9b9a999897969594939291906142e5565b60405180910390f35b61030560048036038101906103009190614296565b610d78565b6040516103129190614222565b60405180910390f35b6103356004803603810190610330919061439f565b610ee0565b005b610351600480360381019061034c91906143df565b610fe5565b005b61036d6004803603810190610368919061444b565b611124565b005b6103896004803603810190610384919061439f565b61123c565b005b6103a560048036038101906103a0919061439f565b611948565b005b6103c160048036038101906103bc9190614269565b611ab5565b005b6103dd60048036038101906103d8919061439f565b611fac565b005b6103f960048036038101906103f49190614269565b6120b1565b6040516104069190614222565b60405180910390f35b61042960048036038101906104249190614269565b6120c9565b005b61043361290d565b005b61044f600480360381019061044a919061439f565b612a41565b005b61046b6004803603810190610466919061448b565b612c89565b005b610487600480360381019061048291906146c3565b612ef6565b005b6104a3600480360381019061049e919061439f565b6130c4565b005b6104ad6131c9565b6040516104ba919061471f565b60405180910390f35b6104dd60048036038101906104d89190614296565b6131f2565b6040516104ec9392919061473a565b60405180910390f35b61050f600480360381019061050a9190614269565b613229565b60405161051c9190614222565b60405180910390f35b61052d613241565b60405161053a91906141ee565b60405180910390f35b61054b61334b565b6040516105589190614222565b60405180910390f35b61057b60048036038101906105769190614771565b613351565b005b61059760048036038101906105929190614269565b6133fc565b6040516105a49190614222565b60405180910390f35b6105c760048036038101906105c291906141a6565b613420565b005b6105e360048036038101906105de91906143df565b613561565b005b6105ff60048036038101906105fa9190614296565b6136a0565b60405161060c9190614222565b60405180910390f35b61061d6139d8565b60405161062a919061471f565b60405180910390f35b61064d6004803603810190610648919061444b565b6139fe565b005b6106696004803603810190610664919061439f565b613b16565b005b6106856004803603810190610680919061439f565b613cb2565b005b6106a1600480360381019061069c91906141a6565b613e1f565b005b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610734576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161072b906147fb565b60405180910390fd5b600082905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610774919061471f565b602060405180830381865afa158015610791573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107b59190614830565b905060008273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33846040518363ffffffff1660e01b81526004016107f492919061485d565b6020604051808303816000875af1158015610813573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610837919061489b565b9050809350505050919050565b6000600280549050905090565b600460009054906101000a900460ff16156108a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161089890614914565b60405180910390fd5b6001600460006101000a81548160ff0219169083151502179055506108c4610844565b8110610905576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108fc90614980565b60405180910390fd5b60006006600083815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001541161099b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610992906149ec565b60405180910390fd5b60006006600083815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015411610a31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a28906149ec565b60405180910390fd5b600060028281548110610a4757610a46614a0c565b5b90600052602060002090600b020160010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060008190506000610a8c84336136a0565b905060008111610ad1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ac890614a87565b60405180910390fd5b806006600086815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206002016000828254610b349190614ad6565b925050819055508060028581548110610b5057610b4f614a0c565b5b90600052602060002090600b02016009016000828254610b709190614ad6565b9250508190555060008273ffffffffffffffffffffffffffffffffffffffff166323b872dd600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1633856040518463ffffffff1660e01b8152600401610bd893929190614b0a565b6020604051808303816000875af1158015610bf7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c1b919061489b565b905080610c5d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c5490614b8d565b60405180910390fd5b505050506000600460006101000a81548160ff02191690831515021790555050565b60076020528160005260406000206020528060005260406000206000915091509054906101000a900460ff1681565b60028181548110610cbe57600080fd5b90600052602060002090600b02016000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169080600201549080600301549080600401549080600501549080600601549080600701549080600801549080600901549080600a0160009054906101000a900460ff169080600a0160019054906101000a900460ff1690508c565b6000610d82610844565b8310610dc3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dba90614980565b60405180910390fd5b6000620151806006600086815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015442610e289190614bad565b610e329190614c10565b90506000620591c88260028781548110610e4f57610e4e614a0c565b5b90600052602060002090600b0201600601546006600089815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154610ebf9190614c41565b610ec99190614c41565b610ed39190614c10565b9050809250505092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610f6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f65906147fb565b60405180910390fd5b610f76610844565b8210610fb7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fae90614980565b60405180910390fd5b8060028381548110610fcc57610fcb614a0c565b5b90600052602060002090600b0201600601819055505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611073576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161106a906147fb565b60405180910390fd5b61107b610844565b81106110bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110b390614980565b60405180910390fd5b81600282815481106110d1576110d0614a0c565b5b90600052602060002090600b020160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146111b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111a9906147fb565b60405180910390fd5b6111ba610844565b82106111fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111f290614980565b60405180910390fd5b80600283815481106112105761120f614a0c565b5b90600052602060002090600b0201600a0160016101000a81548160ff0219169083151502179055505050565b600460009054906101000a900460ff161561128c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128390614914565b60405180910390fd5b6001600460006101000a81548160ff0219169083151502179055506112af610844565b82106112f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112e790614980565b60405180910390fd5b6002828154811061130457611303614a0c565b5b90600052602060002090600b0201600a0160019054906101000a900460ff16611362576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135990614ccf565b60405180910390fd5b6113ed6002838154811061137957611378614a0c565b5b90600052602060002090600b0201600501546006600085815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154613efc90919063ffffffff16565b81101561142f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142690614d61565b60405180910390fd5b6002828154811061144357611442614a0c565b5b90600052602060002090600b02016002015461148d826002858154811061146d5761146c614a0c565b5b90600052602060002090600b020160030154613efc90919063ffffffff16565b11156114ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114c590614dcd565b60405180910390fd5b600282815481106114e2576114e1614a0c565b5b90600052602060002090600b02016004015461155a826006600086815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154613efc90919063ffffffff16565b111561159b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159290614e39565b60405180910390fd5b60001515600283815481106115b3576115b2614a0c565b5b90600052602060002090600b0201600a0160009054906101000a900460ff16151503611677576007600083815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611676576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161166d90614ecb565b60405180910390fd5b5b600061168383336136a0565b11156116935761169282610851565b5b6000600283815481106116a9576116a8614a0c565b5b90600052602060002090600b020160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600081905060008173ffffffffffffffffffffffffffffffffffffffff166323b872dd33600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16876040518463ffffffff1660e01b815260040161174393929190614b0a565b6020604051808303816000875af1158015611762573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611786919061489b565b9050806117c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117bf90614f5d565b60405180910390fd5b61180084600287815481106117e0576117df614a0c565b5b90600052602060002090600b020160030154613efc90919063ffffffff16565b6002868154811061181457611813614a0c565b5b90600052602060002090600b02016003018190555060004290506118946006600088815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015486613efc90919063ffffffff16565b945060006040518060600160405280878152602001838152602001828152506006600089815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000155602082015181600101556040820151816002015590505050505050506000600460006101000a81548160ff0219169083151502179055505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146119d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119cd906147fb565b60405180910390fd5b6119de610844565b8210611a1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a1690614980565b60405180910390fd5b600060028381548110611a3557611a34614a0c565b5b90600052602060002090600b02016003015414611a87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a7e90614fef565b60405180910390fd5b8060028381548110611a9c57611a9b614a0c565b5b90600052602060002090600b0201600801819055505050565b600460009054906101000a900460ff1615611b05576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611afc90614914565b60405180910390fd5b6001600460006101000a81548160ff021916908315150217905550611b28610844565b8110611b69576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b6090614980565b60405180910390fd5b60006006600083815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015411611bff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bf6906149ec565b60405180910390fd5b60006006600083815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015411611c95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c8c906149ec565b60405180910390fd5b600060028281548110611cab57611caa614a0c565b5b90600052602060002090600b020160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600081905060006006600085815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154905060006006600086815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018190555060006006600086815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020181905550611e268160028681548110611e0657611e05614a0c565b5b90600052602060002090600b020160030154613f5a90919063ffffffff16565b60028581548110611e3a57611e39614a0c565b5b90600052602060002090600b0201600301819055506000611ea16103e860028781548110611e6b57611e6a614a0c565b5b90600052602060002090600b02016007015484611e889190614c41565b611e929190614c10565b83613f5a90919063ffffffff16565b905060008373ffffffffffffffffffffffffffffffffffffffff166323b872dd600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1633856040518463ffffffff1660e01b8152600401611f0493929190614b0a565b6020604051808303816000875af1158015611f23573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f47919061489b565b905080611f89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f8090614b8d565b60405180910390fd5b50505050506000600460006101000a81548160ff02191690831515021790555050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461203a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612031906147fb565b60405180910390fd5b612042610844565b8210612083576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161207a90614980565b60405180910390fd5b806002838154811061209857612097614a0c565b5b90600052602060002090600b0201600401819055505050565b60086020528060005260406000206000915090505481565b600460009054906101000a900460ff1615612119576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161211090614914565b60405180910390fd5b6001600460006101000a81548160ff02191690831515021790555061213c610844565b811061217d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161217490614980565b60405180910390fd5b60006006600083815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015411612213576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161220a906149ec565b60405180910390fd5b60006006600083815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010154116122a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122a0906149ec565b60405180910390fd5b6000620151806006600084815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101544261230e9190614bad565b6123189190614c10565b90506002828154811061232e5761232d614a0c565b5b90600052602060002090600b020160080154811015612382576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161237990615081565b60405180910390fd5b60006002838154811061239857612397614a0c565b5b90600052602060002090600b020160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060008190506000600285815481106123e7576123e6614a0c565b5b90600052602060002090600b020160010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600081905060006006600088815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001549050600061248488336136a0565b905060006124928933610d78565b905081600660008b815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160008282546124f79190614ad6565b92505081905550612589600660008b815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015460028b8154811061256957612568614a0c565b5b90600052602060002090600b020160030154613f5a90919063ffffffff16565b60028a8154811061259d5761259c614a0c565b5b90600052602060002090600b0201600301819055508160028a815481106125c7576125c6614a0c565b5b90600052602060002090600b020160090160008282546125e79190614ad6565b925050819055506000600660008b815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055506000600660008b815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206002018190555060008673ffffffffffffffffffffffffffffffffffffffff166323b872dd600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1633876040518463ffffffff1660e01b815260040161270193929190614b0a565b6020604051808303816000875af1158015612720573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612744919061489b565b905060008773ffffffffffffffffffffffffffffffffffffffff166323b872dd600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1633866040518463ffffffff1660e01b81526004016127a793929190614b0a565b6020604051808303816000875af11580156127c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127ea919061489b565b905060008673ffffffffffffffffffffffffffffffffffffffff166323b872dd600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1633886040518463ffffffff1660e01b815260040161284d93929190614b0a565b6020604051808303816000875af115801561286c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612890919061489b565b905082801561289c5750815b80156128a55750805b6128e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128db90614b8d565b60405180910390fd5b50505050505050505050506000600460006101000a81548160ff02191690831515021790555050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461299b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612992906147fb565b60405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482060405160405180910390a260008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612acf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ac6906147fb565b60405180910390fd5b600342908060018154018082558091505060019003906000526020600020016000909190919091505580600860004281526020019081526020016000208190555060028281548110612b2457612b23614a0c565b5b90600052602060002090600b0201600301546009600042815260200190815260200160002081905550600060028381548110612b6357612b62614a0c565b5b90600052602060002090600b020160010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600081905060008173ffffffffffffffffffffffffffffffffffffffff166323b872dd33600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16876040518463ffffffff1660e01b8152600401612bfd93929190614b0a565b6020604051808303816000875af1158015612c1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c40919061489b565b905080612c82576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c7990614b8d565b60405180910390fd5b5050505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612d17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d0e906147fb565b60405180910390fd5b60026040518061018001604052808c73ffffffffffffffffffffffffffffffffffffffff1681526020018b73ffffffffffffffffffffffffffffffffffffffff1681526020018a81526020016000815260200189815260200187815260200186815260200188815260200185815260200160008152602001841515815260200183151581525090806001815401808255809150506001900390600052602060002090600b020160009091909190915060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060408201518160020155606082015181600301556080820151816004015560a0820151816005015560c0820151816006015560e082015181600701556101008201518160080155610120820151816009015561014082015181600a0160006101000a81548160ff02191690831515021790555061016082015181600a0160016101000a81548160ff021916908315150217905550505050505050505050505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612f84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f7b906147fb565b60405180910390fd5b612f8c610844565b8210612fcd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fc490614980565b60405180910390fd5b60008151905060c8811115613017576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161300e906150ed565b60405180910390fd5b60005b818110156130be57600083828151811061303757613036614a0c565b5b6020026020010151905060016007600087815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505080806130b69061510d565b91505061301a565b50505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614613152576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613149906147fb565b60405180910390fd5b61315a610844565b821061319b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161319290614980565b60405180910390fd5b80600283815481106131b0576131af614a0c565b5b90600052602060002090600b0201600501819055505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6006602052816000526040600020602052806000526040600020600091509150508060000154908060010154908060020154905083565b60096020528060005260406000206000915090505481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146132d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132c9906147fb565b60405180910390fd5b600047905060003373ffffffffffffffffffffffffffffffffffffffff16826040516132fd90615186565b60006040518083038185875af1925050503d806000811461333a576040519150601f19603f3d011682016040523d82523d6000602084013e61333f565b606091505b50509050809250505090565b60055481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146133df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133d6906147fb565b60405180910390fd5b80600460006101000a81548160ff02191690831515021790555050565b6003818154811061340c57600080fd5b906000526020600020016000915090505481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146134ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134a5906147fb565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361351d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613514906151e7565b60405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146135ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135e6906147fb565b60405180910390fd5b6135f7610844565b8110613638576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161362f90614980565b60405180910390fd5b816002828154811061364d5761364c614a0c565b5b90600052602060002090600b020160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b60006136aa610844565b83106136eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016136e290614980565b60405180910390fd5b60006006600085815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010154905060006201518082426137559190614bad565b61375f9190614c10565b90506002858154811061377557613774614a0c565b5b90600052602060002090600b020160080154811015613799576000925050506139d2565b60006006600087815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154036137ff576000925050506139d2565b6000805b6003805490508110156139065760006003828154811061382657613825614a0c565b5b90600052602060002001549050600060086000838152602001908152602001600020549050600060096000848152602001908152602001600020549050868311156138f05760008183600660008e815260200190815260200160002060008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001546138cd9190614c41565b6138d79190614c10565b90506138ec8187613efc90919063ffffffff16565b9550505b50505080806138fe9061510d565b915050613803565b50806006600088815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201541061396d57600093505050506139d2565b6006600087815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020154816139cc9190614bad565b93505050505b92915050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614613a8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613a83906147fb565b60405180910390fd5b613a94610844565b8210613ad5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613acc90614980565b60405180910390fd5b8060028381548110613aea57613ae9614a0c565b5b90600052602060002090600b0201600a0160006101000a81548160ff0219169083151502179055505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614613ba4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613b9b906147fb565b60405180910390fd5b613bac610844565b8210613bed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613be490614980565b60405180910390fd5b600060028381548110613c0357613c02614a0c565b5b90600052602060002090600b0201600301541115613c845760028281548110613c2f57613c2e614a0c565b5b90600052602060002090600b020160070154811115613c83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613c7a9061529f565b60405180910390fd5b5b8060028381548110613c9957613c98614a0c565b5b90600052602060002090600b0201600701819055505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614613d40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613d37906147fb565b60405180910390fd5b613d48610844565b8210613d89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613d8090614980565b60405180910390fd5b60028281548110613d9d57613d9c614a0c565b5b90600052602060002090600b020160030154811015613df1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613de890615331565b60405180910390fd5b8060028381548110613e0657613e05614a0c565b5b90600052602060002090600b0201600201819055505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614613ead576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613ea4906147fb565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff167fb1eb34684306bcea7f9ed508931dc13b5993c8fdd00fe65c2e4680ae2610a70160405160405180910390a2613ef981613fa4565b50565b6000808284613f0b9190614ad6565b905083811015613f50576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613f479061539d565b60405180910390fd5b8091505092915050565b6000613f9c83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506140d0565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603614013576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161400a90615409565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000838311158290614118576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161410f9190615497565b60405180910390fd5b50600083856141279190614bad565b9050809150509392505050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061417382614148565b9050919050565b61418381614168565b811461418e57600080fd5b50565b6000813590506141a08161417a565b92915050565b6000602082840312156141bc576141bb61413e565b5b60006141ca84828501614191565b91505092915050565b60008115159050919050565b6141e8816141d3565b82525050565b600060208201905061420360008301846141df565b92915050565b6000819050919050565b61421c81614209565b82525050565b60006020820190506142376000830184614213565b92915050565b61424681614209565b811461425157600080fd5b50565b6000813590506142638161423d565b92915050565b60006020828403121561427f5761427e61413e565b5b600061428d84828501614254565b91505092915050565b600080604083850312156142ad576142ac61413e565b5b60006142bb85828601614254565b92505060206142cc85828601614191565b9150509250929050565b6142df81614168565b82525050565b6000610180820190506142fb600083018f6142d6565b614308602083018e6142d6565b614315604083018d614213565b614322606083018c614213565b61432f608083018b614213565b61433c60a083018a614213565b61434960c0830189614213565b61435660e0830188614213565b614364610100830187614213565b614372610120830186614213565b6143806101408301856141df565b61438e6101608301846141df565b9d9c50505050505050505050505050565b600080604083850312156143b6576143b561413e565b5b60006143c485828601614254565b92505060206143d585828601614254565b9150509250929050565b600080604083850312156143f6576143f561413e565b5b600061440485828601614191565b925050602061441585828601614254565b9150509250929050565b614428816141d3565b811461443357600080fd5b50565b6000813590506144458161441f565b92915050565b600080604083850312156144625761446161413e565b5b600061447085828601614254565b925050602061448185828601614436565b9150509250929050565b6000806000806000806000806000806101408b8d0312156144af576144ae61413e565b5b60006144bd8d828e01614191565b9a505060206144ce8d828e01614191565b99505060406144df8d828e01614254565b98505060606144f08d828e01614254565b97505060806145018d828e01614254565b96505060a06145128d828e01614254565b95505060c06145238d828e01614254565b94505060e06145348d828e01614254565b9350506101006145468d828e01614436565b9250506101206145588d828e01614436565b9150509295989b9194979a5092959850565b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6145b88261456f565b810181811067ffffffffffffffff821117156145d7576145d6614580565b5b80604052505050565b60006145ea614134565b90506145f682826145af565b919050565b600067ffffffffffffffff82111561461657614615614580565b5b602082029050602081019050919050565b600080fd5b600061463f61463a846145fb565b6145e0565b9050808382526020820190506020840283018581111561466257614661614627565b5b835b8181101561468b57806146778882614191565b845260208401935050602081019050614664565b5050509392505050565b600082601f8301126146aa576146a961456a565b5b81356146ba84826020860161462c565b91505092915050565b600080604083850312156146da576146d961413e565b5b60006146e885828601614254565b925050602083013567ffffffffffffffff81111561470957614708614143565b5b61471585828601614695565b9150509250929050565b600060208201905061473460008301846142d6565b92915050565b600060608201905061474f6000830186614213565b61475c6020830185614213565b6147696040830184614213565b949350505050565b6000602082840312156147875761478661413e565b5b600061479584828501614436565b91505092915050565b600082825260208201905092915050565b7f4e6f74206f776e65720000000000000000000000000000000000000000000000600082015250565b60006147e560098361479e565b91506147f0826147af565b602082019050919050565b60006020820190508181036000830152614814816147d8565b9050919050565b60008151905061482a8161423d565b92915050565b6000602082840312156148465761484561413e565b5b60006148548482850161481b565b91505092915050565b600060408201905061487260008301856142d6565b61487f6020830184614213565b9392505050565b6000815190506148958161441f565b92915050565b6000602082840312156148b1576148b061413e565b5b60006148bf84828501614886565b91505092915050565b7f50726f63657373206973206c6f636b6564000000000000000000000000000000600082015250565b60006148fe60118361479e565b9150614909826148c8565b602082019050919050565b6000602082019050818103600083015261492d816148f1565b9050919050565b7f496e76616c696420706f6f6c2049440000000000000000000000000000000000600082015250565b600061496a600f8361479e565b915061497582614934565b602082019050919050565b600060208201905081810360008301526149998161495d565b9050919050565b7f596f7520646f6e2774206861766520616e79207374616b656420746f6b656e73600082015250565b60006149d660208361479e565b91506149e1826149a0565b602082019050919050565b60006020820190508181036000830152614a05816149c9565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e6f207265776172647320746f20636c61696d00000000000000000000000000600082015250565b6000614a7160138361479e565b9150614a7c82614a3b565b602082019050919050565b60006020820190508181036000830152614aa081614a64565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000614ae182614209565b9150614aec83614209565b9250828201905080821115614b0457614b03614aa7565b5b92915050565b6000606082019050614b1f60008301866142d6565b614b2c60208301856142d6565b614b396040830184614213565b949350505050565b7f5472616e73666572206661696c65640000000000000000000000000000000000600082015250565b6000614b77600f8361479e565b9150614b8282614b41565b602082019050919050565b60006020820190508181036000830152614ba681614b6a565b9050919050565b6000614bb882614209565b9150614bc383614209565b9250828203905081811115614bdb57614bda614aa7565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614c1b82614209565b9150614c2683614209565b925082614c3657614c35614be1565b5b828204905092915050565b6000614c4c82614209565b9150614c5783614209565b9250828202614c6581614209565b91508282048414831517614c7c57614c7b614aa7565b5b5092915050565b7f506f6f6c206973206e6f74206163746976650000000000000000000000000000600082015250565b6000614cb960128361479e565b9150614cc482614c83565b602082019050919050565b60006020820190508181036000830152614ce881614cac565b9050919050565b7f416d6f756e74206973206c657373207468616e206d696e20636f6e747269627560008201527f74696f6e00000000000000000000000000000000000000000000000000000000602082015250565b6000614d4b60248361479e565b9150614d5682614cef565b604082019050919050565b60006020820190508181036000830152614d7a81614d3e565b9050919050565b7f5374616b696e672065786365656473206d617820706f6f6c2073697a65000000600082015250565b6000614db7601d8361479e565b9150614dc282614d81565b602082019050919050565b60006020820190508181036000830152614de681614daa565b9050919050565b7f4d617820436f6e747269627574696f6e20657863656564730000000000000000600082015250565b6000614e2360188361479e565b9150614e2e82614ded565b602082019050919050565b60006020820190508181036000830152614e5281614e16565b9050919050565b7f596f7520617265206e6f742077686974656c697374656420666f72207468697360008201527f20706f6f6c000000000000000000000000000000000000000000000000000000602082015250565b6000614eb560258361479e565b9150614ec082614e59565b604082019050919050565b60006020820190508181036000830152614ee481614ea8565b9050919050565b7f5472616e736665722046726f6d206661696c65642e20506c656173652061707060008201527f726f76652074686520746f6b656e000000000000000000000000000000000000602082015250565b6000614f47602e8361479e565b9150614f5282614eeb565b604082019050919050565b60006020820190508181036000830152614f7681614f3a565b9050919050565b7f43616e6e6f74206368616e6765206c6f636b2074696d6520616674657220706560008201527f6f706c652073746172746564207374616b696e67000000000000000000000000602082015250565b6000614fd960348361479e565b9150614fe482614f7d565b604082019050919050565b6000602082019050818103600083015261500881614fcc565b9050919050565b7f596f752063616e277420756e7374616b65206265666f7265206d696e206c6f6360008201527f6b20646179730000000000000000000000000000000000000000000000000000602082015250565b600061506b60268361479e565b91506150768261500f565b604082019050919050565b6000602082019050818103600083015261509a8161505e565b9050919050565b7f43616e20616464206f6e6c792032303020776c20617420612074696d65000000600082015250565b60006150d7601d8361479e565b91506150e2826150a1565b602082019050919050565b60006020820190508181036000830152615106816150ca565b9050919050565b600061511882614209565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361514a57615149614aa7565b5b600182019050919050565b600081905092915050565b50565b6000615170600083615155565b915061517b82615160565b600082019050919050565b600061519182615163565b9150819050919050565b7f496e76616c69642077616c6c6574206164647265737300000000000000000000600082015250565b60006151d160168361479e565b91506151dc8261519b565b602082019050919050565b60006020820190508181036000830152615200816151c4565b9050919050565b7f596f752063616e277420696e6372656173652074686520656d657267656e637960008201527f2066656573207768656e2070656f706c652073746172746564207374616b696e60208201527f6700000000000000000000000000000000000000000000000000000000000000604082015250565b600061528960418361479e565b915061529482615207565b606082019050919050565b600060208201905081810360008301526152b88161527c565b9050919050565b7f43616e6e6f742072656475636520746865206d61782073697a652062656c6f7760008201527f207468652063757272656e7420706f6f6c2073697a6500000000000000000000602082015250565b600061531b60368361479e565b9150615326826152bf565b604082019050919050565b6000602082019050818103600083015261534a8161530e565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000615387601b8361479e565b915061539282615351565b602082019050919050565b600060208201905081810360008301526153b68161537a565b9050919050565b7f4f776e65722063616e206e6f7420626520300000000000000000000000000000600082015250565b60006153f360128361479e565b91506153fe826153bd565b602082019050919050565b60006020820190508181036000830152615422816153e6565b9050919050565b600081519050919050565b60005b83811015615452578082015181840152602081019050615437565b60008484015250505050565b600061546982615429565b615473818561479e565b9350615483818560208601615434565b61548c8161456f565b840191505092915050565b600060208201905081810360008301526154b1818461545e565b90509291505056fea264697066735822122034fd75360da210bd47c9967a20db80c846d7263bfd7ac818151a97afa987d94e64736f6c63430008120033000000000000000000000000b11814f6e0a67a928b2f8a0bae32871dcf73d835

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106102115760003560e01c806376f2639811610125578063a7a93ea9116100ad578063bff99c6c1161007c578063bff99c6c14610615578063e277136114610633578063e27f72711461064f578063ea0edf781461066b578063f2fde38b1461068757610211565b8063a7a93ea91461057d578063aa0ca17c146105ad578063ba82c897146105c9578063bd095c9e146105e557610211565b806393f1a40b116100f457806393f1a40b146104c357806394cab519146104f5578063a0ef91df14610525578063a34b0f7614610543578063a569e3671461056157610211565b806376f26398146104515780638aa1e44e1461046d5780638b20e52a146104895780638da5cb5b146104a557610211565b80633670cc17116101a8578063556ada4711610177578063556ada47146103c357806357fafbf2146103df578063608e4dd01461040f578063715018a61461042b57806375c93bb91461043557610211565b80633670cc17146103535780633b7b61881461036f578063459f40e31461038b5780635312ea8e146103a757610211565b80631526fe27116101e45780631526fe27146102b05780632649a774146102eb57806328eb423f1461031b5780632bce9e7b1461033757610211565b8063047e408614610216578063081e3eda146102465780630962ef79146102645780630f00f3bd14610280575b600080fd5b610230600480360381019061022b91906141a6565b6106a3565b60405161023d91906141ee565b60405180910390f35b61024e610844565b60405161025b9190614222565b60405180910390f35b61027e60048036038101906102799190614269565b610851565b005b61029a60048036038101906102959190614296565b610c7f565b6040516102a791906141ee565b60405180910390f35b6102ca60048036038101906102c59190614269565b610cae565b6040516102e29c9b9a999897969594939291906142e5565b60405180910390f35b61030560048036038101906103009190614296565b610d78565b6040516103129190614222565b60405180910390f35b6103356004803603810190610330919061439f565b610ee0565b005b610351600480360381019061034c91906143df565b610fe5565b005b61036d6004803603810190610368919061444b565b611124565b005b6103896004803603810190610384919061439f565b61123c565b005b6103a560048036038101906103a0919061439f565b611948565b005b6103c160048036038101906103bc9190614269565b611ab5565b005b6103dd60048036038101906103d8919061439f565b611fac565b005b6103f960048036038101906103f49190614269565b6120b1565b6040516104069190614222565b60405180910390f35b61042960048036038101906104249190614269565b6120c9565b005b61043361290d565b005b61044f600480360381019061044a919061439f565b612a41565b005b61046b6004803603810190610466919061448b565b612c89565b005b610487600480360381019061048291906146c3565b612ef6565b005b6104a3600480360381019061049e919061439f565b6130c4565b005b6104ad6131c9565b6040516104ba919061471f565b60405180910390f35b6104dd60048036038101906104d89190614296565b6131f2565b6040516104ec9392919061473a565b60405180910390f35b61050f600480360381019061050a9190614269565b613229565b60405161051c9190614222565b60405180910390f35b61052d613241565b60405161053a91906141ee565b60405180910390f35b61054b61334b565b6040516105589190614222565b60405180910390f35b61057b60048036038101906105769190614771565b613351565b005b61059760048036038101906105929190614269565b6133fc565b6040516105a49190614222565b60405180910390f35b6105c760048036038101906105c291906141a6565b613420565b005b6105e360048036038101906105de91906143df565b613561565b005b6105ff60048036038101906105fa9190614296565b6136a0565b60405161060c9190614222565b60405180910390f35b61061d6139d8565b60405161062a919061471f565b60405180910390f35b61064d6004803603810190610648919061444b565b6139fe565b005b6106696004803603810190610664919061439f565b613b16565b005b6106856004803603810190610680919061439f565b613cb2565b005b6106a1600480360381019061069c91906141a6565b613e1f565b005b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610734576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161072b906147fb565b60405180910390fd5b600082905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610774919061471f565b602060405180830381865afa158015610791573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107b59190614830565b905060008273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33846040518363ffffffff1660e01b81526004016107f492919061485d565b6020604051808303816000875af1158015610813573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610837919061489b565b9050809350505050919050565b6000600280549050905090565b600460009054906101000a900460ff16156108a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161089890614914565b60405180910390fd5b6001600460006101000a81548160ff0219169083151502179055506108c4610844565b8110610905576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108fc90614980565b60405180910390fd5b60006006600083815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001541161099b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610992906149ec565b60405180910390fd5b60006006600083815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015411610a31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a28906149ec565b60405180910390fd5b600060028281548110610a4757610a46614a0c565b5b90600052602060002090600b020160010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060008190506000610a8c84336136a0565b905060008111610ad1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ac890614a87565b60405180910390fd5b806006600086815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206002016000828254610b349190614ad6565b925050819055508060028581548110610b5057610b4f614a0c565b5b90600052602060002090600b02016009016000828254610b709190614ad6565b9250508190555060008273ffffffffffffffffffffffffffffffffffffffff166323b872dd600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1633856040518463ffffffff1660e01b8152600401610bd893929190614b0a565b6020604051808303816000875af1158015610bf7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c1b919061489b565b905080610c5d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c5490614b8d565b60405180910390fd5b505050506000600460006101000a81548160ff02191690831515021790555050565b60076020528160005260406000206020528060005260406000206000915091509054906101000a900460ff1681565b60028181548110610cbe57600080fd5b90600052602060002090600b02016000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169080600201549080600301549080600401549080600501549080600601549080600701549080600801549080600901549080600a0160009054906101000a900460ff169080600a0160019054906101000a900460ff1690508c565b6000610d82610844565b8310610dc3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dba90614980565b60405180910390fd5b6000620151806006600086815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015442610e289190614bad565b610e329190614c10565b90506000620591c88260028781548110610e4f57610e4e614a0c565b5b90600052602060002090600b0201600601546006600089815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154610ebf9190614c41565b610ec99190614c41565b610ed39190614c10565b9050809250505092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610f6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f65906147fb565b60405180910390fd5b610f76610844565b8210610fb7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fae90614980565b60405180910390fd5b8060028381548110610fcc57610fcb614a0c565b5b90600052602060002090600b0201600601819055505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611073576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161106a906147fb565b60405180910390fd5b61107b610844565b81106110bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110b390614980565b60405180910390fd5b81600282815481106110d1576110d0614a0c565b5b90600052602060002090600b020160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146111b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111a9906147fb565b60405180910390fd5b6111ba610844565b82106111fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111f290614980565b60405180910390fd5b80600283815481106112105761120f614a0c565b5b90600052602060002090600b0201600a0160016101000a81548160ff0219169083151502179055505050565b600460009054906101000a900460ff161561128c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128390614914565b60405180910390fd5b6001600460006101000a81548160ff0219169083151502179055506112af610844565b82106112f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112e790614980565b60405180910390fd5b6002828154811061130457611303614a0c565b5b90600052602060002090600b0201600a0160019054906101000a900460ff16611362576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135990614ccf565b60405180910390fd5b6113ed6002838154811061137957611378614a0c565b5b90600052602060002090600b0201600501546006600085815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154613efc90919063ffffffff16565b81101561142f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142690614d61565b60405180910390fd5b6002828154811061144357611442614a0c565b5b90600052602060002090600b02016002015461148d826002858154811061146d5761146c614a0c565b5b90600052602060002090600b020160030154613efc90919063ffffffff16565b11156114ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114c590614dcd565b60405180910390fd5b600282815481106114e2576114e1614a0c565b5b90600052602060002090600b02016004015461155a826006600086815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154613efc90919063ffffffff16565b111561159b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159290614e39565b60405180910390fd5b60001515600283815481106115b3576115b2614a0c565b5b90600052602060002090600b0201600a0160009054906101000a900460ff16151503611677576007600083815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611676576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161166d90614ecb565b60405180910390fd5b5b600061168383336136a0565b11156116935761169282610851565b5b6000600283815481106116a9576116a8614a0c565b5b90600052602060002090600b020160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600081905060008173ffffffffffffffffffffffffffffffffffffffff166323b872dd33600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16876040518463ffffffff1660e01b815260040161174393929190614b0a565b6020604051808303816000875af1158015611762573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611786919061489b565b9050806117c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117bf90614f5d565b60405180910390fd5b61180084600287815481106117e0576117df614a0c565b5b90600052602060002090600b020160030154613efc90919063ffffffff16565b6002868154811061181457611813614a0c565b5b90600052602060002090600b02016003018190555060004290506118946006600088815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015486613efc90919063ffffffff16565b945060006040518060600160405280878152602001838152602001828152506006600089815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000155602082015181600101556040820151816002015590505050505050506000600460006101000a81548160ff0219169083151502179055505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146119d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119cd906147fb565b60405180910390fd5b6119de610844565b8210611a1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a1690614980565b60405180910390fd5b600060028381548110611a3557611a34614a0c565b5b90600052602060002090600b02016003015414611a87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a7e90614fef565b60405180910390fd5b8060028381548110611a9c57611a9b614a0c565b5b90600052602060002090600b0201600801819055505050565b600460009054906101000a900460ff1615611b05576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611afc90614914565b60405180910390fd5b6001600460006101000a81548160ff021916908315150217905550611b28610844565b8110611b69576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b6090614980565b60405180910390fd5b60006006600083815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015411611bff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bf6906149ec565b60405180910390fd5b60006006600083815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015411611c95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c8c906149ec565b60405180910390fd5b600060028281548110611cab57611caa614a0c565b5b90600052602060002090600b020160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600081905060006006600085815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154905060006006600086815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018190555060006006600086815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020181905550611e268160028681548110611e0657611e05614a0c565b5b90600052602060002090600b020160030154613f5a90919063ffffffff16565b60028581548110611e3a57611e39614a0c565b5b90600052602060002090600b0201600301819055506000611ea16103e860028781548110611e6b57611e6a614a0c565b5b90600052602060002090600b02016007015484611e889190614c41565b611e929190614c10565b83613f5a90919063ffffffff16565b905060008373ffffffffffffffffffffffffffffffffffffffff166323b872dd600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1633856040518463ffffffff1660e01b8152600401611f0493929190614b0a565b6020604051808303816000875af1158015611f23573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f47919061489b565b905080611f89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f8090614b8d565b60405180910390fd5b50505050506000600460006101000a81548160ff02191690831515021790555050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461203a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612031906147fb565b60405180910390fd5b612042610844565b8210612083576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161207a90614980565b60405180910390fd5b806002838154811061209857612097614a0c565b5b90600052602060002090600b0201600401819055505050565b60086020528060005260406000206000915090505481565b600460009054906101000a900460ff1615612119576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161211090614914565b60405180910390fd5b6001600460006101000a81548160ff02191690831515021790555061213c610844565b811061217d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161217490614980565b60405180910390fd5b60006006600083815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015411612213576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161220a906149ec565b60405180910390fd5b60006006600083815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010154116122a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122a0906149ec565b60405180910390fd5b6000620151806006600084815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101544261230e9190614bad565b6123189190614c10565b90506002828154811061232e5761232d614a0c565b5b90600052602060002090600b020160080154811015612382576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161237990615081565b60405180910390fd5b60006002838154811061239857612397614a0c565b5b90600052602060002090600b020160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060008190506000600285815481106123e7576123e6614a0c565b5b90600052602060002090600b020160010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600081905060006006600088815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001549050600061248488336136a0565b905060006124928933610d78565b905081600660008b815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160008282546124f79190614ad6565b92505081905550612589600660008b815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015460028b8154811061256957612568614a0c565b5b90600052602060002090600b020160030154613f5a90919063ffffffff16565b60028a8154811061259d5761259c614a0c565b5b90600052602060002090600b0201600301819055508160028a815481106125c7576125c6614a0c565b5b90600052602060002090600b020160090160008282546125e79190614ad6565b925050819055506000600660008b815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055506000600660008b815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206002018190555060008673ffffffffffffffffffffffffffffffffffffffff166323b872dd600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1633876040518463ffffffff1660e01b815260040161270193929190614b0a565b6020604051808303816000875af1158015612720573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612744919061489b565b905060008773ffffffffffffffffffffffffffffffffffffffff166323b872dd600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1633866040518463ffffffff1660e01b81526004016127a793929190614b0a565b6020604051808303816000875af11580156127c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127ea919061489b565b905060008673ffffffffffffffffffffffffffffffffffffffff166323b872dd600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1633886040518463ffffffff1660e01b815260040161284d93929190614b0a565b6020604051808303816000875af115801561286c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612890919061489b565b905082801561289c5750815b80156128a55750805b6128e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128db90614b8d565b60405180910390fd5b50505050505050505050506000600460006101000a81548160ff02191690831515021790555050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461299b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612992906147fb565b60405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482060405160405180910390a260008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612acf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ac6906147fb565b60405180910390fd5b600342908060018154018082558091505060019003906000526020600020016000909190919091505580600860004281526020019081526020016000208190555060028281548110612b2457612b23614a0c565b5b90600052602060002090600b0201600301546009600042815260200190815260200160002081905550600060028381548110612b6357612b62614a0c565b5b90600052602060002090600b020160010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600081905060008173ffffffffffffffffffffffffffffffffffffffff166323b872dd33600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16876040518463ffffffff1660e01b8152600401612bfd93929190614b0a565b6020604051808303816000875af1158015612c1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c40919061489b565b905080612c82576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c7990614b8d565b60405180910390fd5b5050505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612d17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d0e906147fb565b60405180910390fd5b60026040518061018001604052808c73ffffffffffffffffffffffffffffffffffffffff1681526020018b73ffffffffffffffffffffffffffffffffffffffff1681526020018a81526020016000815260200189815260200187815260200186815260200188815260200185815260200160008152602001841515815260200183151581525090806001815401808255809150506001900390600052602060002090600b020160009091909190915060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060408201518160020155606082015181600301556080820151816004015560a0820151816005015560c0820151816006015560e082015181600701556101008201518160080155610120820151816009015561014082015181600a0160006101000a81548160ff02191690831515021790555061016082015181600a0160016101000a81548160ff021916908315150217905550505050505050505050505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612f84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f7b906147fb565b60405180910390fd5b612f8c610844565b8210612fcd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fc490614980565b60405180910390fd5b60008151905060c8811115613017576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161300e906150ed565b60405180910390fd5b60005b818110156130be57600083828151811061303757613036614a0c565b5b6020026020010151905060016007600087815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505080806130b69061510d565b91505061301a565b50505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614613152576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613149906147fb565b60405180910390fd5b61315a610844565b821061319b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161319290614980565b60405180910390fd5b80600283815481106131b0576131af614a0c565b5b90600052602060002090600b0201600501819055505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6006602052816000526040600020602052806000526040600020600091509150508060000154908060010154908060020154905083565b60096020528060005260406000206000915090505481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146132d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132c9906147fb565b60405180910390fd5b600047905060003373ffffffffffffffffffffffffffffffffffffffff16826040516132fd90615186565b60006040518083038185875af1925050503d806000811461333a576040519150601f19603f3d011682016040523d82523d6000602084013e61333f565b606091505b50509050809250505090565b60055481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146133df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133d6906147fb565b60405180910390fd5b80600460006101000a81548160ff02191690831515021790555050565b6003818154811061340c57600080fd5b906000526020600020016000915090505481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146134ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134a5906147fb565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361351d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613514906151e7565b60405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146135ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135e6906147fb565b60405180910390fd5b6135f7610844565b8110613638576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161362f90614980565b60405180910390fd5b816002828154811061364d5761364c614a0c565b5b90600052602060002090600b020160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b60006136aa610844565b83106136eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016136e290614980565b60405180910390fd5b60006006600085815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010154905060006201518082426137559190614bad565b61375f9190614c10565b90506002858154811061377557613774614a0c565b5b90600052602060002090600b020160080154811015613799576000925050506139d2565b60006006600087815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154036137ff576000925050506139d2565b6000805b6003805490508110156139065760006003828154811061382657613825614a0c565b5b90600052602060002001549050600060086000838152602001908152602001600020549050600060096000848152602001908152602001600020549050868311156138f05760008183600660008e815260200190815260200160002060008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001546138cd9190614c41565b6138d79190614c10565b90506138ec8187613efc90919063ffffffff16565b9550505b50505080806138fe9061510d565b915050613803565b50806006600088815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201541061396d57600093505050506139d2565b6006600087815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020154816139cc9190614bad565b93505050505b92915050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614613a8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613a83906147fb565b60405180910390fd5b613a94610844565b8210613ad5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613acc90614980565b60405180910390fd5b8060028381548110613aea57613ae9614a0c565b5b90600052602060002090600b0201600a0160006101000a81548160ff0219169083151502179055505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614613ba4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613b9b906147fb565b60405180910390fd5b613bac610844565b8210613bed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613be490614980565b60405180910390fd5b600060028381548110613c0357613c02614a0c565b5b90600052602060002090600b0201600301541115613c845760028281548110613c2f57613c2e614a0c565b5b90600052602060002090600b020160070154811115613c83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613c7a9061529f565b60405180910390fd5b5b8060028381548110613c9957613c98614a0c565b5b90600052602060002090600b0201600701819055505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614613d40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613d37906147fb565b60405180910390fd5b613d48610844565b8210613d89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613d8090614980565b60405180910390fd5b60028281548110613d9d57613d9c614a0c565b5b90600052602060002090600b020160030154811015613df1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613de890615331565b60405180910390fd5b8060028381548110613e0657613e05614a0c565b5b90600052602060002090600b0201600201819055505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614613ead576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613ea4906147fb565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff167fb1eb34684306bcea7f9ed508931dc13b5993c8fdd00fe65c2e4680ae2610a70160405160405180910390a2613ef981613fa4565b50565b6000808284613f0b9190614ad6565b905083811015613f50576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613f479061539d565b60405180910390fd5b8091505092915050565b6000613f9c83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506140d0565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603614013576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161400a90615409565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000838311158290614118576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161410f9190615497565b60405180910390fd5b50600083856141279190614bad565b9050809150509392505050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061417382614148565b9050919050565b61418381614168565b811461418e57600080fd5b50565b6000813590506141a08161417a565b92915050565b6000602082840312156141bc576141bb61413e565b5b60006141ca84828501614191565b91505092915050565b60008115159050919050565b6141e8816141d3565b82525050565b600060208201905061420360008301846141df565b92915050565b6000819050919050565b61421c81614209565b82525050565b60006020820190506142376000830184614213565b92915050565b61424681614209565b811461425157600080fd5b50565b6000813590506142638161423d565b92915050565b60006020828403121561427f5761427e61413e565b5b600061428d84828501614254565b91505092915050565b600080604083850312156142ad576142ac61413e565b5b60006142bb85828601614254565b92505060206142cc85828601614191565b9150509250929050565b6142df81614168565b82525050565b6000610180820190506142fb600083018f6142d6565b614308602083018e6142d6565b614315604083018d614213565b614322606083018c614213565b61432f608083018b614213565b61433c60a083018a614213565b61434960c0830189614213565b61435660e0830188614213565b614364610100830187614213565b614372610120830186614213565b6143806101408301856141df565b61438e6101608301846141df565b9d9c50505050505050505050505050565b600080604083850312156143b6576143b561413e565b5b60006143c485828601614254565b92505060206143d585828601614254565b9150509250929050565b600080604083850312156143f6576143f561413e565b5b600061440485828601614191565b925050602061441585828601614254565b9150509250929050565b614428816141d3565b811461443357600080fd5b50565b6000813590506144458161441f565b92915050565b600080604083850312156144625761446161413e565b5b600061447085828601614254565b925050602061448185828601614436565b9150509250929050565b6000806000806000806000806000806101408b8d0312156144af576144ae61413e565b5b60006144bd8d828e01614191565b9a505060206144ce8d828e01614191565b99505060406144df8d828e01614254565b98505060606144f08d828e01614254565b97505060806145018d828e01614254565b96505060a06145128d828e01614254565b95505060c06145238d828e01614254565b94505060e06145348d828e01614254565b9350506101006145468d828e01614436565b9250506101206145588d828e01614436565b9150509295989b9194979a5092959850565b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6145b88261456f565b810181811067ffffffffffffffff821117156145d7576145d6614580565b5b80604052505050565b60006145ea614134565b90506145f682826145af565b919050565b600067ffffffffffffffff82111561461657614615614580565b5b602082029050602081019050919050565b600080fd5b600061463f61463a846145fb565b6145e0565b9050808382526020820190506020840283018581111561466257614661614627565b5b835b8181101561468b57806146778882614191565b845260208401935050602081019050614664565b5050509392505050565b600082601f8301126146aa576146a961456a565b5b81356146ba84826020860161462c565b91505092915050565b600080604083850312156146da576146d961413e565b5b60006146e885828601614254565b925050602083013567ffffffffffffffff81111561470957614708614143565b5b61471585828601614695565b9150509250929050565b600060208201905061473460008301846142d6565b92915050565b600060608201905061474f6000830186614213565b61475c6020830185614213565b6147696040830184614213565b949350505050565b6000602082840312156147875761478661413e565b5b600061479584828501614436565b91505092915050565b600082825260208201905092915050565b7f4e6f74206f776e65720000000000000000000000000000000000000000000000600082015250565b60006147e560098361479e565b91506147f0826147af565b602082019050919050565b60006020820190508181036000830152614814816147d8565b9050919050565b60008151905061482a8161423d565b92915050565b6000602082840312156148465761484561413e565b5b60006148548482850161481b565b91505092915050565b600060408201905061487260008301856142d6565b61487f6020830184614213565b9392505050565b6000815190506148958161441f565b92915050565b6000602082840312156148b1576148b061413e565b5b60006148bf84828501614886565b91505092915050565b7f50726f63657373206973206c6f636b6564000000000000000000000000000000600082015250565b60006148fe60118361479e565b9150614909826148c8565b602082019050919050565b6000602082019050818103600083015261492d816148f1565b9050919050565b7f496e76616c696420706f6f6c2049440000000000000000000000000000000000600082015250565b600061496a600f8361479e565b915061497582614934565b602082019050919050565b600060208201905081810360008301526149998161495d565b9050919050565b7f596f7520646f6e2774206861766520616e79207374616b656420746f6b656e73600082015250565b60006149d660208361479e565b91506149e1826149a0565b602082019050919050565b60006020820190508181036000830152614a05816149c9565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e6f207265776172647320746f20636c61696d00000000000000000000000000600082015250565b6000614a7160138361479e565b9150614a7c82614a3b565b602082019050919050565b60006020820190508181036000830152614aa081614a64565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000614ae182614209565b9150614aec83614209565b9250828201905080821115614b0457614b03614aa7565b5b92915050565b6000606082019050614b1f60008301866142d6565b614b2c60208301856142d6565b614b396040830184614213565b949350505050565b7f5472616e73666572206661696c65640000000000000000000000000000000000600082015250565b6000614b77600f8361479e565b9150614b8282614b41565b602082019050919050565b60006020820190508181036000830152614ba681614b6a565b9050919050565b6000614bb882614209565b9150614bc383614209565b9250828203905081811115614bdb57614bda614aa7565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614c1b82614209565b9150614c2683614209565b925082614c3657614c35614be1565b5b828204905092915050565b6000614c4c82614209565b9150614c5783614209565b9250828202614c6581614209565b91508282048414831517614c7c57614c7b614aa7565b5b5092915050565b7f506f6f6c206973206e6f74206163746976650000000000000000000000000000600082015250565b6000614cb960128361479e565b9150614cc482614c83565b602082019050919050565b60006020820190508181036000830152614ce881614cac565b9050919050565b7f416d6f756e74206973206c657373207468616e206d696e20636f6e747269627560008201527f74696f6e00000000000000000000000000000000000000000000000000000000602082015250565b6000614d4b60248361479e565b9150614d5682614cef565b604082019050919050565b60006020820190508181036000830152614d7a81614d3e565b9050919050565b7f5374616b696e672065786365656473206d617820706f6f6c2073697a65000000600082015250565b6000614db7601d8361479e565b9150614dc282614d81565b602082019050919050565b60006020820190508181036000830152614de681614daa565b9050919050565b7f4d617820436f6e747269627574696f6e20657863656564730000000000000000600082015250565b6000614e2360188361479e565b9150614e2e82614ded565b602082019050919050565b60006020820190508181036000830152614e5281614e16565b9050919050565b7f596f7520617265206e6f742077686974656c697374656420666f72207468697360008201527f20706f6f6c000000000000000000000000000000000000000000000000000000602082015250565b6000614eb560258361479e565b9150614ec082614e59565b604082019050919050565b60006020820190508181036000830152614ee481614ea8565b9050919050565b7f5472616e736665722046726f6d206661696c65642e20506c656173652061707060008201527f726f76652074686520746f6b656e000000000000000000000000000000000000602082015250565b6000614f47602e8361479e565b9150614f5282614eeb565b604082019050919050565b60006020820190508181036000830152614f7681614f3a565b9050919050565b7f43616e6e6f74206368616e6765206c6f636b2074696d6520616674657220706560008201527f6f706c652073746172746564207374616b696e67000000000000000000000000602082015250565b6000614fd960348361479e565b9150614fe482614f7d565b604082019050919050565b6000602082019050818103600083015261500881614fcc565b9050919050565b7f596f752063616e277420756e7374616b65206265666f7265206d696e206c6f6360008201527f6b20646179730000000000000000000000000000000000000000000000000000602082015250565b600061506b60268361479e565b91506150768261500f565b604082019050919050565b6000602082019050818103600083015261509a8161505e565b9050919050565b7f43616e20616464206f6e6c792032303020776c20617420612074696d65000000600082015250565b60006150d7601d8361479e565b91506150e2826150a1565b602082019050919050565b60006020820190508181036000830152615106816150ca565b9050919050565b600061511882614209565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361514a57615149614aa7565b5b600182019050919050565b600081905092915050565b50565b6000615170600083615155565b915061517b82615160565b600082019050919050565b600061519182615163565b9150819050919050565b7f496e76616c69642077616c6c6574206164647265737300000000000000000000600082015250565b60006151d160168361479e565b91506151dc8261519b565b602082019050919050565b60006020820190508181036000830152615200816151c4565b9050919050565b7f596f752063616e277420696e6372656173652074686520656d657267656e637960008201527f2066656573207768656e2070656f706c652073746172746564207374616b696e60208201527f6700000000000000000000000000000000000000000000000000000000000000604082015250565b600061528960418361479e565b915061529482615207565b606082019050919050565b600060208201905081810360008301526152b88161527c565b9050919050565b7f43616e6e6f742072656475636520746865206d61782073697a652062656c6f7760008201527f207468652063757272656e7420706f6f6c2073697a6500000000000000000000602082015250565b600061531b60368361479e565b9150615326826152bf565b604082019050919050565b6000602082019050818103600083015261534a8161530e565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000615387601b8361479e565b915061539282615351565b602082019050919050565b600060208201905081810360008301526153b68161537a565b9050919050565b7f4f776e65722063616e206e6f7420626520300000000000000000000000000000600082015250565b60006153f360128361479e565b91506153fe826153bd565b602082019050919050565b60006020820190508181036000830152615422816153e6565b9050919050565b600081519050919050565b60005b83811015615452578082015181840152602081019050615437565b60008484015250505050565b600061546982615429565b615473818561479e565b9350615483818560208601615434565b61548c8161456f565b840191505092915050565b600060208201905081810360008301526154b1818461545e565b90509291505056fea264697066735822122034fd75360da210bd47c9967a20db80c846d7263bfd7ac818151a97afa987d94e64736f6c63430008120033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

000000000000000000000000b11814f6e0a67a928b2f8a0bae32871dcf73d835

-----Decoded View---------------
Arg [0] : _wallet (address): 0xb11814F6e0A67a928B2F8A0BAE32871dCf73d835

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000b11814f6e0a67a928b2f8a0bae32871dcf73d835


Deployed Bytecode Sourcemap

5073:14099:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18888:281;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7101:93;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16641:877;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6366:72;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6107:26;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;14534:397;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9894:168;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9199:196;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10263:193;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11781:1615;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9580:306;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17562:916;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8331:215;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6445:48;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14939:1694;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4550:126;;;:::i;:::-;;11164:516;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7202:789;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10688:468;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10464:216;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4361:79;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6293:66;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;6500:57;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18559:239;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6202:38;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11688:85;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6140:29;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9403:169;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8971:220;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13404:1122;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5182:26;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10070:185;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8554:409;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7999:324;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4684:152;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18888:281;18963:4;4502:6;;;;;;;;;;;4488:20;;:10;:20;;;4480:42;;;;;;;;;;;;:::i;:::-;;;;;;;;;18980:12:::1;19002:13;18980:36;;19027:15;19045:5;:15;;;19069:4;19045:30;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19027:48;;19086:12;19101:5;:14;;;19116:10;19128:7;19101:35;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19086:50;;19154:7;19147:14;;;;;18888:281:::0;;;:::o;7101:93::-;7144:7;7171:8;:15;;;;7164:22;;7101:93;:::o;16641:877::-;6999:5;;;;;;;;;;;6998:6;6990:36;;;;;;;;;;;;:::i;:::-;;;;;;;;;7045:4;7037:5;;:12;;;;;;;;;;;;;;;;;;16717::::1;:10;:12::i;:::-;16710:4;:19;16701:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;16805:1;16769:8;:14;16778:4;16769:14;;;;;;;;;;;:26;16784:10;16769:26;;;;;;;;;;;;;;;:33;;;:37;16760:84;;;;;;;;;;;;:::i;:::-;;;;;;;;;16905:1;16864:8;:14;16873:4;16864:14;;;;;;;;;;;:26;16879:10;16864:26;;;;;;;;;;;;;;;:38;;;:42;16855:89;;;;;;;;;;;;:::i;:::-;;;;;;;;;16957:27;16987:8;16996:4;16987:14;;;;;;;;:::i;:::-;;;;;;;;;;;;:33;;;;;;;;;;;;16957:63;;17031:18;17060:19;17031:49;;17091:20;17114:34;17131:4;17137:10;17114:16;:34::i;:::-;17091:57;;17182:1;17167:12;:16;17159:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;17303:12;17259:8;:14;17268:4;17259:14;;;;;;;;;;;:26;17274:10;17259:26;;;;;;;;;;;;;;;:40;;;:56;;;;;;;:::i;:::-;;;;;;;;17364:12;17326:8;17335:4;17326:14;;;;;;;;:::i;:::-;;;;;;;;;;;;:34;;;:50;;;;;;;:::i;:::-;;;;;;;;17387:12;17402:11;:24;;;17427:11;;;;;;;;;;;17439:10;17451:12;17402:62;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17387:77;;17483:7;17475:35;;;;;;;;;;;;:::i;:::-;;;;;;;;;16690:828;;;;7080:5:::0;7072;;:13;;;;;;;;;;;;;;;;;;16641:877;:::o;6366:72::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;6107:26::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;14534:397::-;14617:7;14653:12;:10;:12::i;:::-;14646:4;:19;14637:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;14698:16;14773:6;14736:8;:14;14745:4;14736:14;;;;;;;;;;;:21;14751:5;14736:21;;;;;;;;;;;;;;;:33;;;14718:15;:51;;;;:::i;:::-;14717:62;;;;:::i;:::-;14698:81;;14790:20;14881:10;14868:8;14847;14856:4;14847:14;;;;;;;;:::i;:::-;;;;;;;;;;;;:18;;;14815:8;:14;14824:4;14815:14;;;;;;;;;;;:21;14830:5;14815:21;;;;;;;;;;;;;;;:28;;;:50;;;;:::i;:::-;:61;;;;:::i;:::-;14814:78;;;;:::i;:::-;14790:103;;14911:12;14904:19;;;;14534:397;;;;:::o;9894:168::-;4502:6;;;;;;;;;;4488:20;;:10;:20;;;4480:42;;;;;;;;;;;;:::i;:::-;;;;;;;;;9986:12:::1;:10;:12::i;:::-;9979:4;:19;9970:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;10050:4;10029:8;10038:4;10029:14;;;;;;;;:::i;:::-;;;;;;;;;;;;:18;;:25;;;;9894:168:::0;;:::o;9199:196::-;4502:6;;;;;;;;;;4488:20;;:10;:20;;;4480:42;;;;;;;;;;;;:::i;:::-;;;;;;;;;9301:12:::1;:10;:12::i;:::-;9294:4;:19;9285:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;9374:13;9344:8;9353:4;9344:14;;;;;;;;:::i;:::-;;;;;;;;;;;;:27;;;:43;;;;;;;;;;;;;;;;;;9199:196:::0;;:::o;10263:193::-;4502:6;;;;;;;;;;4488:20;;:10;:20;;;4480:42;;;;;;;;;;;;:::i;:::-;;;;;;;;;10366:12:::1;:10;:12::i;:::-;10359:4;:19;10350:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;10437:11;10409:8;10418:4;10409:14;;;;;;;;:::i;:::-;;;;;;;;;;;;:25;;;:39;;;;;;;;;;;;;;;;;;10263:193:::0;;:::o;11781:1615::-;6999:5;;;;;;;;;;;6998:6;6990:36;;;;;;;;;;;;:::i;:::-;;;;;;;;;7045:4;7037:5;;:12;;;;;;;;;;;;;;;;;;11873::::1;:10;:12::i;:::-;11866:4;:19;11857:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;11925:8;11934:4;11925:14;;;;;;;;:::i;:::-;;;;;;;;;;;;:25;;;;;;;;;;;;11916:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;12004:71;12044:8;12053:4;12044:14;;;;;;;;:::i;:::-;;;;;;;;;;;;:30;;;12005:8;:14;12014:4;12005:14;;;;;;;;;;;:26;12020:10;12005:26;;;;;;;;;;;;;;;:33;;;12004:39;;:71;;;;:::i;:::-;11993:7;:82;;11984:132;;;;;;;;;;;;:::i;:::-;;;;;;;;;12183:8;12192:4;12183:14;;;;;;;;:::i;:::-;;;;;;;;;;;;:26;;;12136:43;12171:7;12136:8;12145:4;12136:14;;;;;;;;:::i;:::-;;;;;;;;;;;;:30;;;:34;;:43;;;;:::i;:::-;:73;;12127:116;;;;;;;;;;;;:::i;:::-;;;;;;;;;12315:8;12324:4;12315:14;;;;;;;;:::i;:::-;;;;;;;;;;;;:30;;;12263:48;12303:7;12264:8;:14;12273:4;12264:14;;;;;;;;;;;:26;12279:10;12264:26;;;;;;;;;;;;;;;:33;;;12263:39;;:48;;;;:::i;:::-;:82;;12254:121;;;;;;;;;;;;:::i;:::-;;;;;;;;;12427:5;12400:32;;:8;12409:4;12400:14;;;;;;;;:::i;:::-;;;;;;;;;;;;:23;;;;;;;;;;;;:32;;::::0;12396:151:::1;;12457:18;:24;12476:4;12457:24;;;;;;;;;;;:36;12482:10;12457:36;;;;;;;;;;;;;;;;;;;;;;;;;12448:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;12396:151;12653:1;12616:34;12633:4;12639:10;12616:16;:34::i;:::-;:38;12612:88;;;12670:18;12683:4;12670:12;:18::i;:::-;12612:88;12712:21;12736:8;12745:4;12736:14;;;;;;;;:::i;:::-;;;;;;;;;;;;:27;;;;;;;;;;;;12712:51;;12774:12;12797:13;12774:37;;12822:12;12837:5;:18;;;12856:10;12868:11;;;;;;;;;;;12881:7;12837:52;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12822:67;;12909:7;12900:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13013:45;13050:7;13014:8;13023:4;13014:14;;;;;;;;:::i;:::-;;;;;;;;;;;;:30;;;13013:36;;:45;;;;:::i;:::-;12980:8;12989:4;12980:14;;;;;;;;:::i;:::-;;;;;;;;;;;;:30;;:78;;;;13069:20;13092:15;13069:38;;13129:46;13141:8;:14;13150:4;13141:14;;;;;;;;;;;:26;13156:10;13141:26;;;;;;;;;;;;;;;:33;;;13129:7;:11;;:46;;;;:::i;:::-;13119:56;;13186:22;13252:136;;;;;;;;13285:7;13252:136;;;;13320:12;13252:136;;;;13362:14;13252:136;;::::0;13223:8:::1;:14;13232:4;13223:14;;;;;;;;;;;:26;13238:10;13223:26;;;;;;;;;;;;;;;:165;;;;;;;;;;;;;;;;;;;;;;;;;;;11846:1550;;;;;7080:5:::0;7072;;:13;;;;;;;;;;;;;;;;;;11781:1615;;:::o;9580:306::-;4502:6;;;;;;;;;;4488:20;;:10;:20;;;4480:42;;;;;;;;;;;;:::i;:::-;;;;;;;;;9685:12:::1;:10;:12::i;:::-;9678:4;:19;9669:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;9771:1;9737:8;9746:4;9737:14;;;;;;;;:::i;:::-;;;;;;;;;;;;:30;;;:35;9728:101;;;;;;;;;;;;:::i;:::-;;;;;;;;;9869:9;9840:8;9849:4;9840:14;;;;;;;;:::i;:::-;;;;;;;;;;;;:26;;:38;;;;9580:306:::0;;:::o;17562:916::-;6999:5;;;;;;;;;;;6998:6;6990:36;;;;;;;;;;;;:::i;:::-;;;;;;;;;7045:4;7037:5;;:12;;;;;;;;;;;;;;;;;;17643::::1;:10;:12::i;:::-;17636:4;:19;17627:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;17731:1;17695:8;:14;17704:4;17695:14;;;;;;;;;;;:26;17710:10;17695:26;;;;;;;;;;;;;;;:33;;;:37;17686:84;;;;;;;;;;;;:::i;:::-;;;;;;;;;17831:1;17790:8;:14;17799:4;17790:14;;;;;;;;;;;:26;17805:10;17790:26;;;;;;;;;;;;;;;:38;;;:42;17781:89;;;;;;;;;;;;:::i;:::-;;;;;;;;;17883:21;17907:8;17916:4;17907:14;;;;;;;;:::i;:::-;;;;;;;;;;;;:27;;;;;;;;;;;;17883:51;;17945:12;17968:13;17945:37;;17993:15;18011:8;:14;18020:4;18011:14;;;;;;;;;;;:26;18026:10;18011:26;;;;;;;;;;;;;;;:33;;;17993:51;;18091:1;18055:8;:14;18064:4;18055:14;;;;;;;;;;;:26;18070:10;18055:26;;;;;;;;;;;;;;;:33;;:37;;;;18146:1;18103:8;:14;18112:4;18103:14;;;;;;;;;;;:26;18118:10;18103:26;;;;;;;;;;;;;;;:40;;:44;;;;18191:45;18228:7;18192:8;18201:4;18192:14;;;;;;;;:::i;:::-;;;;;;;;;;;;:30;;;18191:36;;:45;;;;:::i;:::-;18158:8;18167:4;18158:14;;;;;;;;:::i;:::-;;;;;;;;;;;;:30;;:78;;;;18249:25;18277:60;18332:4;18300:8;18309:4;18300:14;;;;;;;;:::i;:::-;;;;;;;;;;;;:28;;;18290:7;:38;;;;:::i;:::-;18289:47;;;;:::i;:::-;18277:7;:11;;:60;;;;:::i;:::-;18249:88;;18348:12;18363:5;:18;;;18382:11;;;;;;;;;;;18394:10;18406:17;18363:61;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18348:76;;18443:7;18435:35;;;;;;;;;;;;:::i;:::-;;;;;;;;;17616:862;;;;;7080:5:::0;7072;;:13;;;;;;;;;;;;;;;;;;17562:916;:::o;8331:215::-;4502:6;;;;;;;;;;4488:20;;:10;:20;;;4480:42;;;;;;;;;;;;:::i;:::-;;;;;;;;;8446:12:::1;:10;:12::i;:::-;8439:4;:19;8430:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;8522:16;8489:8;8498:4;8489:14;;;;;;;;:::i;:::-;;;;;;;;;;;;:30;;:49;;;;8331:215:::0;;:::o;6445:48::-;;;;;;;;;;;;;;;;;:::o;14939:1694::-;6999:5;;;;;;;;;;;6998:6;6990:36;;;;;;;;;;;;:::i;:::-;;;;;;;;;7045:4;7037:5;;:12;;;;;;;;;;;;;;;;;;15016::::1;:10;:12::i;:::-;15009:4;:19;15000:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;15104:1;15068:8;:14;15077:4;15068:14;;;;;;;;;;;:26;15083:10;15068:26;;;;;;;;;;;;;;;:33;;;:37;15059:84;;;;;;;;;;;;:::i;:::-;;;;;;;;;15204:1;15163:8;:14;15172:4;15163:14;;;;;;;;;;;:26;15178:10;15163:26;;;;;;;;;;;;;;;:38;;;:42;15154:89;;;;;;;;;;;;:::i;:::-;;;;;;;;;15307:16;15387:6;15345:8;:14;15354:4;15345:14;;;;;;;;;;;:26;15360:10;15345:26;;;;;;;;;;;;;;;:38;;;15327:15;:56;;;;:::i;:::-;15326:67;;;;:::i;:::-;15307:86;;15425:8;15434:4;15425:14;;;;;;;;:::i;:::-;;;;;;;;;;;;:26;;;15413:8;:38;;15404:90;;;;;;;;;;;;:::i;:::-;;;;;;;;;15515:21;15539:8;15548:4;15539:14;;;;;;;;:::i;:::-;;;;;;;;;;;;:27;;;;;;;;;;;;15515:51;;15577:12;15600:13;15577:37;;15625:27;15655:8;15664:4;15655:14;;;;;;;;:::i;:::-;;;;;;;;;;;;:33;;;;;;;;;;;;15625:63;;15699:18;15728:19;15699:49;;15759:15;15777:8;:14;15786:4;15777:14;;;;;;;;;;;:26;15792:10;15777:26;;;;;;;;;;;;;;;:33;;;15759:51;;15823:20;15846:34;15863:4;15869:10;15846:16;:34::i;:::-;15823:57;;15891:21;15915:40;15938:4;15944:10;15915:22;:40::i;:::-;15891:64;;16010:12;15966:8;:14;15975:4;15966:14;;;;;;;;;;;:26;15981:10;15966:26;;;;;;;;;;;;;;;:40;;;:56;;;;;;;:::i;:::-;;;;;;;;16066:71;16103:8;:14;16112:4;16103:14;;;;;;;;;;;:26;16118:10;16103:26;;;;;;;;;;;;;;;:33;;;16067:8;16076:4;16067:14;;;;;;;;:::i;:::-;;;;;;;;;;;;:30;;;16066:36;;:71;;;;:::i;:::-;16033:8;16042:4;16033:14;;;;;;;;:::i;:::-;;;;;;;;;;;;:30;;:104;;;;16186:12;16148:8;16157:4;16148:14;;;;;;;;:::i;:::-;;;;;;;;;;;;:34;;;:50;;;;;;;:::i;:::-;;;;;;;;16245:1;16209:8;:14;16218:4;16209:14;;;;;;;;;;;:26;16224:10;16209:26;;;;;;;;;;;;;;;:33;;:37;;;;16300:1;16257:8;:14;16266:4;16257:14;;;;;;;;;;;:26;16272:10;16257:26;;;;;;;;;;;;;;;:40;;:44;;;;16314:13;16330:5;:18;;;16349:11;;;;;;;;;;;16361:10;16373:7;16330:51;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16314:67;;16392:13;16408:5;:18;;;16427:11;;;;;;;;;;;16439:10;16451:13;16408:57;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16392:73;;16476:13;16492:11;:24;;;16517:11;;;;;;;;;;;16529:10;16541:12;16492:62;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16476:78;;16573:8;:20;;;;;16585:8;16573:20;:32;;;;;16597:8;16573:32;16565:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;14989:1644;;;;;;;;;;;7080:5:::0;7072;;:13;;;;;;;;;;;;;;;;;;14939:1694;:::o;4550:126::-;4502:6;;;;;;;;;;4488:20;;:10;:20;;;4480:42;;;;;;;;;;;;:::i;:::-;;;;;;;;;4631:6:::1;::::0;::::1;;;;;;;;4612:26;;;;;;;;;;;;4666:1;4649:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;4550:126::o:0;11164:516::-;4502:6;;;;;;;;;;4488:20;;:10;:20;;;4480:42;;;;;;;;;;;;:::i;:::-;;;;;;;;;11243:11:::1;11260:15;11243:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11319:7;11287:12;:29;11300:15;11287:29;;;;;;;;;;;:39;;;;11378:8;11387:4;11378:14;;;;;;;;:::i;:::-;;;;;;;;;;;;:30;;;11337:21;:38;11359:15;11337:38;;;;;;;;;;;:71;;;;11419:27;11449:8;11458:4;11449:14;;;;;;;;:::i;:::-;;;;;;;;;;;;:33;;;;;;;;;;;;11419:63;;11493:18;11522:19;11493:49;;11553:12;11568:11;:24;;;11593:10;11605:11;;;;;;;;;;;11618:7;11568:58;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11553:73;;11645:7;11637:35;;;;;;;;;;;;:::i;:::-;;;;;;;;;11232:448;;;11164:516:::0;;:::o;7202:789::-;4502:6;;;;;;;;;;4488:20;;:10;:20;;;4480:42;;;;;;;;;;;;:::i;:::-;;;;;;;;;7466:8:::1;7480:502;;;;;;;;7518:13;7480:502;;;;;;7566:19;7480:502;;;;;;7613:12;7480:502;;;;7657:1;7480:502;;;;7738:16;7480:502;;;;7690:16;7480:502;;;;7774:4;7480:502;;;;7808:13;7480:502;;;;7849:12;7480:502;;;;7969:1;7480:502;;;;7886:9;7480:502;;;;;;7922:11;7480:502;;;;::::0;7466:517:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7202:789:::0;;;;;;;;;;:::o;10688:468::-;4502:6;;;;;;;;;;4488:20;;:10;:20;;;4480:42;;;;;;;;;;;;:::i;:::-;;;;;;;;;10808:12:::1;:10;:12::i;:::-;10801:4;:19;10792:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;10851:14;10868:19;:26;10851:43;;10923:3;10914:6;:12;;10905:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;10976:9;10971:178;10995:6;10991:1;:10;10971:178;;;11022:25;11050:19;11070:1;11050:22;;;;;;;;:::i;:::-;;;;;;;;11022:50;;11133:4;11087:18;:24;11106:4;11087:24;;;;;;;;;;;:43;11112:17;11087:43;;;;;;;;;;;;;;;;:50;;;;;;;;;;;;;;;;;;11007:142;11003:3;;;;;:::i;:::-;;;;10971:178;;;;10781:375;10688:468:::0;;:::o;10464:216::-;4502:6;;;;;;;;;;4488:20;;:10;:20;;;4480:42;;;;;;;;;;;;:::i;:::-;;;;;;;;;10580:12:::1;:10;:12::i;:::-;10573:4;:19;10564:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;10656:16;10623:8;10632:4;10623:14;;;;;;;;:::i;:::-;;;;;;;;;;;;:30;;:49;;;;10464:216:::0;;:::o;4361:79::-;4399:7;4426:6;;;;;;;;;;;4419:13;;4361:79;:::o;6293:66::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;6500:57::-;;;;;;;;;;;;;;;;;:::o;18559:239::-;18611:4;4502:6;;;;;;;;;;;4488:20;;:10;:20;;;4480:42;;;;;;;;;;;;:::i;:::-;;;;;;;;;18628:15:::1;18646:21;18628:39;;18679:12;18705:10;18697:24;;18743:7;18697:68;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18678:87;;;18783:7;18776:14;;;;18559:239:::0;:::o;6202:38::-;;;;:::o;11688:85::-;4502:6;;;;;;;;;;4488:20;;:10;:20;;;4480:42;;;;;;;;;;;;:::i;:::-;;;;;;;;;11760:5:::1;11752;;:13;;;;;;;;;;;;;;;;;;11688:85:::0;:::o;6140:29::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;9403:169::-;4502:6;;;;;;;;;;4488:20;;:10;:20;;;4480:42;;;;;;;;;;;;:::i;:::-;;;;;;;;;9503:1:::1;9484:21;;:7;:21;;::::0;9475:57:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;9557:7;9543:11;;:21;;;;;;;;;;;;;;;;;;9403:169:::0;:::o;8971:220::-;4502:6;;;;;;;;;;4488:20;;:10;:20;;;4480:42;;;;;;;;;;;;:::i;:::-;;;;;;;;;9085:12:::1;:10;:12::i;:::-;9078:4;:19;9069:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;9164:19;9128:8;9137:4;9128:14;;;;;;;;:::i;:::-;;;;;;;;;;;;:33;;;:55;;;;;;;;;;;;;;;;;;8971:220:::0;;:::o;13404:1122::-;13481:7;13517:12;:10;:12::i;:::-;13510:4;:19;13501:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;13562:20;13585:8;:14;13594:4;13585:14;;;;;;;;;;;:21;13600:5;13585:21;;;;;;;;;;;;;;;:33;;;13562:56;;13629:16;13683:6;13667:12;13649:15;:30;;;;:::i;:::-;13648:41;;;;:::i;:::-;13629:60;;13714:8;13723:4;13714:14;;;;;;;;:::i;:::-;;;;;;;;;;;;:26;;;13703:8;:37;13700:50;;;13749:1;13742:8;;;;;;13700:50;13797:1;13765:8;:14;13774:4;13765:14;;;;;;;;;;;:21;13780:5;13765:21;;;;;;;;;;;;;;;:28;;;:33;13761:47;;13807:1;13800:8;;;;;;13761:47;13821:24;13865:9;13860:507;13884:11;:18;;;;13880:1;:22;13860:507;;;13923:19;13945:11;13957:1;13945:14;;;;;;;;:::i;:::-;;;;;;;;;;13923:36;;13974:21;13998:12;:25;14011:11;13998:25;;;;;;;;;;;;13974:49;;14038:30;14071:21;:34;14093:11;14071:34;;;;;;;;;;;;14038:67;;14138:12;14124:11;:26;14120:236;;;14170:20;14244:22;14226:13;14195:8;:14;14204:4;14195:14;;;;;;;;;;;:21;14210:5;14195:21;;;;;;;;;;;;;;;:28;;;:44;;;;:::i;:::-;14194:73;;;;:::i;:::-;14170:98;;14306:34;14327:12;14306:16;:20;;:34;;;;:::i;:::-;14287:53;;14151:205;14120:236;13908:459;;;13904:3;;;;;:::i;:::-;;;;13860:507;;;;14420:16;14381:8;:14;14390:4;14381:14;;;;;;;;;;;:21;14396:5;14381:21;;;;;;;;;;;;;;;:35;;;:55;14377:69;;14445:1;14438:8;;;;;;;14377:69;14483:8;:14;14492:4;14483:14;;;;;;;;;;;:21;14498:5;14483:21;;;;;;;;;;;;;;;:35;;;14464:16;:54;;;;:::i;:::-;14457:61;;;;;13404:1122;;;;;:::o;5182:26::-;;;;;;;;;;;;;:::o;10070:185::-;4502:6;;;;;;;;;;4488:20;;:10;:20;;;4480:42;;;;;;;;;;;;:::i;:::-;;;;;;;;;10169:12:::1;:10;:12::i;:::-;10162:4;:19;10153:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;10238:9;10212:8;10221:4;10212:14;;;;;;;;:::i;:::-;;;;;;;;;;;;:23;;;:35;;;;;;;;;;;;;;;;;;10070:185:::0;;:::o;8554:409::-;4502:6;;;;;;;;;;4488:20;;:10;:20;;;4480:42;;;;;;;;;;;;:::i;:::-;;;;;;;;;8666:12:::1;:10;:12::i;:::-;8659:4;:19;8650:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;8746:1;8713:8;8722:4;8713:14;;;;;;;;:::i;:::-;;;;;;;;;;;;:30;;;:34;8709:191;;;8790:8;8799:4;8790:14;;;;;;;;:::i;:::-;;;;;;;;;;;;:28;;;8772:14;:46;;8763:125;;;;;;;;;;;;:::i;:::-;;;;;;;;;8709:191;8941:14;8910:8;8919:4;8910:14;;;;;;;;:::i;:::-;;;;;;;;;;;;:28;;:45;;;;8554:409:::0;;:::o;7999:324::-;4502:6;;;;;;;;;;4488:20;;:10;:20;;;4480:42;;;;;;;;;;;;:::i;:::-;;;;;;;;;8106:12:::1;:10;:12::i;:::-;8099:4;:19;8090:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;8174:8;8183:4;8174:14;;;;;;;;:::i;:::-;;;;;;;;;;;;:30;;;8158:12;:46;;8149:114;;;;;;;;;;;;:::i;:::-;;;;;;;;;8303:12;8274:8;8283:4;8274:14;;;;;;;;:::i;:::-;;;;;;;;;;;;:26;;:41;;;;7999:324:::0;;:::o;4684:152::-;4502:6;;;;;;;;;;4488:20;;:10;:20;;;4480:42;;;;;;;;;;;;:::i;:::-;;;;;;;;;4780:8:::1;4762:27;;;;;;;;;;;;4800:28;4819:8;4800:18;:28::i;:::-;4684:152:::0;:::o;1472:181::-;1530:7;1550:9;1566:1;1562;:5;;;;:::i;:::-;1550:17;;1591:1;1586;:6;;1578:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1644:1;1637:8;;;1472:181;;;;:::o;1661:136::-;1719:7;1746:43;1750:1;1753;1746:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1739:50;;1661:136;;;;:::o;4844:222::-;4938:1;4918:22;;:8;:22;;;4910:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;5021:8;4992:38;;5013:6;;;;;;;;;;4992:38;;;;;;;;;;;;5050:8;5041:6;;:17;;;;;;;;;;;;;;;;;;4844:222;:::o;1805:226::-;1925:7;1958:1;1953;:6;;1961:12;1945:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1985:9;2001:1;1997;:5;;;;:::i;:::-;1985:17;;2022:1;2015:8;;;1805:226;;;;;:::o;7:75:1:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:126;371:7;411:42;404:5;400:54;389:65;;334:126;;;:::o;466:96::-;503:7;532:24;550:5;532:24;:::i;:::-;521:35;;466:96;;;:::o;568:122::-;641:24;659:5;641:24;:::i;:::-;634:5;631:35;621:63;;680:1;677;670:12;621:63;568:122;:::o;696:139::-;742:5;780:6;767:20;758:29;;796:33;823:5;796:33;:::i;:::-;696:139;;;;:::o;841:329::-;900:6;949:2;937:9;928:7;924:23;920:32;917:119;;;955:79;;:::i;:::-;917:119;1075:1;1100:53;1145:7;1136:6;1125:9;1121:22;1100:53;:::i;:::-;1090:63;;1046:117;841:329;;;;:::o;1176:90::-;1210:7;1253:5;1246:13;1239:21;1228:32;;1176:90;;;:::o;1272:109::-;1353:21;1368:5;1353:21;:::i;:::-;1348:3;1341:34;1272:109;;:::o;1387:210::-;1474:4;1512:2;1501:9;1497:18;1489:26;;1525:65;1587:1;1576:9;1572:17;1563:6;1525:65;:::i;:::-;1387:210;;;;:::o;1603:77::-;1640:7;1669:5;1658:16;;1603:77;;;:::o;1686:118::-;1773:24;1791:5;1773:24;:::i;:::-;1768:3;1761:37;1686:118;;:::o;1810:222::-;1903:4;1941:2;1930:9;1926:18;1918:26;;1954:71;2022:1;2011:9;2007:17;1998:6;1954:71;:::i;:::-;1810:222;;;;:::o;2038:122::-;2111:24;2129:5;2111:24;:::i;:::-;2104:5;2101:35;2091:63;;2150:1;2147;2140:12;2091:63;2038:122;:::o;2166:139::-;2212:5;2250:6;2237:20;2228:29;;2266:33;2293:5;2266:33;:::i;:::-;2166:139;;;;:::o;2311:329::-;2370:6;2419:2;2407:9;2398:7;2394:23;2390:32;2387:119;;;2425:79;;:::i;:::-;2387:119;2545:1;2570:53;2615:7;2606:6;2595:9;2591:22;2570:53;:::i;:::-;2560:63;;2516:117;2311:329;;;;:::o;2646:474::-;2714:6;2722;2771:2;2759:9;2750:7;2746:23;2742:32;2739:119;;;2777:79;;:::i;:::-;2739:119;2897:1;2922:53;2967:7;2958:6;2947:9;2943:22;2922:53;:::i;:::-;2912:63;;2868:117;3024:2;3050:53;3095:7;3086:6;3075:9;3071:22;3050:53;:::i;:::-;3040:63;;2995:118;2646:474;;;;;:::o;3126:118::-;3213:24;3231:5;3213:24;:::i;:::-;3208:3;3201:37;3126:118;;:::o;3250:1421::-;3641:4;3679:3;3668:9;3664:19;3656:27;;3693:71;3761:1;3750:9;3746:17;3737:6;3693:71;:::i;:::-;3774:72;3842:2;3831:9;3827:18;3818:6;3774:72;:::i;:::-;3856;3924:2;3913:9;3909:18;3900:6;3856:72;:::i;:::-;3938;4006:2;3995:9;3991:18;3982:6;3938:72;:::i;:::-;4020:73;4088:3;4077:9;4073:19;4064:6;4020:73;:::i;:::-;4103;4171:3;4160:9;4156:19;4147:6;4103:73;:::i;:::-;4186;4254:3;4243:9;4239:19;4230:6;4186:73;:::i;:::-;4269;4337:3;4326:9;4322:19;4313:6;4269:73;:::i;:::-;4352;4420:3;4409:9;4405:19;4396:6;4352:73;:::i;:::-;4435;4503:3;4492:9;4488:19;4479:6;4435:73;:::i;:::-;4518:68;4581:3;4570:9;4566:19;4556:7;4518:68;:::i;:::-;4596;4659:3;4648:9;4644:19;4634:7;4596:68;:::i;:::-;3250:1421;;;;;;;;;;;;;;;:::o;4677:474::-;4745:6;4753;4802:2;4790:9;4781:7;4777:23;4773:32;4770:119;;;4808:79;;:::i;:::-;4770:119;4928:1;4953:53;4998:7;4989:6;4978:9;4974:22;4953:53;:::i;:::-;4943:63;;4899:117;5055:2;5081:53;5126:7;5117:6;5106:9;5102:22;5081:53;:::i;:::-;5071:63;;5026:118;4677:474;;;;;:::o;5157:::-;5225:6;5233;5282:2;5270:9;5261:7;5257:23;5253:32;5250:119;;;5288:79;;:::i;:::-;5250:119;5408:1;5433:53;5478:7;5469:6;5458:9;5454:22;5433:53;:::i;:::-;5423:63;;5379:117;5535:2;5561:53;5606:7;5597:6;5586:9;5582:22;5561:53;:::i;:::-;5551:63;;5506:118;5157:474;;;;;:::o;5637:116::-;5707:21;5722:5;5707:21;:::i;:::-;5700:5;5697:32;5687:60;;5743:1;5740;5733:12;5687:60;5637:116;:::o;5759:133::-;5802:5;5840:6;5827:20;5818:29;;5856:30;5880:5;5856:30;:::i;:::-;5759:133;;;;:::o;5898:468::-;5963:6;5971;6020:2;6008:9;5999:7;5995:23;5991:32;5988:119;;;6026:79;;:::i;:::-;5988:119;6146:1;6171:53;6216:7;6207:6;6196:9;6192:22;6171:53;:::i;:::-;6161:63;;6117:117;6273:2;6299:50;6341:7;6332:6;6321:9;6317:22;6299:50;:::i;:::-;6289:60;;6244:115;5898:468;;;;;:::o;6372:1629::-;6506:6;6514;6522;6530;6538;6546;6554;6562;6570;6578;6627:3;6615:9;6606:7;6602:23;6598:33;6595:120;;;6634:79;;:::i;:::-;6595:120;6754:1;6779:53;6824:7;6815:6;6804:9;6800:22;6779:53;:::i;:::-;6769:63;;6725:117;6881:2;6907:53;6952:7;6943:6;6932:9;6928:22;6907:53;:::i;:::-;6897:63;;6852:118;7009:2;7035:53;7080:7;7071:6;7060:9;7056:22;7035:53;:::i;:::-;7025:63;;6980:118;7137:2;7163:53;7208:7;7199:6;7188:9;7184:22;7163:53;:::i;:::-;7153:63;;7108:118;7265:3;7292:53;7337:7;7328:6;7317:9;7313:22;7292:53;:::i;:::-;7282:63;;7236:119;7394:3;7421:53;7466:7;7457:6;7446:9;7442:22;7421:53;:::i;:::-;7411:63;;7365:119;7523:3;7550:53;7595:7;7586:6;7575:9;7571:22;7550:53;:::i;:::-;7540:63;;7494:119;7652:3;7679:53;7724:7;7715:6;7704:9;7700:22;7679:53;:::i;:::-;7669:63;;7623:119;7781:3;7808:50;7850:7;7841:6;7830:9;7826:22;7808:50;:::i;:::-;7798:60;;7752:116;7907:3;7934:50;7976:7;7967:6;7956:9;7952:22;7934:50;:::i;:::-;7924:60;;7878:116;6372:1629;;;;;;;;;;;;;:::o;8007:117::-;8116:1;8113;8106:12;8130:102;8171:6;8222:2;8218:7;8213:2;8206:5;8202:14;8198:28;8188:38;;8130:102;;;:::o;8238:180::-;8286:77;8283:1;8276:88;8383:4;8380:1;8373:15;8407:4;8404:1;8397:15;8424:281;8507:27;8529:4;8507:27;:::i;:::-;8499:6;8495:40;8637:6;8625:10;8622:22;8601:18;8589:10;8586:34;8583:62;8580:88;;;8648:18;;:::i;:::-;8580:88;8688:10;8684:2;8677:22;8467:238;8424:281;;:::o;8711:129::-;8745:6;8772:20;;:::i;:::-;8762:30;;8801:33;8829:4;8821:6;8801:33;:::i;:::-;8711:129;;;:::o;8846:311::-;8923:4;9013:18;9005:6;9002:30;8999:56;;;9035:18;;:::i;:::-;8999:56;9085:4;9077:6;9073:17;9065:25;;9145:4;9139;9135:15;9127:23;;8846:311;;;:::o;9163:117::-;9272:1;9269;9262:12;9303:710;9399:5;9424:81;9440:64;9497:6;9440:64;:::i;:::-;9424:81;:::i;:::-;9415:90;;9525:5;9554:6;9547:5;9540:21;9588:4;9581:5;9577:16;9570:23;;9641:4;9633:6;9629:17;9621:6;9617:30;9670:3;9662:6;9659:15;9656:122;;;9689:79;;:::i;:::-;9656:122;9804:6;9787:220;9821:6;9816:3;9813:15;9787:220;;;9896:3;9925:37;9958:3;9946:10;9925:37;:::i;:::-;9920:3;9913:50;9992:4;9987:3;9983:14;9976:21;;9863:144;9847:4;9842:3;9838:14;9831:21;;9787:220;;;9791:21;9405:608;;9303:710;;;;;:::o;10036:370::-;10107:5;10156:3;10149:4;10141:6;10137:17;10133:27;10123:122;;10164:79;;:::i;:::-;10123:122;10281:6;10268:20;10306:94;10396:3;10388:6;10381:4;10373:6;10369:17;10306:94;:::i;:::-;10297:103;;10113:293;10036:370;;;;:::o;10412:684::-;10505:6;10513;10562:2;10550:9;10541:7;10537:23;10533:32;10530:119;;;10568:79;;:::i;:::-;10530:119;10688:1;10713:53;10758:7;10749:6;10738:9;10734:22;10713:53;:::i;:::-;10703:63;;10659:117;10843:2;10832:9;10828:18;10815:32;10874:18;10866:6;10863:30;10860:117;;;10896:79;;:::i;:::-;10860:117;11001:78;11071:7;11062:6;11051:9;11047:22;11001:78;:::i;:::-;10991:88;;10786:303;10412:684;;;;;:::o;11102:222::-;11195:4;11233:2;11222:9;11218:18;11210:26;;11246:71;11314:1;11303:9;11299:17;11290:6;11246:71;:::i;:::-;11102:222;;;;:::o;11330:442::-;11479:4;11517:2;11506:9;11502:18;11494:26;;11530:71;11598:1;11587:9;11583:17;11574:6;11530:71;:::i;:::-;11611:72;11679:2;11668:9;11664:18;11655:6;11611:72;:::i;:::-;11693;11761:2;11750:9;11746:18;11737:6;11693:72;:::i;:::-;11330:442;;;;;;:::o;11778:323::-;11834:6;11883:2;11871:9;11862:7;11858:23;11854:32;11851:119;;;11889:79;;:::i;:::-;11851:119;12009:1;12034:50;12076:7;12067:6;12056:9;12052:22;12034:50;:::i;:::-;12024:60;;11980:114;11778:323;;;;:::o;12107:169::-;12191:11;12225:6;12220:3;12213:19;12265:4;12260:3;12256:14;12241:29;;12107:169;;;;:::o;12282:159::-;12422:11;12418:1;12410:6;12406:14;12399:35;12282:159;:::o;12447:365::-;12589:3;12610:66;12674:1;12669:3;12610:66;:::i;:::-;12603:73;;12685:93;12774:3;12685:93;:::i;:::-;12803:2;12798:3;12794:12;12787:19;;12447:365;;;:::o;12818:419::-;12984:4;13022:2;13011:9;13007:18;12999:26;;13071:9;13065:4;13061:20;13057:1;13046:9;13042:17;13035:47;13099:131;13225:4;13099:131;:::i;:::-;13091:139;;12818:419;;;:::o;13243:143::-;13300:5;13331:6;13325:13;13316:22;;13347:33;13374:5;13347:33;:::i;:::-;13243:143;;;;:::o;13392:351::-;13462:6;13511:2;13499:9;13490:7;13486:23;13482:32;13479:119;;;13517:79;;:::i;:::-;13479:119;13637:1;13662:64;13718:7;13709:6;13698:9;13694:22;13662:64;:::i;:::-;13652:74;;13608:128;13392:351;;;;:::o;13749:332::-;13870:4;13908:2;13897:9;13893:18;13885:26;;13921:71;13989:1;13978:9;13974:17;13965:6;13921:71;:::i;:::-;14002:72;14070:2;14059:9;14055:18;14046:6;14002:72;:::i;:::-;13749:332;;;;;:::o;14087:137::-;14141:5;14172:6;14166:13;14157:22;;14188:30;14212:5;14188:30;:::i;:::-;14087:137;;;;:::o;14230:345::-;14297:6;14346:2;14334:9;14325:7;14321:23;14317:32;14314:119;;;14352:79;;:::i;:::-;14314:119;14472:1;14497:61;14550:7;14541:6;14530:9;14526:22;14497:61;:::i;:::-;14487:71;;14443:125;14230:345;;;;:::o;14581:167::-;14721:19;14717:1;14709:6;14705:14;14698:43;14581:167;:::o;14754:366::-;14896:3;14917:67;14981:2;14976:3;14917:67;:::i;:::-;14910:74;;14993:93;15082:3;14993:93;:::i;:::-;15111:2;15106:3;15102:12;15095:19;;14754:366;;;:::o;15126:419::-;15292:4;15330:2;15319:9;15315:18;15307:26;;15379:9;15373:4;15369:20;15365:1;15354:9;15350:17;15343:47;15407:131;15533:4;15407:131;:::i;:::-;15399:139;;15126:419;;;:::o;15551:165::-;15691:17;15687:1;15679:6;15675:14;15668:41;15551:165;:::o;15722:366::-;15864:3;15885:67;15949:2;15944:3;15885:67;:::i;:::-;15878:74;;15961:93;16050:3;15961:93;:::i;:::-;16079:2;16074:3;16070:12;16063:19;;15722:366;;;:::o;16094:419::-;16260:4;16298:2;16287:9;16283:18;16275:26;;16347:9;16341:4;16337:20;16333:1;16322:9;16318:17;16311:47;16375:131;16501:4;16375:131;:::i;:::-;16367:139;;16094:419;;;:::o;16519:182::-;16659:34;16655:1;16647:6;16643:14;16636:58;16519:182;:::o;16707:366::-;16849:3;16870:67;16934:2;16929:3;16870:67;:::i;:::-;16863:74;;16946:93;17035:3;16946:93;:::i;:::-;17064:2;17059:3;17055:12;17048:19;;16707:366;;;:::o;17079:419::-;17245:4;17283:2;17272:9;17268:18;17260:26;;17332:9;17326:4;17322:20;17318:1;17307:9;17303:17;17296:47;17360:131;17486:4;17360:131;:::i;:::-;17352:139;;17079:419;;;:::o;17504:180::-;17552:77;17549:1;17542:88;17649:4;17646:1;17639:15;17673:4;17670:1;17663:15;17690:169;17830:21;17826:1;17818:6;17814:14;17807:45;17690:169;:::o;17865:366::-;18007:3;18028:67;18092:2;18087:3;18028:67;:::i;:::-;18021:74;;18104:93;18193:3;18104:93;:::i;:::-;18222:2;18217:3;18213:12;18206:19;;17865:366;;;:::o;18237:419::-;18403:4;18441:2;18430:9;18426:18;18418:26;;18490:9;18484:4;18480:20;18476:1;18465:9;18461:17;18454:47;18518:131;18644:4;18518:131;:::i;:::-;18510:139;;18237:419;;;:::o;18662:180::-;18710:77;18707:1;18700:88;18807:4;18804:1;18797:15;18831:4;18828:1;18821:15;18848:191;18888:3;18907:20;18925:1;18907:20;:::i;:::-;18902:25;;18941:20;18959:1;18941:20;:::i;:::-;18936:25;;18984:1;18981;18977:9;18970:16;;19005:3;19002:1;18999:10;18996:36;;;19012:18;;:::i;:::-;18996:36;18848:191;;;;:::o;19045:442::-;19194:4;19232:2;19221:9;19217:18;19209:26;;19245:71;19313:1;19302:9;19298:17;19289:6;19245:71;:::i;:::-;19326:72;19394:2;19383:9;19379:18;19370:6;19326:72;:::i;:::-;19408;19476:2;19465:9;19461:18;19452:6;19408:72;:::i;:::-;19045:442;;;;;;:::o;19493:165::-;19633:17;19629:1;19621:6;19617:14;19610:41;19493:165;:::o;19664:366::-;19806:3;19827:67;19891:2;19886:3;19827:67;:::i;:::-;19820:74;;19903:93;19992:3;19903:93;:::i;:::-;20021:2;20016:3;20012:12;20005:19;;19664:366;;;:::o;20036:419::-;20202:4;20240:2;20229:9;20225:18;20217:26;;20289:9;20283:4;20279:20;20275:1;20264:9;20260:17;20253:47;20317:131;20443:4;20317:131;:::i;:::-;20309:139;;20036:419;;;:::o;20461:194::-;20501:4;20521:20;20539:1;20521:20;:::i;:::-;20516:25;;20555:20;20573:1;20555:20;:::i;:::-;20550:25;;20599:1;20596;20592:9;20584:17;;20623:1;20617:4;20614:11;20611:37;;;20628:18;;:::i;:::-;20611:37;20461:194;;;;:::o;20661:180::-;20709:77;20706:1;20699:88;20806:4;20803:1;20796:15;20830:4;20827:1;20820:15;20847:185;20887:1;20904:20;20922:1;20904:20;:::i;:::-;20899:25;;20938:20;20956:1;20938:20;:::i;:::-;20933:25;;20977:1;20967:35;;20982:18;;:::i;:::-;20967:35;21024:1;21021;21017:9;21012:14;;20847:185;;;;:::o;21038:410::-;21078:7;21101:20;21119:1;21101:20;:::i;:::-;21096:25;;21135:20;21153:1;21135:20;:::i;:::-;21130:25;;21190:1;21187;21183:9;21212:30;21230:11;21212:30;:::i;:::-;21201:41;;21391:1;21382:7;21378:15;21375:1;21372:22;21352:1;21345:9;21325:83;21302:139;;21421:18;;:::i;:::-;21302:139;21086:362;21038:410;;;;:::o;21454:168::-;21594:20;21590:1;21582:6;21578:14;21571:44;21454:168;:::o;21628:366::-;21770:3;21791:67;21855:2;21850:3;21791:67;:::i;:::-;21784:74;;21867:93;21956:3;21867:93;:::i;:::-;21985:2;21980:3;21976:12;21969:19;;21628:366;;;:::o;22000:419::-;22166:4;22204:2;22193:9;22189:18;22181:26;;22253:9;22247:4;22243:20;22239:1;22228:9;22224:17;22217:47;22281:131;22407:4;22281:131;:::i;:::-;22273:139;;22000:419;;;:::o;22425:223::-;22565:34;22561:1;22553:6;22549:14;22542:58;22634:6;22629:2;22621:6;22617:15;22610:31;22425:223;:::o;22654:366::-;22796:3;22817:67;22881:2;22876:3;22817:67;:::i;:::-;22810:74;;22893:93;22982:3;22893:93;:::i;:::-;23011:2;23006:3;23002:12;22995:19;;22654:366;;;:::o;23026:419::-;23192:4;23230:2;23219:9;23215:18;23207:26;;23279:9;23273:4;23269:20;23265:1;23254:9;23250:17;23243:47;23307:131;23433:4;23307:131;:::i;:::-;23299:139;;23026:419;;;:::o;23451:179::-;23591:31;23587:1;23579:6;23575:14;23568:55;23451:179;:::o;23636:366::-;23778:3;23799:67;23863:2;23858:3;23799:67;:::i;:::-;23792:74;;23875:93;23964:3;23875:93;:::i;:::-;23993:2;23988:3;23984:12;23977:19;;23636:366;;;:::o;24008:419::-;24174:4;24212:2;24201:9;24197:18;24189:26;;24261:9;24255:4;24251:20;24247:1;24236:9;24232:17;24225:47;24289:131;24415:4;24289:131;:::i;:::-;24281:139;;24008:419;;;:::o;24433:174::-;24573:26;24569:1;24561:6;24557:14;24550:50;24433:174;:::o;24613:366::-;24755:3;24776:67;24840:2;24835:3;24776:67;:::i;:::-;24769:74;;24852:93;24941:3;24852:93;:::i;:::-;24970:2;24965:3;24961:12;24954:19;;24613:366;;;:::o;24985:419::-;25151:4;25189:2;25178:9;25174:18;25166:26;;25238:9;25232:4;25228:20;25224:1;25213:9;25209:17;25202:47;25266:131;25392:4;25266:131;:::i;:::-;25258:139;;24985:419;;;:::o;25410:224::-;25550:34;25546:1;25538:6;25534:14;25527:58;25619:7;25614:2;25606:6;25602:15;25595:32;25410:224;:::o;25640:366::-;25782:3;25803:67;25867:2;25862:3;25803:67;:::i;:::-;25796:74;;25879:93;25968:3;25879:93;:::i;:::-;25997:2;25992:3;25988:12;25981:19;;25640:366;;;:::o;26012:419::-;26178:4;26216:2;26205:9;26201:18;26193:26;;26265:9;26259:4;26255:20;26251:1;26240:9;26236:17;26229:47;26293:131;26419:4;26293:131;:::i;:::-;26285:139;;26012:419;;;:::o;26437:233::-;26577:34;26573:1;26565:6;26561:14;26554:58;26646:16;26641:2;26633:6;26629:15;26622:41;26437:233;:::o;26676:366::-;26818:3;26839:67;26903:2;26898:3;26839:67;:::i;:::-;26832:74;;26915:93;27004:3;26915:93;:::i;:::-;27033:2;27028:3;27024:12;27017:19;;26676:366;;;:::o;27048:419::-;27214:4;27252:2;27241:9;27237:18;27229:26;;27301:9;27295:4;27291:20;27287:1;27276:9;27272:17;27265:47;27329:131;27455:4;27329:131;:::i;:::-;27321:139;;27048:419;;;:::o;27473:239::-;27613:34;27609:1;27601:6;27597:14;27590:58;27682:22;27677:2;27669:6;27665:15;27658:47;27473:239;:::o;27718:366::-;27860:3;27881:67;27945:2;27940:3;27881:67;:::i;:::-;27874:74;;27957:93;28046:3;27957:93;:::i;:::-;28075:2;28070:3;28066:12;28059:19;;27718:366;;;:::o;28090:419::-;28256:4;28294:2;28283:9;28279:18;28271:26;;28343:9;28337:4;28333:20;28329:1;28318:9;28314:17;28307:47;28371:131;28497:4;28371:131;:::i;:::-;28363:139;;28090:419;;;:::o;28515:225::-;28655:34;28651:1;28643:6;28639:14;28632:58;28724:8;28719:2;28711:6;28707:15;28700:33;28515:225;:::o;28746:366::-;28888:3;28909:67;28973:2;28968:3;28909:67;:::i;:::-;28902:74;;28985:93;29074:3;28985:93;:::i;:::-;29103:2;29098:3;29094:12;29087:19;;28746:366;;;:::o;29118:419::-;29284:4;29322:2;29311:9;29307:18;29299:26;;29371:9;29365:4;29361:20;29357:1;29346:9;29342:17;29335:47;29399:131;29525:4;29399:131;:::i;:::-;29391:139;;29118:419;;;:::o;29543:179::-;29683:31;29679:1;29671:6;29667:14;29660:55;29543:179;:::o;29728:366::-;29870:3;29891:67;29955:2;29950:3;29891:67;:::i;:::-;29884:74;;29967:93;30056:3;29967:93;:::i;:::-;30085:2;30080:3;30076:12;30069:19;;29728:366;;;:::o;30100:419::-;30266:4;30304:2;30293:9;30289:18;30281:26;;30353:9;30347:4;30343:20;30339:1;30328:9;30324:17;30317:47;30381:131;30507:4;30381:131;:::i;:::-;30373:139;;30100:419;;;:::o;30525:233::-;30564:3;30587:24;30605:5;30587:24;:::i;:::-;30578:33;;30633:66;30626:5;30623:77;30620:103;;30703:18;;:::i;:::-;30620:103;30750:1;30743:5;30739:13;30732:20;;30525:233;;;:::o;30764:147::-;30865:11;30902:3;30887:18;;30764:147;;;;:::o;30917:114::-;;:::o;31037:398::-;31196:3;31217:83;31298:1;31293:3;31217:83;:::i;:::-;31210:90;;31309:93;31398:3;31309:93;:::i;:::-;31427:1;31422:3;31418:11;31411:18;;31037:398;;;:::o;31441:379::-;31625:3;31647:147;31790:3;31647:147;:::i;:::-;31640:154;;31811:3;31804:10;;31441:379;;;:::o;31826:172::-;31966:24;31962:1;31954:6;31950:14;31943:48;31826:172;:::o;32004:366::-;32146:3;32167:67;32231:2;32226:3;32167:67;:::i;:::-;32160:74;;32243:93;32332:3;32243:93;:::i;:::-;32361:2;32356:3;32352:12;32345:19;;32004:366;;;:::o;32376:419::-;32542:4;32580:2;32569:9;32565:18;32557:26;;32629:9;32623:4;32619:20;32615:1;32604:9;32600:17;32593:47;32657:131;32783:4;32657:131;:::i;:::-;32649:139;;32376:419;;;:::o;32801:289::-;32941:34;32937:1;32929:6;32925:14;32918:58;33010:34;33005:2;32997:6;32993:15;32986:59;33079:3;33074:2;33066:6;33062:15;33055:28;32801:289;:::o;33096:366::-;33238:3;33259:67;33323:2;33318:3;33259:67;:::i;:::-;33252:74;;33335:93;33424:3;33335:93;:::i;:::-;33453:2;33448:3;33444:12;33437:19;;33096:366;;;:::o;33468:419::-;33634:4;33672:2;33661:9;33657:18;33649:26;;33721:9;33715:4;33711:20;33707:1;33696:9;33692:17;33685:47;33749:131;33875:4;33749:131;:::i;:::-;33741:139;;33468:419;;;:::o;33893:241::-;34033:34;34029:1;34021:6;34017:14;34010:58;34102:24;34097:2;34089:6;34085:15;34078:49;33893:241;:::o;34140:366::-;34282:3;34303:67;34367:2;34362:3;34303:67;:::i;:::-;34296:74;;34379:93;34468:3;34379:93;:::i;:::-;34497:2;34492:3;34488:12;34481:19;;34140:366;;;:::o;34512:419::-;34678:4;34716:2;34705:9;34701:18;34693:26;;34765:9;34759:4;34755:20;34751:1;34740:9;34736:17;34729:47;34793:131;34919:4;34793:131;:::i;:::-;34785:139;;34512:419;;;:::o;34937:177::-;35077:29;35073:1;35065:6;35061:14;35054:53;34937:177;:::o;35120:366::-;35262:3;35283:67;35347:2;35342:3;35283:67;:::i;:::-;35276:74;;35359:93;35448:3;35359:93;:::i;:::-;35477:2;35472:3;35468:12;35461:19;;35120:366;;;:::o;35492:419::-;35658:4;35696:2;35685:9;35681:18;35673:26;;35745:9;35739:4;35735:20;35731:1;35720:9;35716:17;35709:47;35773:131;35899:4;35773:131;:::i;:::-;35765:139;;35492:419;;;:::o;35917:168::-;36057:20;36053:1;36045:6;36041:14;36034:44;35917:168;:::o;36091:366::-;36233:3;36254:67;36318:2;36313:3;36254:67;:::i;:::-;36247:74;;36330:93;36419:3;36330:93;:::i;:::-;36448:2;36443:3;36439:12;36432:19;;36091:366;;;:::o;36463:419::-;36629:4;36667:2;36656:9;36652:18;36644:26;;36716:9;36710:4;36706:20;36702:1;36691:9;36687:17;36680:47;36744:131;36870:4;36744:131;:::i;:::-;36736:139;;36463:419;;;:::o;36888:99::-;36940:6;36974:5;36968:12;36958:22;;36888:99;;;:::o;36993:246::-;37074:1;37084:113;37098:6;37095:1;37092:13;37084:113;;;37183:1;37178:3;37174:11;37168:18;37164:1;37159:3;37155:11;37148:39;37120:2;37117:1;37113:10;37108:15;;37084:113;;;37231:1;37222:6;37217:3;37213:16;37206:27;37055:184;36993:246;;;:::o;37245:377::-;37333:3;37361:39;37394:5;37361:39;:::i;:::-;37416:71;37480:6;37475:3;37416:71;:::i;:::-;37409:78;;37496:65;37554:6;37549:3;37542:4;37535:5;37531:16;37496:65;:::i;:::-;37586:29;37608:6;37586:29;:::i;:::-;37581:3;37577:39;37570:46;;37337:285;37245:377;;;;:::o;37628:313::-;37741:4;37779:2;37768:9;37764:18;37756:26;;37828:9;37822:4;37818:20;37814:1;37803:9;37799:17;37792:47;37856:78;37929:4;37920:6;37856:78;:::i;:::-;37848:86;;37628:313;;;;:::o

Swarm Source

ipfs://34fd75360da210bd47c9967a20db80c846d7263bfd7ac818151a97afa987d94e

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ 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.