ETH Price: $3,335.58 (-1.17%)

Token

BitcashPay (BCP)
 

Overview

Max Total Supply

849,999,993.9459893 BCP

Holders

3,950 (0.00%)

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 8 Decimals)

Balance
500 BCP

Value
$0.00
0xE10c528868295F1410910E1d884b758ea1bbef25
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

BitCashPay is as an “All in One” crypto platform that offers a crypto bank, lending, Academy, fiat gateway, exchange & much more!

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
BitcashPay

Compiler Version
v0.6.7+commit.b8d736ae

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2020-07-30
*/

// SPDX-License-Identifier: MIT
pragma solidity >=0.4.21 <0.7.0;

library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     *
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     *
     * - Multiplication cannot overflow.
     */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
        if (a == 0) {
            return 0;
        }

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

        return c;
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts with custom message on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts with custom message when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}

contract ReentrancyGuard {
    // Booleans are more expensive than uint256 or any type that takes up a full
    // word because each write operation emits an extra SLOAD to first read the
    // slot's contents, replace the bits taken up by the boolean, and then write
    // back. This is the compiler's defense against contract upgrades and
    // pointer aliasing, and it cannot be disabled.

    // The values being non-zero value makes deployment a bit more expensive,
    // but in exchange the refund on every call to nonReentrant will be lower in
    // amount. Since refunds are capped to a percentage of the total
    // transaction's gas, it is best to keep them low in cases like this one, to
    // increase the likelihood of the full refund coming into effect.
    uint256 private constant _NOT_ENTERED = 1;
    uint256 private constant _ENTERED = 2;

    uint256 private _status;

    constructor () internal {
        _status = _NOT_ENTERED;
    }

    /**
     * @dev Prevents a contract from calling itself, directly or indirectly.
     * Calling a `nonReentrant` function from another `nonReentrant`
     * function is not supported. It is possible to prevent this from happening
     * by making the `nonReentrant` function external, and make it call a
     * `private` function that does the actual work.
     */
    modifier nonReentrant() {
        // On the first call to nonReentrant, _notEntered will be true
        require(_status != _ENTERED, "ReentrancyGuard: reentrant call");

        // Any calls to nonReentrant after this point will fail
        _status = _ENTERED;

        _;

        // By storing the original value once again, a refund is triggered (see
        // https://eips.ethereum.org/EIPS/eip-2200)
        _status = _NOT_ENTERED;
    }
}


contract BitcashPay is ReentrancyGuard{

    using SafeMath for uint256;

    string public constant name          =           'BitcashPay';
    string public constant symbol        =           'BCP';
    uint public totalSupply;
    uint8 public constant decimals       =           8;
    address payable owner;
    uint public buyPriceEth              =           100 szabo;
    uint public sellPriceEth             =           100 szabo;
    uint private constant MULTIPLIER     =           100000000;

    bool public directSellAllowed       =           false;
    bool public directBuyAllowed        =           false;

    bool public directTransferAllowed   =           false;

    uint public reservedCoin            =           175000000;
    address payable PresaleAddress;

    mapping(address => uint256) public balanceOf;
    mapping(address => mapping(address => uint256)) public allowed;
    
    event Transfer(address indexed _from, address indexed _to, uint256 _value);
    event Approval(address indexed _owner, address indexed _spender, uint256 _value);

    uint private releaseTime = 1627776000;
    
    constructor() ReentrancyGuard() public {
        uint _totalSupply = 850000000;
        owner = msg.sender;
        balanceOf[msg.sender] = _totalSupply.mul(MULTIPLIER);
        totalSupply = _totalSupply.mul(MULTIPLIER);
    }

    modifier ownerOnly {
        if (msg.sender != owner && msg.sender != address(this)) revert("Access Denied!");
        _;
    }

    function burnToken(address account, uint256 amount) ownerOnly public returns (bool success) {
        require(account != address(0), "ERC20: burn from the zero address");

        balanceOf[account] = balanceOf[account].sub(amount.mul(MULTIPLIER), "ERC20: burn amount exceeds balance");
        totalSupply = totalSupply.sub(amount);
        emit Transfer(account, address(0), amount);
        return true;
    }

    function transferEther(address payable _to, uint _amount) public ownerOnly returns (bool success)
    {
        uint amount = _amount * 10 ** 18;
        _to.transfer(amount.div(1000));
        return true;
    }

    function setBuyPrice(uint buyPrice) public ownerOnly {
        buyPriceEth = buyPrice;
    }

    function setSellPrice(uint sellPrice) public ownerOnly {
        sellPriceEth = sellPrice;
    }

    function allowDirectBuy() private {
        directBuyAllowed = true;
    }

    function allowDirectSell() private {
        directSellAllowed = true;
    }

    function allowDirectTransfer() private {
        directTransferAllowed = true;
    }

    function denyDirectBuy() private {
        directBuyAllowed = false;
    }

    function denyDirectSell() private {
        directSellAllowed = false;
    }

    function denyDirectTransfer() private {
        directTransferAllowed = false;
    }

    function ownerAllowDirectBuy() public ownerOnly {
        allowDirectBuy();
    }

    function ownerAllowDirectSell() public ownerOnly {
        allowDirectSell();
    }

    function ownerAllowDirectTransfer() public ownerOnly {
        allowDirectTransfer();
    }

    function ownerDenyDirectBuy() public ownerOnly {
        denyDirectBuy();
    }

    function ownerDenyDirectSell() public ownerOnly {
        denyDirectSell();
    }

    function ownerDenyDirectTransfer() public ownerOnly {
        denyDirectTransfer();
    }


    function setPresaleAddress(address payable _presaleAddress) public ownerOnly {
        PresaleAddress = _presaleAddress;
    }


    function transfer(address _to, uint _amount) public nonReentrant returns (bool success){
        if (msg.sender != owner && _to == address(this) && directSellAllowed) {
            sellBitcashPayAgainstEther(_amount);                             
            return true;
        }
        _transfer(msg.sender, _to, _amount);
        return true;
    }

    function transferFrom(address _from, address _to, uint256 _value) public returns (bool success) {
        if (balanceOf[_from] >= _value && allowed[_from][msg.sender] >= _value && balanceOf[_to] + _value > balanceOf[_to]) {
            balanceOf[_from] -= _value;
            balanceOf[_to] += _value;
            allowed[_from][msg.sender] -= _value;
            emit Transfer(_from, _to, _value);
            return true;
        } else { return false; }
    }

    function approve(address _spender, uint256 _value) public returns (bool success) {
        allowed[msg.sender][_spender] = _value;
        emit Approval(msg.sender, _spender, _value);
        return true;
    }

    function allowance(address _owner, address _spender) public view returns (uint256 remaining) {
        return allowed[_owner][_spender];
    }

    function _transfer(address sender, address recipient, uint256 amount) internal virtual {
        require(directTransferAllowed || releaseTime <= block.timestamp, "Direct Transfer is now allowed this time.");
        require(balanceOf[sender] > amount, "Insufficient Balance");
        if(msg.sender == address(this)) {
            require(releaseTime <= block.timestamp, "Reserved token is still locked");
        }

        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        balanceOf[sender] = balanceOf[sender].sub(amount, "ERC20: transfer amount exceeds balance");
        balanceOf[recipient] = balanceOf[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
    }

    function sellBitcashPayAgainstEther(uint amount) private nonReentrant returns (uint refund_amount) {
        allowDirectTransfer();
        refund_amount = (amount.div(MULTIPLIER)).mul(sellPriceEth);

        require(sellPriceEth != 0, "Sell price cannot be zero");
        require(amount.div(MULTIPLIER) >= 100, "Minimum of 100 BCP is required.");
        require(address(this).balance > refund_amount, "Contract Insuficient Balance");
        
        msg.sender.transfer(refund_amount);

        balanceOf[msg.sender] = balanceOf[msg.sender].sub(amount, "ERC20: transfer amount exceeds balance");
        balanceOf[owner] = balanceOf[owner].add(amount);

        emit Transfer(address(this), msg.sender, amount);
        denyDirectTransfer();
        return refund_amount;
    }

    event Bonus (address to, uint value);

    function getBonus(address _to, uint256 _value) public nonReentrant returns (uint bonus) {
        require(msg.sender == PresaleAddress, "Access Denied!");
        balanceOf[owner] = balanceOf[owner].sub(_value, "ERC20: transfer amount exceeds balance");
        balanceOf[_to] = balanceOf[_to].add(_value);
        
        emit Bonus(_to, _value.div(MULTIPLIER));
        return bonus;
    }

    function airDropper(address[] memory _to, uint[] memory _value) public nonReentrant ownerOnly returns (uint) {
        uint i = 0;
        while (i < _to.length) {
            balanceOf[owner] = balanceOf[owner].sub(_value[i].mul(MULTIPLIER), "ERC20: transfer amount exceeds balance");
            balanceOf[_to[i]] = balanceOf[_to[i]].add(_value[i].mul(MULTIPLIER));
            i += 1;
        }
        return i;
    }

    event Sold(address _from, address _to, uint _amount);

    function buyBitcashPayAgainstEther(address payable _sender, uint256 _amount) public nonReentrant returns (uint amount_sold) {
        allowDirectTransfer();
        if(balanceOf[_sender] == 0) {
            balanceOf[_sender] = balanceOf[_sender].add(MULTIPLIER);
            balanceOf[_sender] = balanceOf[_sender].sub(MULTIPLIER);
        }
        amount_sold = _amount.div(buyPriceEth);
        amount_sold = amount_sold.mul(MULTIPLIER);

        _transfer(owner, _sender, amount_sold);

        emit Sold(owner, _sender, amount_sold);
        denyDirectTransfer();
        return amount_sold;
    }

    event Received(address _from, uint _amount);

    receive() external payable {
        require(directBuyAllowed, "Direct buy to the contract is not available");
        if (msg.sender != owner) {
            buyBitcashPayAgainstEther(msg.sender, msg.value);
        }
        emit Received(msg.sender, msg.value);
    }



}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_owner","type":"address"},{"indexed":true,"internalType":"address","name":"_spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Bonus","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_from","type":"address"},{"indexed":false,"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"Received","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_from","type":"address"},{"indexed":false,"internalType":"address","name":"_to","type":"address"},{"indexed":false,"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"Sold","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_from","type":"address"},{"indexed":true,"internalType":"address","name":"_to","type":"address"},{"indexed":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address[]","name":"_to","type":"address[]"},{"internalType":"uint256[]","name":"_value","type":"uint256[]"}],"name":"airDropper","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"_spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"remaining","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"allowed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_spender","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnToken","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"_sender","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"buyBitcashPayAgainstEther","outputs":[{"internalType":"uint256","name":"amount_sold","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"buyPriceEth","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"directBuyAllowed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"directSellAllowed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"directTransferAllowed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"getBonus","outputs":[{"internalType":"uint256","name":"bonus","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ownerAllowDirectBuy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"ownerAllowDirectSell","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"ownerAllowDirectTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"ownerDenyDirectBuy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"ownerDenyDirectSell","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"ownerDenyDirectTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"reservedCoin","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellPriceEth","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"buyPrice","type":"uint256"}],"name":"setBuyPrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"_presaleAddress","type":"address"}],"name":"setPresaleAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"sellPrice","type":"uint256"}],"name":"setSellPrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"transferEther","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052655af3107a4000600355655af3107a40006004556000600560006101000a81548160ff0219169083151502179055506000600560016101000a81548160ff0219169083151502179055506000600560026101000a81548160ff021916908315150217905550630a6e49c0600655636105e400600a553480156200008657600080fd5b50600160008190555060006332a9f880905033600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620000f76305f5e100826200016560201b62002d181790919060201c565b600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550620001586305f5e100826200016560201b62002d181790919060201c565b60018190555050620001f0565b6000808314156200017a5760009050620001ea565b60008284029050828482816200018c57fe5b0414620001e5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602181526020018062003c1d6021913960400191505060405180910390fd5b809150505b92915050565b613a1d80620002006000396000f3fe6080604052600436106101d05760003560e01c806363ae8d6c116100f7578063a9059cbb11610095578063dd62ed3e11610064578063dd62ed3e14610ba3578063e2c149ea14610c28578063ec1dfe7114610c57578063fc6634b914610cc657610308565b8063a9059cbb14610a55578063b69295d014610ac8578063bdb9f28d14610adf578063d1df306c14610b3057610308565b8063899117c4116100d1578063899117c4146108165780638a49297e1461082d57806395d89b4114610858578063a3b429b5146108e857610308565b806363ae8d6c1461074757806370a08231146107825780638055e1ed146107e757610308565b806323b872dd1161016f57806353e42eb91161013e57806353e42eb9146106695780635639bb3c1461068057806357f4b0cb146106ab5780635c658165146106c257610308565b806323b872dd1461055f5780632d0018ca146105f2578063313ce56714610609578063413669621461063a57610308565b806306fdde03116101ab57806306fdde031461041a578063095ea7b3146104aa578063159489231461051d57806318160ddd1461053457610308565b80625383cb1461030d578063015129a11461037c57806305b1137b146103a757610308565b3661030857600560019054906101000a900460ff1661023a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b8152602001806138c2602b913960400191505060405180910390fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461029b576102993334610d01565b505b7f88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f885258743334604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a1005b600080fd5b34801561031957600080fd5b506103666004803603604081101561033057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610d01565b6040518082815260200191505060405180910390f35b34801561038857600080fd5b5061039161103e565b6040518082815260200191505060405180910390f35b3480156103b357600080fd5b50610400600480360360408110156103ca57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611044565b604051808215151515815260200191505060405180910390f35b34801561042657600080fd5b5061042f6111b8565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561046f578082015181840152602081019050610454565b50505050905090810190601f16801561049c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156104b657600080fd5b50610503600480360360408110156104cd57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506111f1565b604051808215151515815260200191505060405180910390f35b34801561052957600080fd5b506105326112e3565b005b34801561054057600080fd5b506105496113ea565b6040518082815260200191505060405180910390f35b34801561056b57600080fd5b506105d86004803603606081101561058257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506113f0565b604051808215151515815260200191505060405180910390f35b3480156105fe57600080fd5b506106076116eb565b005b34801561061557600080fd5b5061061e6117f2565b604051808260ff1660ff16815260200191505060405180910390f35b34801561064657600080fd5b5061064f6117f7565b604051808215151515815260200191505060405180910390f35b34801561067557600080fd5b5061067e61180a565b005b34801561068c57600080fd5b50610695611911565b6040518082815260200191505060405180910390f35b3480156106b757600080fd5b506106c0611917565b005b3480156106ce57600080fd5b50610731600480360360408110156106e557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611a1e565b6040518082815260200191505060405180910390f35b34801561075357600080fd5b506107806004803603602081101561076a57600080fd5b8101908080359060200190929190505050611a43565b005b34801561078e57600080fd5b506107d1600480360360208110156107a557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611b4a565b6040518082815260200191505060405180910390f35b3480156107f357600080fd5b506107fc611b62565b604051808215151515815260200191505060405180910390f35b34801561082257600080fd5b5061082b611b75565b005b34801561083957600080fd5b50610842611c7c565b6040518082815260200191505060405180910390f35b34801561086457600080fd5b5061086d611c82565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156108ad578082015181840152602081019050610892565b50505050905090810190601f1680156108da5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156108f457600080fd5b50610a3f6004803603604081101561090b57600080fd5b810190808035906020019064010000000081111561092857600080fd5b82018360208201111561093a57600080fd5b8035906020019184602083028401116401000000008311171561095c57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509192919290803590602001906401000000008111156109bc57600080fd5b8201836020820111156109ce57600080fd5b803590602001918460208302840111640100000000831117156109f057600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509192919290505050611cbb565b6040518082815260200191505060405180910390f35b348015610a6157600080fd5b50610aae60048036036040811015610a7857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612067565b604051808215151515815260200191505060405180910390f35b348015610ad457600080fd5b50610add6121c1565b005b348015610aeb57600080fd5b50610b2e60048036036020811015610b0257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506122c8565b005b348015610b3c57600080fd5b50610b8960048036036040811015610b5357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612409565b604051808215151515815260200191505060405180910390f35b348015610baf57600080fd5b50610c1260048036036040811015610bc657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506126de565b6040518082815260200191505060405180910390f35b348015610c3457600080fd5b50610c3d612765565b604051808215151515815260200191505060405180910390f35b348015610c6357600080fd5b50610cb060048036036040811015610c7a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612778565b6040518082815260200191505060405180910390f35b348015610cd257600080fd5b50610cff60048036036020811015610ce957600080fd5b8101908080359060200190929190505050612ad8565b005b600060026000541415610d7c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0081525060200191505060405180910390fd5b6002600081905550610d8c612bdf565b6000600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541415610f0757610e2a6305f5e100600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612bfc90919063ffffffff16565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610ec36305f5e100600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c8490919063ffffffff16565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610f1c60035483612cce90919063ffffffff16565b9050610f356305f5e10082612d1890919063ffffffff16565b9050610f64600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168483612d9e565b7ff3ecb4dab83f41da3035ff9cb3a2ef0c3027ebb89ae4e4b822d7c109e869a2fc600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168483604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001935050505060405180910390a161102d61322b565b809050600160008190555092915050565b60045481565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141580156110d057503073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b15611143576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4163636573732044656e6965642100000000000000000000000000000000000081525060200191505060405180910390fd5b6000670de0b6b3a7640000830290508373ffffffffffffffffffffffffffffffffffffffff166108fc6111816103e884612cce90919063ffffffff16565b9081150290604051600060405180830381858888f193505050501580156111ac573d6000803e3d6000fd5b50600191505092915050565b6040518060400160405280600a81526020017f426974636173685061790000000000000000000000000000000000000000000081525081565b600081600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415801561136d57503073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b156113e0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4163636573732044656e6965642100000000000000000000000000000000000081525060200191505060405180910390fd5b6113e8613248565b565b60015481565b600081600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101580156114bd575081600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b80156115485750600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205401115b156116df5781600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555081600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254019250508190555081600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190506116e4565b600090505b9392505050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415801561177557503073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b156117e8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4163636573732044656e6965642100000000000000000000000000000000000081525060200191505060405180910390fd5b6117f061322b565b565b600881565b600560019054906101000a900460ff1681565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415801561189457503073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b15611907576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4163636573732044656e6965642100000000000000000000000000000000000081525060200191505060405180910390fd5b61190f613265565b565b60035481565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141580156119a157503073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b15611a14576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4163636573732044656e6965642100000000000000000000000000000000000081525060200191505060405180910390fd5b611a1c613282565b565b6009602052816000526040600020602052806000526040600020600091509150505481565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015611acd57503073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b15611b40576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4163636573732044656e6965642100000000000000000000000000000000000081525060200191505060405180910390fd5b8060038190555050565b60086020528060005260406000206000915090505481565b600560029054906101000a900460ff1681565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015611bff57503073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b15611c72576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4163636573732044656e6965642100000000000000000000000000000000000081525060200191505060405180910390fd5b611c7a61329f565b565b60065481565b6040518060400160405280600381526020017f424350000000000000000000000000000000000000000000000000000000000081525081565b600060026000541415611d36576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0081525060200191505060405180910390fd5b6002600081905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015611dc857503073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b15611e3b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4163636573732044656e6965642100000000000000000000000000000000000081525060200191505060405180910390fd5b60008090505b835181101561205557611f01611e776305f5e100858481518110611e6157fe5b6020026020010151612d1890919063ffffffff16565b6040518060600160405280602681526020016139326026913960086000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132bc9092919063ffffffff16565b60086000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611ff4611f936305f5e100858481518110611f7d57fe5b6020026020010151612d1890919063ffffffff16565b60086000878581518110611fa357fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612bfc90919063ffffffff16565b6008600086848151811061200457fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600181019050611e41565b80915050600160008190555092915050565b6000600260005414156120e2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0081525060200191505060405180910390fd5b6002600081905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415801561217357503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b801561218b5750600560009054906101000a900460ff165b156121a3576121998261337c565b50600190506121b3565b6121ae338484612d9e565b600190505b600160008190555092915050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415801561224b57503073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b156122be576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4163636573732044656e6965642100000000000000000000000000000000000081525060200191505060405180910390fd5b6122c6612bdf565b565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415801561235257503073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b156123c5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4163636573732044656e6965642100000000000000000000000000000000000081525060200191505060405180910390fd5b80600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415801561249557503073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b15612508576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4163636573732044656e6965642100000000000000000000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561258e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806139a26021913960400191505060405180910390fd5b6126106125a86305f5e10084612d1890919063ffffffff16565b60405180606001604052806022815260200161391060229139600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132bc9092919063ffffffff16565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061266882600154612c8490919063ffffffff16565b600181905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b6000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600560009054906101000a900460ff1681565b6000600260005414156127f3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0081525060200191505060405180910390fd5b6002600081905550600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146128be576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4163636573732044656e6965642100000000000000000000000000000000000081525060200191505060405180910390fd5b61294c826040518060600160405280602681526020016139326026913960086000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132bc9092919063ffffffff16565b60086000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612a0382600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612bfc90919063ffffffff16565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055507f98dcaeced95369821fc42e6b1e87d724bad86c549e4d6f1b69cc88eeb115438783612a7f6305f5e10085612cce90919063ffffffff16565b604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a1809050600160008190555092915050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015612b6257503073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b15612bd5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4163636573732044656e6965642100000000000000000000000000000000000081525060200191505060405180910390fd5b8060048190555050565b6001600560026101000a81548160ff021916908315150217905550565b600080828401905083811015612c7a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b6000612cc683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506132bc565b905092915050565b6000612d1083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506137fb565b905092915050565b600080831415612d2b5760009050612d98565b6000828402905082848281612d3c57fe5b0414612d93576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806139816021913960400191505060405180910390fd5b809150505b92915050565b600560029054906101000a900460ff1680612dbb575042600a5411155b612e10576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260298152602001806139586029913960400191505060405180910390fd5b80600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411612ec4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f496e73756666696369656e742042616c616e636500000000000000000000000081525060200191505060405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415612f715742600a541115612f70576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f526573657276656420746f6b656e206973207374696c6c206c6f636b6564000081525060200191505060405180910390fd5b5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612ff7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806139c36025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561307d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806138ed6023913960400191505060405180910390fd5b6130e98160405180606001604052806026815260200161393260269139600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132bc9092919063ffffffff16565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061317e81600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612bfc90919063ffffffff16565b600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b6000600560026101000a81548160ff021916908315150217905550565b6001600560006101000a81548160ff021916908315150217905550565b6001600560016101000a81548160ff021916908315150217905550565b6000600560016101000a81548160ff021916908315150217905550565b6000600560006101000a81548160ff021916908315150217905550565b6000838311158290613369576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561332e578082015181840152602081019050613313565b50505050905090810190601f16801561335b5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b6000600260005414156133f7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0081525060200191505060405180910390fd5b6002600081905550613407612bdf565b6134326004546134246305f5e10085612cce90919063ffffffff16565b612d1890919063ffffffff16565b9050600060045414156134ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f53656c6c2070726963652063616e6e6f74206265207a65726f0000000000000081525060200191505060405180910390fd5b60646134c66305f5e10084612cce90919063ffffffff16565b101561353a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f4d696e696d756d206f6620313030204243502069732072657175697265642e0081525060200191505060405180910390fd5b8047116135af576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f436f6e747261637420496e737566696369656e742042616c616e63650000000081525060200191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156135f5573d6000803e3d6000fd5b506136628260405180606001604052806026815260200161393260269139600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132bc9092919063ffffffff16565b600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506137198260086000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612bfc90919063ffffffff16565b60086000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36137eb61322b565b8090506001600081905550919050565b600080831182906138a7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561386c578082015181840152602081019050613851565b50505050905090810190601f1680156138995780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385816138b357fe5b04905080915050939250505056fe4469726563742062757920746f2074686520636f6e7472616374206973206e6f7420617661696c61626c6545524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365446972656374205472616e73666572206973206e6f7720616c6c6f77656420746869732074696d652e536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f2061646472657373a264697066735822122017c39c13ea88ba4c1761121289c8d0f77307efb0331321572b72cb06124e13a764736f6c63430006070033536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77

Deployed Bytecode

0x6080604052600436106101d05760003560e01c806363ae8d6c116100f7578063a9059cbb11610095578063dd62ed3e11610064578063dd62ed3e14610ba3578063e2c149ea14610c28578063ec1dfe7114610c57578063fc6634b914610cc657610308565b8063a9059cbb14610a55578063b69295d014610ac8578063bdb9f28d14610adf578063d1df306c14610b3057610308565b8063899117c4116100d1578063899117c4146108165780638a49297e1461082d57806395d89b4114610858578063a3b429b5146108e857610308565b806363ae8d6c1461074757806370a08231146107825780638055e1ed146107e757610308565b806323b872dd1161016f57806353e42eb91161013e57806353e42eb9146106695780635639bb3c1461068057806357f4b0cb146106ab5780635c658165146106c257610308565b806323b872dd1461055f5780632d0018ca146105f2578063313ce56714610609578063413669621461063a57610308565b806306fdde03116101ab57806306fdde031461041a578063095ea7b3146104aa578063159489231461051d57806318160ddd1461053457610308565b80625383cb1461030d578063015129a11461037c57806305b1137b146103a757610308565b3661030857600560019054906101000a900460ff1661023a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b8152602001806138c2602b913960400191505060405180910390fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461029b576102993334610d01565b505b7f88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f885258743334604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a1005b600080fd5b34801561031957600080fd5b506103666004803603604081101561033057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610d01565b6040518082815260200191505060405180910390f35b34801561038857600080fd5b5061039161103e565b6040518082815260200191505060405180910390f35b3480156103b357600080fd5b50610400600480360360408110156103ca57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611044565b604051808215151515815260200191505060405180910390f35b34801561042657600080fd5b5061042f6111b8565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561046f578082015181840152602081019050610454565b50505050905090810190601f16801561049c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156104b657600080fd5b50610503600480360360408110156104cd57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506111f1565b604051808215151515815260200191505060405180910390f35b34801561052957600080fd5b506105326112e3565b005b34801561054057600080fd5b506105496113ea565b6040518082815260200191505060405180910390f35b34801561056b57600080fd5b506105d86004803603606081101561058257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506113f0565b604051808215151515815260200191505060405180910390f35b3480156105fe57600080fd5b506106076116eb565b005b34801561061557600080fd5b5061061e6117f2565b604051808260ff1660ff16815260200191505060405180910390f35b34801561064657600080fd5b5061064f6117f7565b604051808215151515815260200191505060405180910390f35b34801561067557600080fd5b5061067e61180a565b005b34801561068c57600080fd5b50610695611911565b6040518082815260200191505060405180910390f35b3480156106b757600080fd5b506106c0611917565b005b3480156106ce57600080fd5b50610731600480360360408110156106e557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611a1e565b6040518082815260200191505060405180910390f35b34801561075357600080fd5b506107806004803603602081101561076a57600080fd5b8101908080359060200190929190505050611a43565b005b34801561078e57600080fd5b506107d1600480360360208110156107a557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611b4a565b6040518082815260200191505060405180910390f35b3480156107f357600080fd5b506107fc611b62565b604051808215151515815260200191505060405180910390f35b34801561082257600080fd5b5061082b611b75565b005b34801561083957600080fd5b50610842611c7c565b6040518082815260200191505060405180910390f35b34801561086457600080fd5b5061086d611c82565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156108ad578082015181840152602081019050610892565b50505050905090810190601f1680156108da5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156108f457600080fd5b50610a3f6004803603604081101561090b57600080fd5b810190808035906020019064010000000081111561092857600080fd5b82018360208201111561093a57600080fd5b8035906020019184602083028401116401000000008311171561095c57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509192919290803590602001906401000000008111156109bc57600080fd5b8201836020820111156109ce57600080fd5b803590602001918460208302840111640100000000831117156109f057600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509192919290505050611cbb565b6040518082815260200191505060405180910390f35b348015610a6157600080fd5b50610aae60048036036040811015610a7857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612067565b604051808215151515815260200191505060405180910390f35b348015610ad457600080fd5b50610add6121c1565b005b348015610aeb57600080fd5b50610b2e60048036036020811015610b0257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506122c8565b005b348015610b3c57600080fd5b50610b8960048036036040811015610b5357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612409565b604051808215151515815260200191505060405180910390f35b348015610baf57600080fd5b50610c1260048036036040811015610bc657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506126de565b6040518082815260200191505060405180910390f35b348015610c3457600080fd5b50610c3d612765565b604051808215151515815260200191505060405180910390f35b348015610c6357600080fd5b50610cb060048036036040811015610c7a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612778565b6040518082815260200191505060405180910390f35b348015610cd257600080fd5b50610cff60048036036020811015610ce957600080fd5b8101908080359060200190929190505050612ad8565b005b600060026000541415610d7c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0081525060200191505060405180910390fd5b6002600081905550610d8c612bdf565b6000600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541415610f0757610e2a6305f5e100600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612bfc90919063ffffffff16565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610ec36305f5e100600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c8490919063ffffffff16565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610f1c60035483612cce90919063ffffffff16565b9050610f356305f5e10082612d1890919063ffffffff16565b9050610f64600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168483612d9e565b7ff3ecb4dab83f41da3035ff9cb3a2ef0c3027ebb89ae4e4b822d7c109e869a2fc600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168483604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001935050505060405180910390a161102d61322b565b809050600160008190555092915050565b60045481565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141580156110d057503073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b15611143576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4163636573732044656e6965642100000000000000000000000000000000000081525060200191505060405180910390fd5b6000670de0b6b3a7640000830290508373ffffffffffffffffffffffffffffffffffffffff166108fc6111816103e884612cce90919063ffffffff16565b9081150290604051600060405180830381858888f193505050501580156111ac573d6000803e3d6000fd5b50600191505092915050565b6040518060400160405280600a81526020017f426974636173685061790000000000000000000000000000000000000000000081525081565b600081600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415801561136d57503073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b156113e0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4163636573732044656e6965642100000000000000000000000000000000000081525060200191505060405180910390fd5b6113e8613248565b565b60015481565b600081600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101580156114bd575081600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b80156115485750600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205401115b156116df5781600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555081600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254019250508190555081600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190506116e4565b600090505b9392505050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415801561177557503073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b156117e8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4163636573732044656e6965642100000000000000000000000000000000000081525060200191505060405180910390fd5b6117f061322b565b565b600881565b600560019054906101000a900460ff1681565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415801561189457503073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b15611907576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4163636573732044656e6965642100000000000000000000000000000000000081525060200191505060405180910390fd5b61190f613265565b565b60035481565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141580156119a157503073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b15611a14576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4163636573732044656e6965642100000000000000000000000000000000000081525060200191505060405180910390fd5b611a1c613282565b565b6009602052816000526040600020602052806000526040600020600091509150505481565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015611acd57503073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b15611b40576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4163636573732044656e6965642100000000000000000000000000000000000081525060200191505060405180910390fd5b8060038190555050565b60086020528060005260406000206000915090505481565b600560029054906101000a900460ff1681565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015611bff57503073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b15611c72576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4163636573732044656e6965642100000000000000000000000000000000000081525060200191505060405180910390fd5b611c7a61329f565b565b60065481565b6040518060400160405280600381526020017f424350000000000000000000000000000000000000000000000000000000000081525081565b600060026000541415611d36576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0081525060200191505060405180910390fd5b6002600081905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015611dc857503073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b15611e3b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4163636573732044656e6965642100000000000000000000000000000000000081525060200191505060405180910390fd5b60008090505b835181101561205557611f01611e776305f5e100858481518110611e6157fe5b6020026020010151612d1890919063ffffffff16565b6040518060600160405280602681526020016139326026913960086000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132bc9092919063ffffffff16565b60086000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611ff4611f936305f5e100858481518110611f7d57fe5b6020026020010151612d1890919063ffffffff16565b60086000878581518110611fa357fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612bfc90919063ffffffff16565b6008600086848151811061200457fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600181019050611e41565b80915050600160008190555092915050565b6000600260005414156120e2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0081525060200191505060405180910390fd5b6002600081905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415801561217357503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b801561218b5750600560009054906101000a900460ff165b156121a3576121998261337c565b50600190506121b3565b6121ae338484612d9e565b600190505b600160008190555092915050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415801561224b57503073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b156122be576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4163636573732044656e6965642100000000000000000000000000000000000081525060200191505060405180910390fd5b6122c6612bdf565b565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415801561235257503073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b156123c5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4163636573732044656e6965642100000000000000000000000000000000000081525060200191505060405180910390fd5b80600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415801561249557503073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b15612508576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4163636573732044656e6965642100000000000000000000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561258e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806139a26021913960400191505060405180910390fd5b6126106125a86305f5e10084612d1890919063ffffffff16565b60405180606001604052806022815260200161391060229139600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132bc9092919063ffffffff16565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061266882600154612c8490919063ffffffff16565b600181905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b6000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600560009054906101000a900460ff1681565b6000600260005414156127f3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0081525060200191505060405180910390fd5b6002600081905550600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146128be576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4163636573732044656e6965642100000000000000000000000000000000000081525060200191505060405180910390fd5b61294c826040518060600160405280602681526020016139326026913960086000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132bc9092919063ffffffff16565b60086000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612a0382600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612bfc90919063ffffffff16565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055507f98dcaeced95369821fc42e6b1e87d724bad86c549e4d6f1b69cc88eeb115438783612a7f6305f5e10085612cce90919063ffffffff16565b604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a1809050600160008190555092915050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015612b6257503073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b15612bd5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4163636573732044656e6965642100000000000000000000000000000000000081525060200191505060405180910390fd5b8060048190555050565b6001600560026101000a81548160ff021916908315150217905550565b600080828401905083811015612c7a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b6000612cc683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506132bc565b905092915050565b6000612d1083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506137fb565b905092915050565b600080831415612d2b5760009050612d98565b6000828402905082848281612d3c57fe5b0414612d93576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806139816021913960400191505060405180910390fd5b809150505b92915050565b600560029054906101000a900460ff1680612dbb575042600a5411155b612e10576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260298152602001806139586029913960400191505060405180910390fd5b80600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411612ec4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f496e73756666696369656e742042616c616e636500000000000000000000000081525060200191505060405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415612f715742600a541115612f70576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f526573657276656420746f6b656e206973207374696c6c206c6f636b6564000081525060200191505060405180910390fd5b5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612ff7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806139c36025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561307d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806138ed6023913960400191505060405180910390fd5b6130e98160405180606001604052806026815260200161393260269139600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132bc9092919063ffffffff16565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061317e81600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612bfc90919063ffffffff16565b600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b6000600560026101000a81548160ff021916908315150217905550565b6001600560006101000a81548160ff021916908315150217905550565b6001600560016101000a81548160ff021916908315150217905550565b6000600560016101000a81548160ff021916908315150217905550565b6000600560006101000a81548160ff021916908315150217905550565b6000838311158290613369576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561332e578082015181840152602081019050613313565b50505050905090810190601f16801561335b5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b6000600260005414156133f7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0081525060200191505060405180910390fd5b6002600081905550613407612bdf565b6134326004546134246305f5e10085612cce90919063ffffffff16565b612d1890919063ffffffff16565b9050600060045414156134ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f53656c6c2070726963652063616e6e6f74206265207a65726f0000000000000081525060200191505060405180910390fd5b60646134c66305f5e10084612cce90919063ffffffff16565b101561353a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f4d696e696d756d206f6620313030204243502069732072657175697265642e0081525060200191505060405180910390fd5b8047116135af576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f436f6e747261637420496e737566696369656e742042616c616e63650000000081525060200191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156135f5573d6000803e3d6000fd5b506136628260405180606001604052806026815260200161393260269139600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132bc9092919063ffffffff16565b600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506137198260086000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612bfc90919063ffffffff16565b60086000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36137eb61322b565b8090506001600081905550919050565b600080831182906138a7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561386c578082015181840152602081019050613851565b50505050905090810190601f1680156138995780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385816138b357fe5b04905080915050939250505056fe4469726563742062757920746f2074686520636f6e7472616374206973206e6f7420617661696c61626c6545524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365446972656374205472616e73666572206973206e6f7720616c6c6f77656420746869732074696d652e536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f2061646472657373a264697066735822122017c39c13ea88ba4c1761121289c8d0f77307efb0331321572b72cb06124e13a764736f6c63430006070033

Deployed Bytecode Sourcemap

6624:8383:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14769:16;;;;;;;;;;;14761:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14862:5;;;;;;;;;;;14848:19;;:10;:19;;;14844:100;;14884:48;14910:10;14922:9;14884:25;:48::i;:::-;;14844:100;14959:31;14968:10;14980:9;14959:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;6624:8383;;12:1:-1;9;2:12;14046:617:0;;5:9:-1;2:2;;;27:1;24;17:12;2:2;14046:617:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;14046:617:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;7015:58;;5:9:-1;2:2;;;27:1;24;17:12;2:2;7015:58:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;8585:217;;5:9:-1;2:2;;;27:1;24;17:12;2:2;8585:217:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;8585:217:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;6706:61;;5:9:-1;2:2;;;27:1;24;17:12;2:2;6706:61:0;;;:::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;6706:61:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11096:214;;5:9:-1;2:2;;;27:1;24;17:12;2:2;11096:214:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;11096:214:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;9637:85;;5:9:-1;2:2;;;27:1;24;17:12;2:2;9637:85:0;;;:::i;:::-;;6835:23;;5:9:-1;2:2;;;27:1;24;17:12;2:2;6835:23:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;10618:470;;5:9:-1;2:2;;;27:1;24;17:12;2:2;10618:470:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;10618:470:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;10011:91;;5:9:-1;2:2;;;27:1;24;17:12;2:2;10011:91:0;;;:::i;:::-;;6865:50;;5:9:-1;2:2;;;27:1;24;17:12;2:2;6865:50:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;7207:53;;5:9:-1;2:2;;;27:1;24;17:12;2:2;7207:53:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;9546:83;;5:9:-1;2:2;;;27:1;24;17:12;2:2;9546:83:0;;;:::i;:::-;;6950:58;;5:9:-1;2:2;;;27:1;24;17:12;2:2;6950:58:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;9831:81;;5:9:-1;2:2;;;27:1;24;17:12;2:2;9831:81:0;;;:::i;:::-;;7485:62;;5:9:-1;2:2;;;27:1;24;17:12;2:2;7485:62:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;7485:62:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;8810:94;;5:9:-1;2:2;;;27:1;24;17:12;2:2;8810:94:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;8810:94:0;;;;;;;;;;;;;;;;;:::i;:::-;;7434:44;;5:9:-1;2:2;;;27:1;24;17:12;2:2;7434:44:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;7434:44:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;7269:53;;5:9:-1;2:2;;;27:1;24;17:12;2:2;7269:53:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;9920:83;;5:9:-1;2:2;;;27:1;24;17:12;2:2;9920:83:0;;;:::i;:::-;;7331:57;;5:9:-1;2:2;;;27:1;24;17:12;2:2;7331:57:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;6774:54;;5:9:-1;2:2;;;27:1;24;17:12;2:2;6774:54:0;;;:::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;6774:54:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13548:429;;5:9:-1;2:2;;;27:1;24;17:12;2:2;13548:429:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;13548:429:0;;;;;;;;;;27:11:-1;14;11:28;8:2;;;52:1;49;42:12;8:2;13548:429:0;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;13548:429:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;13548:429:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;13548:429:0;;;;;;;;;;;;;;;;;27:11:-1;14;11:28;8:2;;;52:1;49;42:12;8:2;13548:429:0;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;13548:429:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;13548:429:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;13548:429:0;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;10250:360;;5:9:-1;2:2;;;27:1;24;17:12;2:2;10250:360:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;10250:360:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;9730:93;;5:9:-1;2:2;;;27:1;24;17:12;2:2;9730:93:0;;;:::i;:::-;;10112:128;;5:9:-1;2:2;;;27:1;24;17:12;2:2;10112:128:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;10112:128:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;8158:419;;5:9:-1;2:2;;;27:1;24;17:12;2:2;8158:419:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;8158:419:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;11318:144;;5:9:-1;2:2;;;27:1;24;17:12;2:2;11318:144:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;11318:144:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;7147:53;;5:9:-1;2:2;;;27:1;24;17:12;2:2;7147:53:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;13141:399;;5:9:-1;2:2;;;27:1;24;17:12;2:2;13141:399:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;13141:399:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;8912:98;;5:9:-1;2:2;;;27:1;24;17:12;2:2;8912:98:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;8912:98:0;;;;;;;;;;;;;;;;;:::i;:::-;;14046:617;14152:16;5667:1;6273:7;;:19;;6265:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5667:1;6406:7;:18;;;;14181:21:::1;:19;:21::i;:::-;14238:1;14216:9;:18;14226:7;14216:18;;;;;;;;;;;;;;;;:23;14213:180;;;14277:34;7129:9;14277;:18;14287:7;14277:18;;;;;;;;;;;;;;;;:22;;:34;;;;:::i;:::-;14256:9;:18;14266:7;14256:18;;;;;;;;;;;;;;;:55;;;;14347:34;7129:9;14347;:18;14357:7;14347:18;;;;;;;;;;;;;;;;:22;;:34;;;;:::i;:::-;14326:9;:18;14336:7;14326:18;;;;;;;;;;;;;;;:55;;;;14213:180;14417:24;14429:11;;14417:7;:11;;:24;;;;:::i;:::-;14403:38;;14466:27;7129:9;14466:11;:15;;:27;;;;:::i;:::-;14452:41;;14506:38;14516:5;;;;;;;;;;;14523:7;14532:11;14506:9;:38::i;:::-;14562:33;14567:5;;;;;;;;;;;14574:7;14583:11;14562:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14606:20;:18;:20::i;:::-;14644:11;14637:18;;5623:1:::0;6585:7;:22;;;;14046:617;;;;:::o;7015:58::-;;;;:::o;8585:217::-;8669:12;8068:5;;;;;;;;;;;8054:19;;:10;:19;;;;:50;;;;;8099:4;8077:27;;:10;:27;;;;8054:50;8050:80;;;8106:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8050:80;8699:11:::1;8723:8;8713:7;:18;8699:32;;8742:3;:12;;:30;8755:16;8766:4;8755:6;:10;;:16;;;;:::i;:::-;8742:30;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;8742:30:0;8790:4;8783:11;;;8585:217:::0;;;;:::o;6706:61::-;;;;;;;;;;;;;;;;;;;:::o;11096:214::-;11163:12;11220:6;11188:7;:19;11196:10;11188:19;;;;;;;;;;;;;;;:29;11208:8;11188:29;;;;;;;;;;;;;;;:38;;;;11263:8;11242:38;;11251:10;11242:38;;;11273:6;11242:38;;;;;;;;;;;;;;;;;;11298:4;11291:11;;11096:214;;;;:::o;9637:85::-;8068:5;;;;;;;;;;;8054:19;;:10;:19;;;;:50;;;;;8099:4;8077:27;;:10;:27;;;;8054:50;8050:80;;;8106:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8050:80;9697:17:::1;:15;:17::i;:::-;9637:85::o:0;6835:23::-;;;;:::o;10618:470::-;10700:12;10749:6;10729:9;:16;10739:5;10729:16;;;;;;;;;;;;;;;;:26;;:66;;;;;10789:6;10759:7;:14;10767:5;10759:14;;;;;;;;;;;;;;;:26;10774:10;10759:26;;;;;;;;;;;;;;;;:36;;10729:66;:110;;;;;10825:9;:14;10835:3;10825:14;;;;;;;;;;;;;;;;10816:6;10799:9;:14;10809:3;10799:14;;;;;;;;;;;;;;;;:23;:40;10729:110;10725:356;;;10876:6;10856:9;:16;10866:5;10856:16;;;;;;;;;;;;;;;;:26;;;;;;;;;;;10915:6;10897:9;:14;10907:3;10897:14;;;;;;;;;;;;;;;;:24;;;;;;;;;;;10966:6;10936:7;:14;10944:5;10936:14;;;;;;;;;;;;;;;:26;10951:10;10936:26;;;;;;;;;;;;;;;;:36;;;;;;;;;;;11008:3;10992:28;;11001:5;10992:28;;;11013:6;10992:28;;;;;;;;;;;;;;;;;;11042:4;11035:11;;;;10725:356;11073:5;11066:12;;10618:470;;;;;;:::o;10011:91::-;8068:5;;;;;;;;;;;8054:19;;:10;:19;;;;:50;;;;;8099:4;8077:27;;:10;:27;;;;8054:50;8050:80;;;8106:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8050:80;10074:20:::1;:18;:20::i;:::-;10011:91::o:0;6865:50::-;6914:1;6865:50;:::o;7207:53::-;;;;;;;;;;;;;:::o;9546:83::-;8068:5;;;;;;;;;;;8054:19;;:10;:19;;;;:50;;;;;8099:4;8077:27;;:10;:27;;;;8054:50;8050:80;;;8106:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8050:80;9605:16:::1;:14;:16::i;:::-;9546:83::o:0;6950:58::-;;;;:::o;9831:81::-;8068:5;;;;;;;;;;;8054:19;;:10;:19;;;;:50;;;;;8099:4;8077:27;;:10;:27;;;;8054:50;8050:80;;;8106:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8050:80;9889:15:::1;:13;:15::i;:::-;9831:81::o:0;7485:62::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;8810:94::-;8068:5;;;;;;;;;;;8054:19;;:10;:19;;;;:50;;;;;8099:4;8077:27;;:10;:27;;;;8054:50;8050:80;;;8106:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8050:80;8888:8:::1;8874:11;:22;;;;8810:94:::0;:::o;7434:44::-;;;;;;;;;;;;;;;;;:::o;7269:53::-;;;;;;;;;;;;;:::o;9920:83::-;8068:5;;;;;;;;;;;8054:19;;:10;:19;;;;:50;;;;;8099:4;8077:27;;:10;:27;;;;8054:50;8050:80;;;8106:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8050:80;9979:16:::1;:14;:16::i;:::-;9920:83::o:0;7331:57::-;;;;:::o;6774:54::-;;;;;;;;;;;;;;;;;;;:::o;13548:429::-;13651:4;5667:1;6273:7;;:19;;6265:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5667:1;6406:7;:18;;;;8068:5:::1;;;;;;;;;;;8054:19;;:10;:19;;;;:50;;;;;8099:4;8077:27;;:10;:27;;;;8054:50;8050:80;;;8106:24;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;8050:80;13668:6:::2;13677:1:::0;13668:10:::2;;13689:262;13700:3;:10;13696:1;:14;13689:262;;;13746:89;13767:25;7129:9;13767:6;13774:1;13767:9;;;;;;;;;;;;;;:13;;:25;;;;:::i;:::-;13746:89;;;;;;;;;;;;;;;;;:9;:16;13756:5;;;;;;;;;;;13746:16;;;;;;;;;;;;;;;;:20;;:89;;;;;:::i;:::-;13727:9;:16;13737:5;;;;;;;;;;;13727:16;;;;;;;;;;;;;;;:108;;;;13870:48;13892:25;7129:9;13892:6;13899:1;13892:9;;;;;;;;;;;;;;:13;;:25;;;;:::i;:::-;13870:9;:17;13880:3;13884:1;13880:6;;;;;;;;;;;;;;13870:17;;;;;;;;;;;;;;;;:21;;:48;;;;:::i;:::-;13850:9;:17;13860:3;13864:1;13860:6;;;;;;;;;;;;;;13850:17;;;;;;;;;;;;;;;:68;;;;13938:1;13933:6;;;;13689:262;;;13968:1;13961:8;;;5623:1:::0;6585:7;:22;;;;13548:429;;;;:::o;10250:360::-;10324:12;5667:1;6273:7;;:19;;6265:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5667:1;6406:7;:18;;;;10366:5:::1;;;;;;;;;;;10352:19;;:10;:19;;;;:43;;;;;10390:4;10375:20;;:3;:20;;;10352:43;:64;;;;;10399:17;;;;;;;;;;;10352:64;10348:187;;;10433:35;10460:7;10433:26;:35::i;:::-;;10519:4;10512:11;;;;10348:187;10545:35;10555:10;10567:3;10572:7;10545:9;:35::i;:::-;10598:4;10591:11;;6437:1;5623::::0;6585:7;:22;;;;10250:360;;;;:::o;9730:93::-;8068:5;;;;;;;;;;;8054:19;;:10;:19;;;;:50;;;;;8099:4;8077:27;;:10;:27;;;;8054:50;8050:80;;;8106:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8050:80;9794:21:::1;:19;:21::i;:::-;9730:93::o:0;10112:128::-;8068:5;;;;;;;;;;;8054:19;;:10;:19;;;;:50;;;;;8099:4;8077:27;;:10;:27;;;;8054:50;8050:80;;;8106:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8050:80;10217:15:::1;10200:14;;:32;;;;;;;;;;;;;;;;;;10112:128:::0;:::o;8158:419::-;8236:12;8068:5;;;;;;;;;;;8054:19;;:10;:19;;;;:50;;;;;8099:4;8077:27;;:10;:27;;;;8054:50;8050:80;;;8106:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8050:80;8288:1:::1;8269:21;;:7;:21;;;;8261:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8362:84;8385:22;7129:9;8385:6;:10;;:22;;;;:::i;:::-;8362:84;;;;;;;;;;;;;;;;;:9;:18;8372:7;8362:18;;;;;;;;;;;;;;;;:22;;:84;;;;;:::i;:::-;8341:9;:18;8351:7;8341:18;;;;;;;;;;;;;;;:105;;;;8471:23;8487:6;8471:11;;:15;;:23;;;;:::i;:::-;8457:11;:37;;;;8536:1;8510:37;;8519:7;8510:37;;;8540:6;8510:37;;;;;;;;;;;;;;;;;;8565:4;8558:11;;8158:419:::0;;;;:::o;11318:144::-;11392:17;11429:7;:15;11437:6;11429:15;;;;;;;;;;;;;;;:25;11445:8;11429:25;;;;;;;;;;;;;;;;11422:32;;11318:144;;;;:::o;7147:53::-;;;;;;;;;;;;;:::o;13141:399::-;13217:10;5667:1;6273:7;;:19;;6265:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5667:1;6406:7;:18;;;;13262:14:::1;;;;;;;;;;;13248:28;;:10;:28;;;13240:55;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;13325:70;13346:6;13325:70;;;;;;;;;;;;;;;;;:9;:16;13335:5;;;;;;;;;;;13325:16;;;;;;;;;;;;;;;;:20;;:70;;;;;:::i;:::-;13306:9;:16;13316:5;;;;;;;;;;;13306:16;;;;;;;;;;;;;;;:89;;;;13423:26;13442:6;13423:9;:14;13433:3;13423:14;;;;;;;;;;;;;;;;:18;;:26;;;;:::i;:::-;13406:9;:14;13416:3;13406:14;;;;;;;;;;;;;;;:43;;;;13475:34;13481:3;13486:22;7129:9;13486:6;:10;;:22;;;;:::i;:::-;13475:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;13527:5;13520:12;;5623:1:::0;6585:7;:22;;;;13141:399;;;;:::o;8912:98::-;8068:5;;;;;;;;;;;8054:19;;:10;:19;;;;:50;;;;;8099:4;8077:27;;:10;:27;;;;8054:50;8050:80;;;8106:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8050:80;8993:9:::1;8978:12;:24;;;;8912:98:::0;:::o;9188:86::-;9262:4;9238:21;;:28;;;;;;;;;;;;;;;;;;9188:86::o;332:181::-;390:7;410:9;426:1;422;:5;410:17;;451:1;446;:6;;438:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;504:1;497:8;;;332:181;;;;:::o;796:136::-;854:7;881:43;885:1;888;881:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;874:50;;796:136;;;;:::o;2633:132::-;2691:7;2718:39;2722:1;2725;2718:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2711:46;;2633:132;;;;:::o;1686:471::-;1744:7;1994:1;1989;:6;1985:47;;;2019:1;2012:8;;;;1985:47;2044:9;2060:1;2056;:5;2044:17;;2089:1;2084;2080;:5;;;;;;:10;2072:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2148:1;2141:8;;;1686:471;;;;;:::o;11470:813::-;11576:21;;;;;;;;;;;:55;;;;11616:15;11601:11;;:30;;11576:55;11568:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11716:6;11696:9;:17;11706:6;11696:17;;;;;;;;;;;;;;;;:26;11688:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11783:4;11761:27;;:10;:27;;;11758:132;;;11828:15;11813:11;;:30;;11805:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11758:132;11928:1;11910:20;;:6;:20;;;;11902:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12012:1;11991:23;;:9;:23;;;;11983:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12087;12109:6;12087:71;;;;;;;;;;;;;;;;;:9;:17;12097:6;12087:17;;;;;;;;;;;;;;;;:21;;:71;;;;;:::i;:::-;12067:9;:17;12077:6;12067:17;;;;;;;;;;;;;;;:91;;;;12192:32;12217:6;12192:9;:20;12202:9;12192:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;12169:9;:20;12179:9;12169:20;;;;;;;;;;;;;;;:55;;;;12257:9;12240:35;;12249:6;12240:35;;;12268:6;12240:35;;;;;;;;;;;;;;;;;;11470:813;;;:::o;9452:86::-;9525:5;9501:21;;:29;;;;;;;;;;;;;;;;;;9452:86::o;9102:78::-;9168:4;9148:17;;:24;;;;;;;;;;;;;;;;;;9102:78::o;9018:76::-;9082:4;9063:16;;:23;;;;;;;;;;;;;;;;;;9018:76::o;9282:::-;9345:5;9326:16;;:24;;;;;;;;;;;;;;;;;;9282:76::o;9366:78::-;9431:5;9411:17;;:25;;;;;;;;;;;;;;;;;;9366:78::o;1235:192::-;1321:7;1354:1;1349;:6;;1357:12;1341: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;1341:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1381:9;1397:1;1393;:5;1381:17;;1418:1;1411:8;;;1235:192;;;;;:::o;12291:797::-;12370:18;5667:1;6273:7;;:19;;6265:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5667:1;6406:7;:18;;;;12401:21:::1;:19;:21::i;:::-;12449:42;12478:12;;12450:22;7129:9;12450:6;:10;;:22;;;;:::i;:::-;12449:28;;:42;;;;:::i;:::-;12433:58;;12528:1;12512:12;;:17;;12504:55;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;12604:3;12578:22;7129:9;12578:6;:10;;:22;;;;:::i;:::-;:29;;12570:73;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;12686:13;12662:21;:37;12654:78;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;12753:10;:19;;:34;12773:13;12753:34;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;12753:34:0;12824:75;12850:6;12824:75;;;;;;;;;;;;;;;;;:9;:21;12834:10;12824:21;;;;;;;;;;;;;;;;:25;;:75;;;;;:::i;:::-;12800:9;:21;12810:10;12800:21;;;;;;;;;;;;;;;:99;;;;12929:28;12950:6;12929:9;:16;12939:5;;;;;;;;;;;12929:16;;;;;;;;;;;;;;;;:20;;:28;;;;:::i;:::-;12910:9;:16;12920:5;;;;;;;;;;;12910:16;;;;;;;;;;;;;;;:47;;;;12999:10;12975:43;;12992:4;12975:43;;;13011:6;12975:43;;;;;;;;;;;;;;;;;;13029:20;:18;:20::i;:::-;13067:13;13060:20;;5623:1:::0;6585:7;:22;;;;12291:797;;;:::o;3261:278::-;3347:7;3379:1;3375;:5;3382:12;3367: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;3367:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3406:9;3422:1;3418;:5;;;;;;3406:17;;3530:1;3523:8;;;3261:278;;;;;:::o

Swarm Source

ipfs://17c39c13ea88ba4c1761121289c8d0f77307efb0331321572b72cb06124e13a7
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.