ETH Price: $3,787.44 (-1.79%)
Gas: 22 Gwei

Contract

0x35CEE4c61B7619956e0B2015B5411F93CBba817A
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Value
0x60806040106038232020-08-06 3:43:161392 days ago1596685396IN
 Create: StrategyVaultTUSD
0 ETH0.1646460660

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
StrategyVaultTUSD

Compiler Version
v0.5.17+commit.d19bba13

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2020-08-06
*/

/**
 *Submitted for verification at Etherscan.io on 2020-08-04
*/

// SPDX-License-Identifier: MIT

pragma solidity ^0.5.17;

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function decimals() external view returns (uint);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

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) {
        // Solidity only automatically asserts when dividing by 0
        require(b > 0, errorMessage);
        uint256 c = a / b;

        return c;
    }
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }
    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}

library Address {
    function isContract(address account) internal view returns (bool) {
        bytes32 codehash;
        bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
        // solhint-disable-next-line no-inline-assembly
        assembly { codehash := extcodehash(account) }
        return (codehash != 0x0 && codehash != accountHash);
    }
    function toPayable(address account) internal pure returns (address payable) {
        return address(uint160(account));
    }
    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        // solhint-disable-next-line avoid-call-value
        (bool success, ) = recipient.call.value(amount)("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }
}

library SafeERC20 {
    using SafeMath for uint256;
    using Address for address;

    function safeTransfer(IERC20 token, address to, uint256 value) internal {
        callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value));
    }

    function safeTransferFrom(IERC20 token, address from, address to, uint256 value) internal {
        callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value));
    }

    function safeApprove(IERC20 token, address spender, uint256 value) internal {
        require((value == 0) || (token.allowance(address(this), spender) == 0),
            "SafeERC20: approve from non-zero to non-zero allowance"
        );
        callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value));
    }
    function callOptionalReturn(IERC20 token, bytes memory data) private {
        require(address(token).isContract(), "SafeERC20: call to non-contract");

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = address(token).call(data);
        require(success, "SafeERC20: low-level call failed");

        if (returndata.length > 0) { // Return data is optional
            // solhint-disable-next-line max-line-length
            require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed");
        }
    }
}

interface Controller {
    function vaults(address) external view returns (address);
}

interface Vault {
    function deposit(uint) external;
    function withdraw(uint) external;
    function getPricePerFullShare() external view returns (uint);
}

interface Aave {
    function borrow(address _reserve, uint _amount, uint _interestRateModel, uint16 _referralCode) external;
    function setUserUseReserveAsCollateral(address _reserve, bool _useAsCollateral) external;
    function repay(address _reserve, uint _amount, address payable _onBehalfOf) external payable;
    function getUserAccountData(address _user)
        external
        view
        returns (
            uint totalLiquidityETH,
            uint totalCollateralETH,
            uint totalBorrowsETH,
            uint totalFeesETH,
            uint availableBorrowsETH,
            uint currentLiquidationThreshold,
            uint ltv,
            uint healthFactor
        );
    function getUserReserveData(address _reserve, address _user)
        external
        view
        returns (
            uint currentATokenBalance,
            uint currentBorrowBalance,
            uint principalBorrowBalance,
            uint borrowRateMode,
            uint borrowRate,
            uint liquidityRate,
            uint originationFee,
            uint variableBorrowIndex,
            uint lastUpdateTimestamp,
            bool usageAsCollateralEnabled
        );
}

interface LendingPoolAddressesProvider {
    function getLendingPool() external view returns (address);
    function getLendingPoolCore() external view returns (address);
    function getPriceOracle() external view returns (address);
}

/*

 A strategy must implement the following calls;
 
 - deposit()
 - withdraw(address) must exclude any tokens used in the yield - Controller role - withdraw should return to Controller
 - withdraw(uint) - Controller | Vault role - withdraw should always return to vault
 - withdrawAll() - Controller | Vault role - withdraw should always return to vault
 - balanceOf()
 
 Where possible, strategies must remain as immutable as possible, instead of updating variables, we update the contract by linking it in the controller
 
*/

contract StrategyVaultTUSD {
    using SafeERC20 for IERC20;
    using Address for address;
    using SafeMath for uint256;
    
    address constant public want = address(0x0000000000085d4780B73119b644AE5ecd22b376);
    address constant public vault = address(0x37d19d1c4E1fa9DC47bD1eA12f742a0887eDa74a);
    
    address public constant aave = address(0x24a42fD28C976A61Df5D00D0599C34c4f90748c8);

    address public governance;
    address public controller;
    
    constructor(address _controller) public {
        governance = msg.sender;
        controller = _controller;
    }
    
    function deposit() external {
        uint _balance = IERC20(want).balanceOf(address(this));
        if (_balance > 0) {
            IERC20(want).safeApprove(address(vault), 0);
            IERC20(want).safeApprove(address(vault), _balance);
            Vault(vault).deposit(_balance);
        }
    }
    
    function getAave() public view returns (address) {
        return LendingPoolAddressesProvider(aave).getLendingPool();
    }
    
    function getName() external pure returns (string memory) {
        return "StrategyVaultTUSD";
    }
    
    function debt() external view returns (uint) {
        (,uint currentBorrowBalance,,,,,,,,) = Aave(getAave()).getUserReserveData(want, Controller(controller).vaults(address(this)));
        return currentBorrowBalance;
    }
    
    function have() external view returns (uint) {
        uint _have = balanceOf();
        _have = _have.mul(999).div(1000); // Adjust for yVault fee
        return _have;
    }
    
    function skimmable() external view returns (uint) {
        (,uint currentBorrowBalance,,,,,,,,) = Aave(getAave()).getUserReserveData(want, Controller(controller).vaults(address(this)));
        uint _have = balanceOf();
        _have = _have.mul(999).div(1000); // Adjust for yVault fee
        if (_have > currentBorrowBalance) {
            return _have.sub(currentBorrowBalance);
        } else {
            return 0;
        }
    }
    
    function skim() external {
        require(msg.sender == controller, "!controller");
        (,uint currentBorrowBalance,,,,,,,,) = Aave(getAave()).getUserReserveData(want, Controller(controller).vaults(address(this)));
        uint _have = balanceOf();
        _have = _have.mul(999).div(1000); // Adjust for yVault fee
        if (_have > currentBorrowBalance) {
            uint _balance = IERC20(want).balanceOf(address(this));
            uint _amount = _have.sub(currentBorrowBalance);
            if (_balance < _amount) {
                _amount = _withdrawSome(_amount.sub(_balance));
                _amount = _amount.add(_balance);
            } 
            IERC20(want).safeTransfer(controller, _amount);
        }
    }
    
    // Controller only function for creating additional rewards from dust
    function withdraw(IERC20 _asset) external returns (uint balance) {
        require(msg.sender == controller, "!controller");
        require(address(_asset) != address(want), "!want");
        balance = _asset.balanceOf(address(this));
        _asset.safeTransfer(controller, balance);
    }
    
    // Withdraw partial funds, normally used with a vault withdrawal
    function withdraw(uint _amount) external {
        require(msg.sender == controller, "!controller");
        uint _balance = IERC20(want).balanceOf(address(this));
        if (_balance < _amount) {
            _amount = _withdrawSome(_amount.sub(_balance));
            _amount = _amount.add(_balance);
        }
        address _vault = Controller(controller).vaults(address(this));
        require(_vault != address(0), "!vault"); // additional protection so we don't burn the funds
        IERC20(want).safeTransfer(_vault, _amount);
    }
    
    // Withdraw all funds, normally used when migrating strategies
    function withdrawAll() external returns (uint balance) {
        require(msg.sender == controller, "!controller");
        _withdrawAll();
        balance = IERC20(want).balanceOf(address(this));
        address _vault = Controller(controller).vaults(address(this));
        require(_vault != address(0), "!vault"); // additional protection so we don't burn the funds
        IERC20(want).safeTransfer(_vault, balance);
    }
    
    function normalize(uint _amount) public view returns (uint) {
        return _amount.mul(10**IERC20(want).decimals()).div(10**IERC20(vault).decimals());
    }
    
    function _withdrawAll() internal {
        Vault(vault).withdraw(IERC20(vault).balanceOf(address(this)));
    }
    
    function _withdrawSome(uint256 _amount) internal returns (uint) {
        uint _redeem = IERC20(vault).balanceOf(address(this)).mul(_amount).div(balanceSavingsInToken());
        uint _before = IERC20(want).balanceOf(address(this));
        Vault(vault).withdraw(_redeem);
        uint _after = IERC20(want).balanceOf(address(this));
        return _after.sub(_before);
    }
    
    function balanceOf() public view returns (uint) {
        return IERC20(want).balanceOf(address(this))
                .add(balanceSavingsInToken());
    }
    
    function balanceSavingsInToken() public view returns (uint256) {
        return normalize(IERC20(vault).balanceOf(address(this)).mul(Vault(vault).getPricePerFullShare()).div(1e18));
    }
    
    function setGovernance(address _governance) external {
        require(msg.sender == governance, "!governance");
        governance = _governance;
    }
    
    function setController(address _controller) external {
        require(msg.sender == governance, "!governance");
        controller = _controller;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_controller","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"constant":true,"inputs":[],"name":"aave","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"balanceSavingsInToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"controller","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"debt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"deposit","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getAave","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getName","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[],"name":"governance","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"have","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"normalize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_controller","type":"address"}],"name":"setController","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_governance","type":"address"}],"name":"setGovernance","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"skim","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"skimmable","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"vault","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"want","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"withdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"contract IERC20","name":"_asset","type":"address"}],"name":"withdraw","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"withdrawAll","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"}]

608060405234801561001057600080fd5b506040516130d53803806130d58339818101604052602081101561003357600080fd5b8101908080519060200190929190505050336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050613000806100d56000396000f3fe608060405234801561001057600080fd5b506004361061012b5760003560e01c8063722713f7116100ad578063ab033ea911610071578063ab033ea91461045b578063d0e30db01461049f578063f77c4791146104a9578063f7c1ec77146104f3578063fbfa77cf1461053d5761012b565b8063722713f714610373578063819faf7b14610391578063853828b6146103db57806392eefe9b146103f95780639d9f91551461043d5761012b565b80631dd19cb4116100f45780631dd19cb41461024f5780631f1fcd51146102595780632e1a7d4d146102a357806351cff8d9146102d15780635aa6e675146103295761012b565b8062dd6eef146101305780630dca59c114610172578063125009cc1461019057806317d7de7c146101ae578063183dcad914610231575b600080fd5b61015c6004803603602081101561014657600080fd5b8101908080359060200190929190505050610587565b6040518082815260200191505060405180910390f35b61017a6106de565b6040518082815260200191505060405180910390f35b61019861092a565b6040518082815260200191505060405180910390f35b6101b6610ac5565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101f65780820151818401526020810190506101db565b50505050905090810190601f1680156102235780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610239610b02565b6040518082815260200191505060405180910390f35b610257610dac565b005b610261611272565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102cf600480360360208110156102b957600080fd5b8101908080359060200190929190505050611285565b005b610313600480360360208110156102e757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061160e565b6040518082815260200191505060405180910390f35b610331611890565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61037b6118b5565b6040518082815260200191505060405180910390f35b61039961199c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6103e36119b4565b6040518082815260200191505060405180910390f35b61043b6004803603602081101561040f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611d09565b005b610445611e0f565b6040518082815260200191505060405180910390f35b61049d6004803603602081101561047157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611e4e565b005b6104a7611f53565b005b6104b1612147565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6104fb61216d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610545612209565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60006106d77337d19d1c4e1fa9dc47bd1ea12f742a0887eda74a73ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b1580156105e657600080fd5b505afa1580156105fa573d6000803e3d6000fd5b505050506040513d602081101561061057600080fd5b8101908080519060200190929190505050600a0a6106c96e085d4780b73119b644ae5ecd22b37673ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b15801561067c57600080fd5b505afa158015610690573d6000803e3d6000fd5b505050506040513d60208110156106a657600080fd5b8101908080519060200190929190505050600a0a8561222190919063ffffffff16565b6122a790919063ffffffff16565b9050919050565b6000806106e961216d565b73ffffffffffffffffffffffffffffffffffffffff166328dd2d016e085d4780b73119b644ae5ecd22b376600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a622ee7c306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156107b357600080fd5b505afa1580156107c7573d6000803e3d6000fd5b505050506040513d60208110156107dd57600080fd5b81019080805190602001909291905050506040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001925050506101406040518083038186803b15801561088257600080fd5b505afa158015610896573d6000803e3d6000fd5b505050506040513d6101408110156108ad57600080fd5b810190808051906020019092919080519060200190929190805190602001909291908051906020019092919080519060200190929190805190602001909291908051906020019092919080519060200190929190805190602001909291908051906020019092919050505050505050505050509150508091505090565b6000610ac0610abb670de0b6b3a7640000610aad7337d19d1c4e1fa9dc47bd1ea12f742a0887eda74a73ffffffffffffffffffffffffffffffffffffffff166377c7b8fc6040518163ffffffff1660e01b815260040160206040518083038186803b15801561099857600080fd5b505afa1580156109ac573d6000803e3d6000fd5b505050506040513d60208110156109c257600080fd5b81019080805190602001909291905050507337d19d1c4e1fa9dc47bd1ea12f742a0887eda74a73ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610a6457600080fd5b505afa158015610a78573d6000803e3d6000fd5b505050506040513d6020811015610a8e57600080fd5b810190808051906020019092919050505061222190919063ffffffff16565b6122a790919063ffffffff16565b610587565b905090565b60606040518060400160405280601181526020017f53747261746567795661756c7454555344000000000000000000000000000000815250905090565b600080610b0d61216d565b73ffffffffffffffffffffffffffffffffffffffff166328dd2d016e085d4780b73119b644ae5ecd22b376600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a622ee7c306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610bd757600080fd5b505afa158015610beb573d6000803e3d6000fd5b505050506040513d6020811015610c0157600080fd5b81019080805190602001909291905050506040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001925050506101406040518083038186803b158015610ca657600080fd5b505afa158015610cba573d6000803e3d6000fd5b505050506040513d610140811015610cd157600080fd5b810190808051906020019092919080519060200190929190805190602001909291908051906020019092919080519060200190929190805190602001909291908051906020019092919080519060200190929190805190602001909291908051906020019092919050505050505050505050509150506000610d516118b5565b9050610d7c6103e8610d6e6103e78461222190919063ffffffff16565b6122a790919063ffffffff16565b905081811115610da257610d9982826122f190919063ffffffff16565b92505050610da9565b6000925050505b90565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610e6f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21636f6e74726f6c6c657200000000000000000000000000000000000000000081525060200191505060405180910390fd5b6000610e7961216d565b73ffffffffffffffffffffffffffffffffffffffff166328dd2d016e085d4780b73119b644ae5ecd22b376600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a622ee7c306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610f4357600080fd5b505afa158015610f57573d6000803e3d6000fd5b505050506040513d6020811015610f6d57600080fd5b81019080805190602001909291905050506040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001925050506101406040518083038186803b15801561101257600080fd5b505afa158015611026573d6000803e3d6000fd5b505050506040513d61014081101561103d57600080fd5b8101908080519060200190929190805190602001909291908051906020019092919080519060200190929190805190602001909291908051906020019092919080519060200190929190805190602001909291908051906020019092919080519060200190929190505050505050505050505091505060006110bd6118b5565b90506110e86103e86110da6103e78461222190919063ffffffff16565b6122a790919063ffffffff16565b90508181111561126e5760006e085d4780b73119b644ae5ecd22b37673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561118057600080fd5b505afa158015611194573d6000803e3d6000fd5b505050506040513d60208110156111aa57600080fd5b8101908080519060200190929190505050905060006111d284846122f190919063ffffffff16565b90508082101561120f576111f76111f283836122f190919063ffffffff16565b61233b565b905061120c828261266990919063ffffffff16565b90505b61126b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16826e085d4780b73119b644ae5ecd22b37673ffffffffffffffffffffffffffffffffffffffff166126f19092919063ffffffff16565b50505b5050565b6e085d4780b73119b644ae5ecd22b37681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611348576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21636f6e74726f6c6c657200000000000000000000000000000000000000000081525060200191505060405180910390fd5b60006e085d4780b73119b644ae5ecd22b37673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156113d657600080fd5b505afa1580156113ea573d6000803e3d6000fd5b505050506040513d602081101561140057600080fd5b810190808051906020019092919050505090508181101561144e5761143661143182846122f190919063ffffffff16565b61233b565b915061144b818361266990919063ffffffff16565b91505b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a622ee7c306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156114ef57600080fd5b505afa158015611503573d6000803e3d6000fd5b505050506040513d602081101561151957600080fd5b81019080805190602001909291905050509050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156115cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f217661756c74000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b61160981846e085d4780b73119b644ae5ecd22b37673ffffffffffffffffffffffffffffffffffffffff166126f19092919063ffffffff16565b505050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146116d3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21636f6e74726f6c6c657200000000000000000000000000000000000000000081525060200191505060405180910390fd5b6e085d4780b73119b644ae5ecd22b37673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611784576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260058152602001807f2177616e7400000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561180157600080fd5b505afa158015611815573d6000803e3d6000fd5b505050506040513d602081101561182b57600080fd5b8101908080519060200190929190505050905061188b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16828473ffffffffffffffffffffffffffffffffffffffff166126f19092919063ffffffff16565b919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006119976118c261092a565b6e085d4780b73119b644ae5ecd22b37673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561194e57600080fd5b505afa158015611962573d6000803e3d6000fd5b505050506040513d602081101561197857600080fd5b810190808051906020019092919050505061266990919063ffffffff16565b905090565b7324a42fd28c976a61df5d00d0599c34c4f90748c881565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611a79576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21636f6e74726f6c6c657200000000000000000000000000000000000000000081525060200191505060405180910390fd5b611a816127c2565b6e085d4780b73119b644ae5ecd22b37673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611b0d57600080fd5b505afa158015611b21573d6000803e3d6000fd5b505050506040513d6020811015611b3757600080fd5b810190808051906020019092919050505090506000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a622ee7c306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611beb57600080fd5b505afa158015611bff573d6000803e3d6000fd5b505050506040513d6020811015611c1557600080fd5b81019080805190602001909291905050509050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611ccb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f217661756c74000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b611d0581836e085d4780b73119b644ae5ecd22b37673ffffffffffffffffffffffffffffffffffffffff166126f19092919063ffffffff16565b5090565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611dcb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21676f7665726e616e636500000000000000000000000000000000000000000081525060200191505060405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600080611e1a6118b5565b9050611e456103e8611e376103e78461222190919063ffffffff16565b6122a790919063ffffffff16565b90508091505090565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611f10576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21676f7665726e616e636500000000000000000000000000000000000000000081525060200191505060405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60006e085d4780b73119b644ae5ecd22b37673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611fe157600080fd5b505afa158015611ff5573d6000803e3d6000fd5b505050506040513d602081101561200b57600080fd5b810190808051906020019092919050505090506000811115612144576120767337d19d1c4e1fa9dc47bd1ea12f742a0887eda74a60006e085d4780b73119b644ae5ecd22b37673ffffffffffffffffffffffffffffffffffffffff1661290e9092919063ffffffff16565b6120c47337d19d1c4e1fa9dc47bd1ea12f742a0887eda74a826e085d4780b73119b644ae5ecd22b37673ffffffffffffffffffffffffffffffffffffffff1661290e9092919063ffffffff16565b7337d19d1c4e1fa9dc47bd1ea12f742a0887eda74a73ffffffffffffffffffffffffffffffffffffffff1663b6b55f25826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561212b57600080fd5b505af115801561213f573d6000803e3d6000fd5b505050505b50565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60007324a42fd28c976a61df5d00d0599c34c4f90748c873ffffffffffffffffffffffffffffffffffffffff16630261bf8b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156121c957600080fd5b505afa1580156121dd573d6000803e3d6000fd5b505050506040513d60208110156121f357600080fd5b8101908080519060200190929190505050905090565b7337d19d1c4e1fa9dc47bd1ea12f742a0887eda74a81565b60008083141561223457600090506122a1565b600082840290508284828161224557fe5b041461229c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180612f4b6021913960400191505060405180910390fd5b809150505b92915050565b60006122e983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612b2e565b905092915050565b600061233383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612bf4565b905092915050565b60008061243561234961092a565b612427857337d19d1c4e1fa9dc47bd1ea12f742a0887eda74a73ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156123de57600080fd5b505afa1580156123f2573d6000803e3d6000fd5b505050506040513d602081101561240857600080fd5b810190808051906020019092919050505061222190919063ffffffff16565b6122a790919063ffffffff16565b905060006e085d4780b73119b644ae5ecd22b37673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156124c557600080fd5b505afa1580156124d9573d6000803e3d6000fd5b505050506040513d60208110156124ef57600080fd5b810190808051906020019092919050505090507337d19d1c4e1fa9dc47bd1ea12f742a0887eda74a73ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d836040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561256957600080fd5b505af115801561257d573d6000803e3d6000fd5b5050505060006e085d4780b73119b644ae5ecd22b37673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561260f57600080fd5b505afa158015612623573d6000803e3d6000fd5b505050506040513d602081101561263957600080fd5b8101908080519060200190929190505050905061265f82826122f190919063ffffffff16565b9350505050919050565b6000808284019050838110156126e7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b6127bd838473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb905060e01b8484604051602401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612cb4565b505050565b7337d19d1c4e1fa9dc47bd1ea12f742a0887eda74a73ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d7337d19d1c4e1fa9dc47bd1ea12f742a0887eda74a73ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561288357600080fd5b505afa158015612897573d6000803e3d6000fd5b505050506040513d60208110156128ad57600080fd5b81019080805190602001909291905050506040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b1580156128f457600080fd5b505af1158015612908573d6000803e3d6000fd5b50505050565b6000811480612a08575060008373ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e30856040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060206040518083038186803b1580156129cb57600080fd5b505afa1580156129df573d6000803e3d6000fd5b505050506040513d60208110156129f557600080fd5b8101908080519060200190929190505050145b612a5d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526036815260200180612f966036913960400191505060405180910390fd5b612b29838473ffffffffffffffffffffffffffffffffffffffff1663095ea7b3905060e01b8484604051602401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612cb4565b505050565b60008083118290612bda576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612b9f578082015181840152602081019050612b84565b50505050905090810190601f168015612bcc5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581612be657fe5b049050809150509392505050565b6000838311158290612ca1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612c66578082015181840152602081019050612c4b565b50505050905090810190601f168015612c935780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b612cd38273ffffffffffffffffffffffffffffffffffffffff16612eff565b612d45576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e74726163740081525060200191505060405180910390fd5b600060608373ffffffffffffffffffffffffffffffffffffffff16836040518082805190602001908083835b60208310612d945780518252602082019150602081019050602083039250612d71565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114612df6576040519150601f19603f3d011682016040523d82523d6000602084013e612dfb565b606091505b509150915081612e73576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656481525060200191505060405180910390fd5b600081511115612ef957808060200190516020811015612e9257600080fd5b8101908080519060200190929190505050612ef8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180612f6c602a913960400191505060405180910390fd5b5b50505050565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f91506000801b8214158015612f415750808214155b9250505091905056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775361666545524332303a204552433230206f7065726174696f6e20646964206e6f7420737563636565645361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f20746f206e6f6e2d7a65726f20616c6c6f77616e6365a265627a7a72315820c52c8d983647129354276b54f226cfe517fb1d1bcaa1fbcc2488d1933f4bb35864736f6c634300051100320000000000000000000000002be5d998c95de70d9a38b3d78e49751f10f9e88b

Deployed Bytecode

0x608060405234801561001057600080fd5b506004361061012b5760003560e01c8063722713f7116100ad578063ab033ea911610071578063ab033ea91461045b578063d0e30db01461049f578063f77c4791146104a9578063f7c1ec77146104f3578063fbfa77cf1461053d5761012b565b8063722713f714610373578063819faf7b14610391578063853828b6146103db57806392eefe9b146103f95780639d9f91551461043d5761012b565b80631dd19cb4116100f45780631dd19cb41461024f5780631f1fcd51146102595780632e1a7d4d146102a357806351cff8d9146102d15780635aa6e675146103295761012b565b8062dd6eef146101305780630dca59c114610172578063125009cc1461019057806317d7de7c146101ae578063183dcad914610231575b600080fd5b61015c6004803603602081101561014657600080fd5b8101908080359060200190929190505050610587565b6040518082815260200191505060405180910390f35b61017a6106de565b6040518082815260200191505060405180910390f35b61019861092a565b6040518082815260200191505060405180910390f35b6101b6610ac5565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101f65780820151818401526020810190506101db565b50505050905090810190601f1680156102235780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610239610b02565b6040518082815260200191505060405180910390f35b610257610dac565b005b610261611272565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102cf600480360360208110156102b957600080fd5b8101908080359060200190929190505050611285565b005b610313600480360360208110156102e757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061160e565b6040518082815260200191505060405180910390f35b610331611890565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61037b6118b5565b6040518082815260200191505060405180910390f35b61039961199c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6103e36119b4565b6040518082815260200191505060405180910390f35b61043b6004803603602081101561040f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611d09565b005b610445611e0f565b6040518082815260200191505060405180910390f35b61049d6004803603602081101561047157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611e4e565b005b6104a7611f53565b005b6104b1612147565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6104fb61216d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610545612209565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60006106d77337d19d1c4e1fa9dc47bd1ea12f742a0887eda74a73ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b1580156105e657600080fd5b505afa1580156105fa573d6000803e3d6000fd5b505050506040513d602081101561061057600080fd5b8101908080519060200190929190505050600a0a6106c96e085d4780b73119b644ae5ecd22b37673ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b15801561067c57600080fd5b505afa158015610690573d6000803e3d6000fd5b505050506040513d60208110156106a657600080fd5b8101908080519060200190929190505050600a0a8561222190919063ffffffff16565b6122a790919063ffffffff16565b9050919050565b6000806106e961216d565b73ffffffffffffffffffffffffffffffffffffffff166328dd2d016e085d4780b73119b644ae5ecd22b376600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a622ee7c306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156107b357600080fd5b505afa1580156107c7573d6000803e3d6000fd5b505050506040513d60208110156107dd57600080fd5b81019080805190602001909291905050506040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001925050506101406040518083038186803b15801561088257600080fd5b505afa158015610896573d6000803e3d6000fd5b505050506040513d6101408110156108ad57600080fd5b810190808051906020019092919080519060200190929190805190602001909291908051906020019092919080519060200190929190805190602001909291908051906020019092919080519060200190929190805190602001909291908051906020019092919050505050505050505050509150508091505090565b6000610ac0610abb670de0b6b3a7640000610aad7337d19d1c4e1fa9dc47bd1ea12f742a0887eda74a73ffffffffffffffffffffffffffffffffffffffff166377c7b8fc6040518163ffffffff1660e01b815260040160206040518083038186803b15801561099857600080fd5b505afa1580156109ac573d6000803e3d6000fd5b505050506040513d60208110156109c257600080fd5b81019080805190602001909291905050507337d19d1c4e1fa9dc47bd1ea12f742a0887eda74a73ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610a6457600080fd5b505afa158015610a78573d6000803e3d6000fd5b505050506040513d6020811015610a8e57600080fd5b810190808051906020019092919050505061222190919063ffffffff16565b6122a790919063ffffffff16565b610587565b905090565b60606040518060400160405280601181526020017f53747261746567795661756c7454555344000000000000000000000000000000815250905090565b600080610b0d61216d565b73ffffffffffffffffffffffffffffffffffffffff166328dd2d016e085d4780b73119b644ae5ecd22b376600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a622ee7c306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610bd757600080fd5b505afa158015610beb573d6000803e3d6000fd5b505050506040513d6020811015610c0157600080fd5b81019080805190602001909291905050506040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001925050506101406040518083038186803b158015610ca657600080fd5b505afa158015610cba573d6000803e3d6000fd5b505050506040513d610140811015610cd157600080fd5b810190808051906020019092919080519060200190929190805190602001909291908051906020019092919080519060200190929190805190602001909291908051906020019092919080519060200190929190805190602001909291908051906020019092919050505050505050505050509150506000610d516118b5565b9050610d7c6103e8610d6e6103e78461222190919063ffffffff16565b6122a790919063ffffffff16565b905081811115610da257610d9982826122f190919063ffffffff16565b92505050610da9565b6000925050505b90565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610e6f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21636f6e74726f6c6c657200000000000000000000000000000000000000000081525060200191505060405180910390fd5b6000610e7961216d565b73ffffffffffffffffffffffffffffffffffffffff166328dd2d016e085d4780b73119b644ae5ecd22b376600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a622ee7c306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610f4357600080fd5b505afa158015610f57573d6000803e3d6000fd5b505050506040513d6020811015610f6d57600080fd5b81019080805190602001909291905050506040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001925050506101406040518083038186803b15801561101257600080fd5b505afa158015611026573d6000803e3d6000fd5b505050506040513d61014081101561103d57600080fd5b8101908080519060200190929190805190602001909291908051906020019092919080519060200190929190805190602001909291908051906020019092919080519060200190929190805190602001909291908051906020019092919080519060200190929190505050505050505050505091505060006110bd6118b5565b90506110e86103e86110da6103e78461222190919063ffffffff16565b6122a790919063ffffffff16565b90508181111561126e5760006e085d4780b73119b644ae5ecd22b37673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561118057600080fd5b505afa158015611194573d6000803e3d6000fd5b505050506040513d60208110156111aa57600080fd5b8101908080519060200190929190505050905060006111d284846122f190919063ffffffff16565b90508082101561120f576111f76111f283836122f190919063ffffffff16565b61233b565b905061120c828261266990919063ffffffff16565b90505b61126b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16826e085d4780b73119b644ae5ecd22b37673ffffffffffffffffffffffffffffffffffffffff166126f19092919063ffffffff16565b50505b5050565b6e085d4780b73119b644ae5ecd22b37681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611348576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21636f6e74726f6c6c657200000000000000000000000000000000000000000081525060200191505060405180910390fd5b60006e085d4780b73119b644ae5ecd22b37673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156113d657600080fd5b505afa1580156113ea573d6000803e3d6000fd5b505050506040513d602081101561140057600080fd5b810190808051906020019092919050505090508181101561144e5761143661143182846122f190919063ffffffff16565b61233b565b915061144b818361266990919063ffffffff16565b91505b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a622ee7c306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156114ef57600080fd5b505afa158015611503573d6000803e3d6000fd5b505050506040513d602081101561151957600080fd5b81019080805190602001909291905050509050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156115cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f217661756c74000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b61160981846e085d4780b73119b644ae5ecd22b37673ffffffffffffffffffffffffffffffffffffffff166126f19092919063ffffffff16565b505050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146116d3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21636f6e74726f6c6c657200000000000000000000000000000000000000000081525060200191505060405180910390fd5b6e085d4780b73119b644ae5ecd22b37673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611784576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260058152602001807f2177616e7400000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561180157600080fd5b505afa158015611815573d6000803e3d6000fd5b505050506040513d602081101561182b57600080fd5b8101908080519060200190929190505050905061188b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16828473ffffffffffffffffffffffffffffffffffffffff166126f19092919063ffffffff16565b919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006119976118c261092a565b6e085d4780b73119b644ae5ecd22b37673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561194e57600080fd5b505afa158015611962573d6000803e3d6000fd5b505050506040513d602081101561197857600080fd5b810190808051906020019092919050505061266990919063ffffffff16565b905090565b7324a42fd28c976a61df5d00d0599c34c4f90748c881565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611a79576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21636f6e74726f6c6c657200000000000000000000000000000000000000000081525060200191505060405180910390fd5b611a816127c2565b6e085d4780b73119b644ae5ecd22b37673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611b0d57600080fd5b505afa158015611b21573d6000803e3d6000fd5b505050506040513d6020811015611b3757600080fd5b810190808051906020019092919050505090506000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a622ee7c306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611beb57600080fd5b505afa158015611bff573d6000803e3d6000fd5b505050506040513d6020811015611c1557600080fd5b81019080805190602001909291905050509050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611ccb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f217661756c74000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b611d0581836e085d4780b73119b644ae5ecd22b37673ffffffffffffffffffffffffffffffffffffffff166126f19092919063ffffffff16565b5090565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611dcb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21676f7665726e616e636500000000000000000000000000000000000000000081525060200191505060405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600080611e1a6118b5565b9050611e456103e8611e376103e78461222190919063ffffffff16565b6122a790919063ffffffff16565b90508091505090565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611f10576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21676f7665726e616e636500000000000000000000000000000000000000000081525060200191505060405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60006e085d4780b73119b644ae5ecd22b37673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611fe157600080fd5b505afa158015611ff5573d6000803e3d6000fd5b505050506040513d602081101561200b57600080fd5b810190808051906020019092919050505090506000811115612144576120767337d19d1c4e1fa9dc47bd1ea12f742a0887eda74a60006e085d4780b73119b644ae5ecd22b37673ffffffffffffffffffffffffffffffffffffffff1661290e9092919063ffffffff16565b6120c47337d19d1c4e1fa9dc47bd1ea12f742a0887eda74a826e085d4780b73119b644ae5ecd22b37673ffffffffffffffffffffffffffffffffffffffff1661290e9092919063ffffffff16565b7337d19d1c4e1fa9dc47bd1ea12f742a0887eda74a73ffffffffffffffffffffffffffffffffffffffff1663b6b55f25826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561212b57600080fd5b505af115801561213f573d6000803e3d6000fd5b505050505b50565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60007324a42fd28c976a61df5d00d0599c34c4f90748c873ffffffffffffffffffffffffffffffffffffffff16630261bf8b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156121c957600080fd5b505afa1580156121dd573d6000803e3d6000fd5b505050506040513d60208110156121f357600080fd5b8101908080519060200190929190505050905090565b7337d19d1c4e1fa9dc47bd1ea12f742a0887eda74a81565b60008083141561223457600090506122a1565b600082840290508284828161224557fe5b041461229c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180612f4b6021913960400191505060405180910390fd5b809150505b92915050565b60006122e983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612b2e565b905092915050565b600061233383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612bf4565b905092915050565b60008061243561234961092a565b612427857337d19d1c4e1fa9dc47bd1ea12f742a0887eda74a73ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156123de57600080fd5b505afa1580156123f2573d6000803e3d6000fd5b505050506040513d602081101561240857600080fd5b810190808051906020019092919050505061222190919063ffffffff16565b6122a790919063ffffffff16565b905060006e085d4780b73119b644ae5ecd22b37673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156124c557600080fd5b505afa1580156124d9573d6000803e3d6000fd5b505050506040513d60208110156124ef57600080fd5b810190808051906020019092919050505090507337d19d1c4e1fa9dc47bd1ea12f742a0887eda74a73ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d836040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561256957600080fd5b505af115801561257d573d6000803e3d6000fd5b5050505060006e085d4780b73119b644ae5ecd22b37673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561260f57600080fd5b505afa158015612623573d6000803e3d6000fd5b505050506040513d602081101561263957600080fd5b8101908080519060200190929190505050905061265f82826122f190919063ffffffff16565b9350505050919050565b6000808284019050838110156126e7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b6127bd838473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb905060e01b8484604051602401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612cb4565b505050565b7337d19d1c4e1fa9dc47bd1ea12f742a0887eda74a73ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d7337d19d1c4e1fa9dc47bd1ea12f742a0887eda74a73ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561288357600080fd5b505afa158015612897573d6000803e3d6000fd5b505050506040513d60208110156128ad57600080fd5b81019080805190602001909291905050506040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b1580156128f457600080fd5b505af1158015612908573d6000803e3d6000fd5b50505050565b6000811480612a08575060008373ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e30856040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060206040518083038186803b1580156129cb57600080fd5b505afa1580156129df573d6000803e3d6000fd5b505050506040513d60208110156129f557600080fd5b8101908080519060200190929190505050145b612a5d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526036815260200180612f966036913960400191505060405180910390fd5b612b29838473ffffffffffffffffffffffffffffffffffffffff1663095ea7b3905060e01b8484604051602401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612cb4565b505050565b60008083118290612bda576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612b9f578082015181840152602081019050612b84565b50505050905090810190601f168015612bcc5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581612be657fe5b049050809150509392505050565b6000838311158290612ca1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612c66578082015181840152602081019050612c4b565b50505050905090810190601f168015612c935780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b612cd38273ffffffffffffffffffffffffffffffffffffffff16612eff565b612d45576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e74726163740081525060200191505060405180910390fd5b600060608373ffffffffffffffffffffffffffffffffffffffff16836040518082805190602001908083835b60208310612d945780518252602082019150602081019050602083039250612d71565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114612df6576040519150601f19603f3d011682016040523d82523d6000602084013e612dfb565b606091505b509150915081612e73576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656481525060200191505060405180910390fd5b600081511115612ef957808060200190516020811015612e9257600080fd5b8101908080519060200190929190505050612ef8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180612f6c602a913960400191505060405180910390fd5b5b50505050565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f91506000801b8214158015612f415750808214155b9250505091905056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775361666545524332303a204552433230206f7065726174696f6e20646964206e6f7420737563636565645361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f20746f206e6f6e2d7a65726f20616c6c6f77616e6365a265627a7a72315820c52c8d983647129354276b54f226cfe517fb1d1bcaa1fbcc2488d1933f4bb35864736f6c63430005110032

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

0000000000000000000000002be5d998c95de70d9a38b3d78e49751f10f9e88b

-----Decoded View---------------
Arg [0] : _controller (address): 0x2be5D998C95DE70D9A38b3d78e49751F10F9E88b

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000002be5d998c95de70d9a38b3d78e49751f10f9e88b


Deployed Bytecode Sourcemap

7015:5748:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7015:5748:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11377:160;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11377:160:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;8200:227;;;:::i;:::-;;;;;;;;;;;;;;;;;;;12237:189;;;:::i;:::-;;;;;;;;;;;;;;;;;;;8086:102;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;8086:102:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8630:447;;;:::i;:::-;;;;;;;;;;;;;;;;;;;9089:747;;;:::i;:::-;;7153:82;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;10301:552;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;10301:552:0;;;;;;;;;;;;;;;;;:::i;:::-;;9923:296;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9923:296:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;7429:25;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;12067:158;;;:::i;:::-;;;;;;;;;;;;;;;;;;;7338:82;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;10933:432;;;:::i;:::-;;;;;;;;;;;;;;;;;;;12605:155;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;12605:155:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;8439:179;;;:::i;:::-;;;;;;;;;;;;;;;;;;;12438:155;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;12438:155:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;7628:308;;;:::i;:::-;;7461:25;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;7948:126;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;7242:83;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;11377:160;11431:4;11455:74;7282:42;11504:22;;;:24;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11504:24:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11504:24:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11504:24:0;;;;;;;;;;;;;;;;11500:2;:28;11455:40;7192:42;11471:21;;;:23;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11471:23:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11471:23:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11471:23:0;;;;;;;;;;;;;;;;11467:2;:27;11455:7;:11;;:40;;;;:::i;:::-;:44;;:74;;;;:::i;:::-;11448:81;;11377:160;;;:::o;8200:227::-;8239:4;8258:25;8300:9;:7;:9::i;:::-;8295:34;;;7192:42;8347:10;;;;;;;;;;;8336:29;;;8374:4;8336:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8336:44:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8336:44:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;8336:44:0;;;;;;;;;;;;;;;;8295:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8295:86:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8295:86:0;;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;8295:86:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8256:125;;;;;;;;;;;8399:20;8392:27;;;8200:227;:::o;12237:189::-;12291:7;12318:100;12328:89;12412:4;12328:79;7282:42;12371:33;;;:35;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12371:35:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12371:35:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;12371:35:0;;;;;;;;;;;;;;;;7282:42;12328:23;;;12360:4;12328:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12328:38:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12328:38:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;12328:38:0;;;;;;;;;;;;;;;;:42;;:79;;;;:::i;:::-;:83;;:89;;;;:::i;:::-;12318:9;:100::i;:::-;12311:107;;12237:189;:::o;8086:102::-;8128:13;8154:26;;;;;;;;;;;;;;;;;;;8086:102;:::o;8630:447::-;8674:4;8693:25;8735:9;:7;:9::i;:::-;8730:34;;;7192:42;8782:10;;;;;;;;;;;8771:29;;;8809:4;8771:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8771:44:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8771:44:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;8771:44:0;;;;;;;;;;;;;;;;8730:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8730:86:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8730:86:0;;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;8730:86:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8691:125;;;;;;;;;;;8827:10;8840:11;:9;:11::i;:::-;8827:24;;8870;8889:4;8870:14;8880:3;8870:5;:9;;:14;;;;:::i;:::-;:18;;:24;;;;:::i;:::-;8862:32;;8942:20;8934:5;:28;8930:140;;;8986:31;8996:20;8986:5;:9;;:31;;;;:::i;:::-;8979:38;;;;;;8930:140;9057:1;9050:8;;;;8630:447;;:::o;9089:747::-;9147:10;;;;;;;;;;;9133:24;;:10;:24;;;9125:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9186:25;9228:9;:7;:9::i;:::-;9223:34;;;7192:42;9275:10;;;;;;;;;;;9264:29;;;9302:4;9264:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9264:44:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9264:44:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9264:44:0;;;;;;;;;;;;;;;;9223:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9223:86:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9223:86:0;;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;9223:86:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9184:125;;;;;;;;;;;9320:10;9333:11;:9;:11::i;:::-;9320:24;;9363;9382:4;9363:14;9373:3;9363:5;:9;;:14;;;;:::i;:::-;:18;;:24;;;;:::i;:::-;9355:32;;9435:20;9427:5;:28;9423:406;;;9472:13;7192:42;9488:22;;;9519:4;9488:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9488:37:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9488:37:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9488:37:0;;;;;;;;;;;;;;;;9472:53;;9540:12;9555:31;9565:20;9555:5;:9;;:31;;;;:::i;:::-;9540:46;;9616:7;9605:8;:18;9601:155;;;9654:36;9668:21;9680:8;9668:7;:11;;:21;;;;:::i;:::-;9654:13;:36::i;:::-;9644:46;;9719:21;9731:8;9719:7;:11;;:21;;;;:::i;:::-;9709:31;;9601:155;9771:46;9797:10;;;;;;;;;;;9809:7;7192:42;9771:25;;;;:46;;;;;:::i;:::-;9423:406;;;9089:747;;:::o;7153:82::-;7192:42;7153:82;:::o;10301:552::-;10375:10;;;;;;;;;;;10361:24;;:10;:24;;;10353:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10412:13;7192:42;10428:22;;;10459:4;10428:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10428:37:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;10428:37:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;10428:37:0;;;;;;;;;;;;;;;;10412:53;;10491:7;10480:8;:18;10476:143;;;10525:36;10539:21;10551:8;10539:7;:11;;:21;;;;:::i;:::-;10525:13;:36::i;:::-;10515:46;;10586:21;10598:8;10586:7;:11;;:21;;;;:::i;:::-;10576:31;;10476:143;10629:14;10657:10;;;;;;;;;;;10646:29;;;10684:4;10646:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10646:44:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;10646:44:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;10646:44:0;;;;;;;;;;;;;;;;10629:61;;10727:1;10709:20;;:6;:20;;;;10701:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10803:42;10829:6;10837:7;7192:42;10803:25;;;;:42;;;;;:::i;:::-;10301:552;;;:::o;9923:296::-;9974:12;10021:10;;;;;;;;;;;10007:24;;:10;:24;;;9999:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7192:42;10066:32;;10074:6;10066:32;;;;10058:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10129:6;:16;;;10154:4;10129:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10129:31:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;10129:31:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;10129:31:0;;;;;;;;;;;;;;;;10119:41;;10171:40;10191:10;;;;;;;;;;;10203:7;10171:6;:19;;;;:40;;;;;:::i;:::-;9923:296;;;:::o;7429:25::-;;;;;;;;;;;;;:::o;12067:158::-;12109:4;12133:84;12193:23;:21;:23::i;:::-;7192:42;12133:22;;;12164:4;12133:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12133:37:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12133:37:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;12133:37:0;;;;;;;;;;;;;;;;:59;;:84;;;;:::i;:::-;12126:91;;12067:158;:::o;7338:82::-;7377:42;7338:82;:::o;10933:432::-;10974:12;11021:10;;;;;;;;;;;11007:24;;:10;:24;;;10999:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11058:14;:12;:14::i;:::-;7192:42;11093:22;;;11124:4;11093:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11093:37:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11093:37:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11093:37:0;;;;;;;;;;;;;;;;11083:47;;11141:14;11169:10;;;;;;;;;;;11158:29;;;11196:4;11158:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11158:44:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11158:44:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11158:44:0;;;;;;;;;;;;;;;;11141:61;;11239:1;11221:20;;:6;:20;;;;11213:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11315:42;11341:6;11349:7;7192:42;11315:25;;;;:42;;;;;:::i;:::-;10933:432;;:::o;12605:155::-;12691:10;;;;;;;;;;;12677:24;;:10;:24;;;12669:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12741:11;12728:10;;:24;;;;;;;;;;;;;;;;;;12605:155;:::o;8439:179::-;8478:4;8495:10;8508:11;:9;:11::i;:::-;8495:24;;8538;8557:4;8538:14;8548:3;8538:5;:9;;:14;;;;:::i;:::-;:18;;:24;;;;:::i;:::-;8530:32;;8605:5;8598:12;;;8439:179;:::o;12438:155::-;12524:10;;;;;;;;;;;12510:24;;:10;:24;;;12502:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12574:11;12561:10;;:24;;;;;;;;;;;;;;;;;;12438:155;:::o;7628:308::-;7667:13;7192:42;7683:22;;;7714:4;7683:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7683:37:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7683:37:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7683:37:0;;;;;;;;;;;;;;;;7667:53;;7746:1;7735:8;:12;7731:198;;;7764:43;7282:42;7805:1;7192:42;7764:24;;;;:43;;;;;:::i;:::-;7822:50;7282:42;7863:8;7192:42;7822:24;;;;:50;;;;;:::i;:::-;7282:42;7887:20;;;7908:8;7887:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7887:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7887:30:0;;;;7731:198;7628:308;:::o;7461:25::-;;;;;;;;;;;;;:::o;7948:126::-;7988:7;7377:42;8015:49;;;:51;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8015:51:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8015:51:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;8015:51:0;;;;;;;;;;;;;;;;8008:58;;7948:126;:::o;7242:83::-;7282:42;7242:83;:::o;1417:250::-;1475:7;1504:1;1499;:6;1495:47;;;1529:1;1522:8;;;;1495:47;1554:9;1570:1;1566;:5;1554:17;;1599:1;1594;1590;:5;;;;;;:10;1582:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1658:1;1651:8;;;1417:250;;;;;:::o;1673:132::-;1731:7;1758:39;1762:1;1765;1758:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1751:46;;1673:132;;;;:::o;1077:136::-;1135:7;1162:43;1166:1;1169;1162:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1155:50;;1077:136;;;;:::o;11674:381::-;11732:4;11749:12;11764:80;11820:23;:21;:23::i;:::-;11764:51;11807:7;7282:42;11764:23;;;11796:4;11764:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11764:38:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11764:38:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11764:38:0;;;;;;;;;;;;;;;;:42;;:51;;;;:::i;:::-;:55;;:80;;;;:::i;:::-;11749:95;;11855:12;7192:42;11870:22;;;11901:4;11870:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11870:37:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11870:37:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11870:37:0;;;;;;;;;;;;;;;;11855:52;;7282:42;11918:21;;;11940:7;11918:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11918:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11918:30:0;;;;11959:11;7192:42;11973:22;;;12004:4;11973:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11973:37:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11973:37:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11973:37:0;;;;;;;;;;;;;;;;11959:51;;12028:19;12039:7;12028:6;:10;;:19;;;;:::i;:::-;12021:26;;;;;11674:381;;;:::o;890:181::-;948:7;968:9;984:1;980;:5;968:17;;1009:1;1004;:6;;996:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1062:1;1055:8;;;890:181;;;;:::o;3390:176::-;3473:85;3492:5;3522;:14;;;:23;;;;3547:2;3551:5;3499:58;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;3499:58:0;;;;;;;38:4:-1;29:7;25:18;67:10;61:17;96:58;199:8;192:4;186;182:15;179:29;167:10;160:49;0:215;;;3499:58:0;3473:18;:85::i;:::-;3390:176;;;:::o;11549:113::-;7282:42;11593:21;;;7282:42;11615:23;;;11647:4;11615:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11615:38:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11615:38:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11615:38:0;;;;;;;;;;;;;;;;11593:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11593:61:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11593:61:0;;;;11549:113::o;3786:347::-;3891:1;3882:5;:10;3881:62;;;;3941:1;3898:5;:15;;;3922:4;3929:7;3898:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3898:39:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3898:39:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3898:39:0;;;;;;;;;;;;;;;;:44;3881:62;3873:152;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4036:89;4055:5;4085;:13;;;:22;;;;4109:7;4118:5;4062:62;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;4062:62:0;;;;;;;38:4:-1;29:7;25:18;67:10;61:17;96:58;199:8;192:4;186;182:15;179:29;167:10;160:49;0:215;;;4062:62:0;4036:18;:89::i;:::-;3786:347;;;:::o;1811:258::-;1897:7;1996:1;1992;:5;1999:12;1984:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;1984:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2023:9;2039:1;2035;:5;;;;;;2023:17;;2060:1;2053:8;;;1811:258;;;;;:::o;1219:192::-;1305:7;1338:1;1333;:6;;1341:12;1325:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;1325:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1365:9;1381:1;1377;:5;1365:17;;1402:1;1395:8;;;1219:192;;;;;:::o;4139:598::-;4227:27;4235:5;4227:25;;;:27::i;:::-;4219:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4364:12;4378:23;4413:5;4405:19;;4425:4;4405:25;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;4405:25:0;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;4363:67:0;;;;4449:7;4441:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4530:1;4510:10;:17;:21;4506:224;;;4652:10;4641:30;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4641:30:0;;;;;;;;;;;;;;;;4633:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4506:224;4139:598;;;;:::o;2407:374::-;2467:4;2484:16;2511:19;2533:66;2511:88;;;;2702:7;2690:20;2678:32;;2742:3;2730:15;;:8;:15;;:42;;;;;2761:11;2749:8;:23;;2730:42;2722:51;;;;2407:374;;;:::o

Swarm Source

bzzr://c52c8d983647129354276b54f226cfe517fb1d1bcaa1fbcc2488d1933f4bb358

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.