ETH Price: $3,389.04 (+1.31%)

Token

yearn Curve.fi yDAI/yUSDC/yUSDT/yTUSD (yyDAI+yUSDC+yUSDT+yTUSD)
 

Overview

Max Total Supply

1,819,595.237693270907825131 yyDAI+yUSDC+yUSDT+yTUSD

Holders

5,360 (0.00%)

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0.000056430613129733 yyDAI+yUSDC+yUSDT+yTUSD

Value
$0.00
0x5b7060fe99ed27e7b8f00b61966cbddf1c6a4c18
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Similar Match Source Code
This contract matches the deployed Bytecode of the Source Code for Contract 0x597aD1e0...c0233522e
The constructor portion of the code might be different and could alter the actual behaviour of the contract

Contract Name:
yVault

Compiler Version
v0.5.17+commit.d19bba13

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

pragma solidity ^0.5.16;

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

contract Context {
    constructor () internal { }
    // solhint-disable-previous-line no-empty-blocks

    function _msgSender() internal view returns (address payable) {
        return msg.sender;
    }

    function _msgData() internal view returns (bytes memory) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    constructor () internal {
        _owner = _msgSender();
        emit OwnershipTransferred(address(0), _owner);
    }
    function owner() public view returns (address) {
        return _owner;
    }
    modifier onlyOwner() {
        require(isOwner(), "Ownable: caller is not the owner");
        _;
    }
    function isOwner() public view returns (bool) {
        return _msgSender() == _owner;
    }
    function renounceOwnership() public onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }
    function transferOwnership(address newOwner) public onlyOwner {
        _transferOwnership(newOwner);
    }
    function _transferOwnership(address newOwner) internal {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

contract ERC20 is Context, IERC20 {
    using SafeMath for uint256;

    mapping (address => uint256) private _balances;

    mapping (address => mapping (address => uint256)) private _allowances;

    uint256 private _totalSupply;
    function totalSupply() public view returns (uint256) {
        return _totalSupply;
    }
    function balanceOf(address account) public view returns (uint256) {
        return _balances[account];
    }
    function transfer(address recipient, uint256 amount) public returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }
    function allowance(address owner, address spender) public view returns (uint256) {
        return _allowances[owner][spender];
    }
    function approve(address spender, uint256 amount) public returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }
    function transferFrom(address sender, address recipient, uint256 amount) public returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
        return true;
    }
    function increaseAllowance(address spender, uint256 addedValue) public returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));
        return true;
    }
    function decreaseAllowance(address spender, uint256 subtractedValue) public returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
        return true;
    }
    function _transfer(address sender, address recipient, uint256 amount) internal {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
    }
    function _mint(address account, uint256 amount) internal {
        require(account != address(0), "ERC20: mint to the zero address");

        _totalSupply = _totalSupply.add(amount);
        _balances[account] = _balances[account].add(amount);
        emit Transfer(address(0), account, amount);
    }
    function _burn(address account, uint256 amount) internal {
        require(account != address(0), "ERC20: burn from the zero address");

        _balances[account] = _balances[account].sub(amount, "ERC20: burn amount exceeds balance");
        _totalSupply = _totalSupply.sub(amount);
        emit Transfer(account, address(0), amount);
    }
    function _approve(address owner, address spender, uint256 amount) internal {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }
    function _burnFrom(address account, uint256 amount) internal {
        _burn(account, amount);
        _approve(account, _msgSender(), _allowances[account][_msgSender()].sub(amount, "ERC20: burn amount exceeds allowance"));
    }
}

contract ERC20Detailed is IERC20 {
    string private _name;
    string private _symbol;
    uint8 private _decimals;

    constructor (string memory name, string memory symbol, uint8 decimals) public {
        _name = name;
        _symbol = symbol;
        _decimals = decimals;
    }
    function name() public view returns (string memory) {
        return _name;
    }
    function symbol() public view returns (string memory) {
        return _symbol;
    }
    function decimals() public view returns (uint8) {
        return _decimals;
    }
}

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

        return c;
    }
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

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

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

        return c;
    }
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        // Solidity only automatically asserts when dividing by 0
        require(b > 0, errorMessage);
        uint256 c = a / b;

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

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

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

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

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

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

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

    function safeIncreaseAllowance(IERC20 token, address spender, uint256 value) internal {
        uint256 newAllowance = token.allowance(address(this), spender).add(value);
        callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));
    }

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

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

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

interface Controller {
    function withdraw(address, uint) external;
    function balanceOf(address) external view returns (uint);
    function earn(address, uint) external;
}

contract yVault is ERC20, ERC20Detailed {
  using SafeERC20 for IERC20;
  using Address for address;
  using SafeMath for uint256;

  IERC20 public token;
  
  uint public min = 9500;
  uint public constant max = 10000;
  
  address public governance;
  address public controller;

  constructor (address _token, address _controller) public ERC20Detailed(
      string(abi.encodePacked("yearn ", ERC20Detailed(_token).name())),
      string(abi.encodePacked("y", ERC20Detailed(_token).symbol())),
      ERC20Detailed(_token).decimals()
  ) {
      token = IERC20(_token);
      governance = msg.sender;
      controller = _controller;
  }
  
  function balance() public view returns (uint) {
      return token.balanceOf(address(this))
             .add(Controller(controller).balanceOf(address(token)));
  }
  
  function setMin(uint _min) external {
      require(msg.sender == governance, "!governance");
      min = _min;
  }
  
  function setGovernance(address _governance) public {
      require(msg.sender == governance, "!governance");
      governance = _governance;
  }
  
  function setController(address _controller) public {
      require(msg.sender == governance, "!governance");
      controller = _controller;
  }
  
  // Custom logic in here for how much the vault allows to be borrowed
  // Sets minimum required on-hand to keep small withdrawals cheap
  function available() public view returns (uint) {
      return token.balanceOf(address(this)).mul(min).div(max);
  }
  
  function earn() public {
      uint _bal = available();
      token.safeTransfer(controller, _bal);
      Controller(controller).earn(address(token), _bal);
  }

  function deposit(uint _amount) external {
      uint _pool = balance();
      token.safeTransferFrom(msg.sender, address(this), _amount);
      uint shares = 0;
      if (_pool == 0) {
        shares = _amount;
      } else {
        shares = (_amount.mul(totalSupply())).div(_pool);
      }
      _mint(msg.sender, shares);
  }

  // No rebalance implementation for lower fees and faster swaps
  function withdraw(uint _shares) external {
      uint r = (balance().mul(_shares)).div(totalSupply());
      _burn(msg.sender, _shares);

      // Check balance
      uint b = token.balanceOf(address(this));
      if (b < r) {
          uint _withdraw = r.sub(b);
          Controller(controller).withdraw(address(token), _withdraw);
          uint _after = token.balanceOf(address(this));
          uint _diff = _after.sub(b);
          if (_diff < _withdraw) {
              r = b.add(_diff);
          }
      }
      
      token.safeTransfer(msg.sender, r);
  }

  function getPricePerFullShare() public view returns (uint) {
    return balance().mul(1e18).div(totalSupply());
  }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_controller","type":"address"}],"payable":false,"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":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"},{"constant":true,"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"available","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"balance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"controller","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"deposit","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"earn","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getPricePerFullShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"governance","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"max","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"min","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_controller","type":"address"}],"name":"setController","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_governance","type":"address"}],"name":"setGovernance","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_min","type":"uint256"}],"name":"setMin","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"token","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_shares","type":"uint256"}],"name":"withdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"}]

608060405261251c6006553480156200001757600080fd5b506040516200312238038062003122833981810160405260408110156200003d57600080fd5b8101908080519060200190929190805190602001909291905050508173ffffffffffffffffffffffffffffffffffffffff166306fdde036040518163ffffffff1660e01b815260040160006040518083038186803b1580156200009f57600080fd5b505afa158015620000b4573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052506020811015620000df57600080fd5b81019080805160405193929190846401000000008211156200010057600080fd5b838201915060208201858111156200011757600080fd5b82518660018202830111640100000000821117156200013557600080fd5b8083526020830192505050908051906020019080838360005b838110156200016b5780820151818401526020810190506200014e565b50505050905090810190601f168015620001995780820380516001836020036101000a031916815260200191505b5060405250505060405160200180807f796561726e20000000000000000000000000000000000000000000000000000081525060060182805190602001908083835b60208310620002005780518252602082019150602081019050602083039250620001db565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040528273ffffffffffffffffffffffffffffffffffffffff166395d89b416040518163ffffffff1660e01b815260040160006040518083038186803b1580156200027b57600080fd5b505afa15801562000290573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052506020811015620002bb57600080fd5b8101908080516040519392919084640100000000821115620002dc57600080fd5b83820191506020820185811115620002f357600080fd5b82518660018202830111640100000000821117156200031157600080fd5b8083526020830192505050908051906020019080838360005b83811015620003475780820151818401526020810190506200032a565b50505050905090810190601f168015620003755780820380516001836020036101000a031916815260200191505b5060405250505060405160200180807f790000000000000000000000000000000000000000000000000000000000000081525060010182805190602001908083835b60208310620003dc5780518252602082019150602081019050602083039250620003b7565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040528373ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b1580156200045757600080fd5b505afa1580156200046c573d6000803e3d6000fd5b505050506040513d60208110156200048357600080fd5b81019080805190602001909291905050508260039080519060200190620004ac929190620005af565b508160049080519060200190620004c5929190620005af565b5080600560006101000a81548160ff021916908360ff16021790555050505081600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050506200065e565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620005f257805160ff191683800117855562000623565b8280016001018555821562000623579182015b828111156200062257825182559160200191906001019062000605565b5b50905062000632919062000636565b5090565b6200065b91905b80821115620006575760008160009055506001016200063d565b5090565b90565b612ab4806200066e6000396000f3fe608060405234801561001057600080fd5b50600436106101735760003560e01c806377c7b8fc116100de578063b69ef8a811610097578063dd62ed3e11610071578063dd62ed3e14610714578063f77c47911461078c578063f8897945146107d6578063fc0c546a146107f457610173565b8063b69ef8a8146106be578063b6b55f25146106dc578063d389800f1461070a57610173565b806377c7b8fc146104c957806392eefe9b146104e757806395d89b411461052b578063a457c2d7146105ae578063a9059cbb14610614578063ab033ea91461067a57610173565b80633950935111610130578063395093511461035757806345dc3dd8146103bd57806348a0d754146103eb5780635aa6e675146104095780636ac5db191461045357806370a082311461047157610173565b806306fdde0314610178578063095ea7b3146101fb57806318160ddd1461026157806323b872dd1461027f5780632e1a7d4d14610305578063313ce56714610333575b600080fd5b61018061083e565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101c05780820151818401526020810190506101a5565b50505050905090810190601f1680156101ed5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102476004803603604081101561021157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506108e0565b604051808215151515815260200191505060405180910390f35b6102696108fe565b6040518082815260200191505060405180910390f35b6102eb6004803603606081101561029557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610908565b604051808215151515815260200191505060405180910390f35b6103316004803603602081101561031b57600080fd5b81019080803590602001909291905050506109e1565b005b61033b610d6b565b604051808260ff1660ff16815260200191505060405180910390f35b6103a36004803603604081101561036d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610d82565b604051808215151515815260200191505060405180910390f35b6103e9600480360360208110156103d357600080fd5b8101908080359060200190929190505050610e35565b005b6103f3610f02565b6040518082815260200191505060405180910390f35b61041161100b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61045b611031565b6040518082815260200191505060405180910390f35b6104b36004803603602081101561048757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611037565b6040518082815260200191505060405180910390f35b6104d161107f565b6040518082815260200191505060405180910390f35b610529600480360360208110156104fd57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506110c1565b005b6105336111c8565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610573578082015181840152602081019050610558565b50505050905090810190601f1680156105a05780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6105fa600480360360408110156105c457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061126a565b604051808215151515815260200191505060405180910390f35b6106606004803603604081101561062a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611337565b604051808215151515815260200191505060405180910390f35b6106bc6004803603602081101561069057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611355565b005b6106c661145c565b6040518082815260200191505060405180910390f35b610708600480360360208110156106f257600080fd5b810190808035906020019092919050505061164a565b005b6107126116f9565b005b6107766004803603604081101561072a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061185a565b6040518082815260200191505060405180910390f35b6107946118e1565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6107de611907565b6040518082815260200191505060405180910390f35b6107fc61190d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b606060038054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156108d65780601f106108ab576101008083540402835291602001916108d6565b820191906000526020600020905b8154815290600101906020018083116108b957829003601f168201915b5050505050905090565b60006108f46108ed611933565b848461193b565b6001905092915050565b6000600254905090565b6000610915848484611b32565b6109d684610921611933565b6109d18560405180606001604052806028815260200161299f60289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610987611933565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611de89092919063ffffffff16565b61193b565b600190509392505050565b6000610a166109ee6108fe565b610a08846109fa61145c565b611ea890919063ffffffff16565b611f2e90919063ffffffff16565b9050610a223383611f78565b6000600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610ac357600080fd5b505afa158015610ad7573d6000803e3d6000fd5b505050506040513d6020811015610aed57600080fd5b8101908080519060200190929190505050905081811015610d19576000610b1d828461213090919063ffffffff16565b9050600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f3fef3a3600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015610bea57600080fd5b505af1158015610bfe573d6000803e3d6000fd5b505050506000600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610ca357600080fd5b505afa158015610cb7573d6000803e3d6000fd5b505050506040513d6020811015610ccd57600080fd5b810190808051906020019092919050505090506000610cf5848361213090919063ffffffff16565b905082811015610d1557610d12818561217a90919063ffffffff16565b94505b5050505b610d663383600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166122029092919063ffffffff16565b505050565b6000600560009054906101000a900460ff16905090565b6000610e2b610d8f611933565b84610e268560016000610da0611933565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461217a90919063ffffffff16565b61193b565b6001905092915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ef8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21676f7665726e616e636500000000000000000000000000000000000000000081525060200191505060405180910390fd5b8060068190555050565b6000611006612710610ff8600654600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610faf57600080fd5b505afa158015610fc3573d6000803e3d6000fd5b505050506040513d6020811015610fd957600080fd5b8101908080519060200190929190505050611ea890919063ffffffff16565b611f2e90919063ffffffff16565b905090565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61271081565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60006110bc61108c6108fe565b6110ae670de0b6b3a76400006110a061145c565b611ea890919063ffffffff16565b611f2e90919063ffffffff16565b905090565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611184576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21676f7665726e616e636500000000000000000000000000000000000000000081525060200191505060405180910390fd5b80600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b606060048054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156112605780601f1061123557610100808354040283529160200191611260565b820191906000526020600020905b81548152906001019060200180831161124357829003601f168201915b5050505050905090565b600061132d611277611933565b8461132885604051806060016040528060258152602001612a5b60259139600160006112a1611933565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611de89092919063ffffffff16565b61193b565b6001905092915050565b600061134b611344611933565b8484611b32565b6001905092915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611418576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21676f7665726e616e636500000000000000000000000000000000000000000081525060200191505060405180910390fd5b80600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000611645600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561152257600080fd5b505afa158015611536573d6000803e3d6000fd5b505050506040513d602081101561154c57600080fd5b8101908080519060200190929190505050600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156115fc57600080fd5b505afa158015611610573d6000803e3d6000fd5b505050506040513d602081101561162657600080fd5b810190808051906020019092919050505061217a90919063ffffffff16565b905090565b600061165461145c565b90506116a5333084600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166122d3909392919063ffffffff16565b600080905060008214156116bb578290506116ea565b6116e7826116d96116ca6108fe565b86611ea890919063ffffffff16565b611f2e90919063ffffffff16565b90505b6116f433826123d9565b505050565b6000611703610f02565b9050611774600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166122029092919063ffffffff16565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b02bf4b9600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561183f57600080fd5b505af1158015611853573d6000803e3d6000fd5b5050505050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60065481565b600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156119c1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180612a0d6024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611a47576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806129366022913960400191505060405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611bb8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806129e86025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611c3e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806128f16023913960400191505060405180910390fd5b611ca981604051806060016040528060268152602001612958602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611de89092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611d3c816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461217a90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b6000838311158290611e95576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611e5a578082015181840152602081019050611e3f565b50505050905090810190601f168015611e875780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b600080831415611ebb5760009050611f28565b6000828402905082848281611ecc57fe5b0414611f23576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602181526020018061297e6021913960400191505060405180910390fd5b809150505b92915050565b6000611f7083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612594565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611ffe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806129c76021913960400191505060405180910390fd5b61206981604051806060016040528060228152602001612914602291396000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611de89092919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506120c08160025461213090919063ffffffff16565b600281905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b600061217283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611de8565b905092915050565b6000808284019050838110156121f8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b6122ce838473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb905060e01b8484604051602401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505061265a565b505050565b6123d3848573ffffffffffffffffffffffffffffffffffffffff166323b872dd905060e01b858585604051602401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505061265a565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561247c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f45524332303a206d696e7420746f20746865207a65726f20616464726573730081525060200191505060405180910390fd5b6124918160025461217a90919063ffffffff16565b6002819055506124e8816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461217a90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b60008083118290612640576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156126055780820151818401526020810190506125ea565b50505050905090810190601f1680156126325780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161264c57fe5b049050809150509392505050565b6126798273ffffffffffffffffffffffffffffffffffffffff166128a5565b6126eb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e74726163740081525060200191505060405180910390fd5b600060608373ffffffffffffffffffffffffffffffffffffffff16836040518082805190602001908083835b6020831061273a5780518252602082019150602081019050602083039250612717565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d806000811461279c576040519150601f19603f3d011682016040523d82523d6000602084013e6127a1565b606091505b509150915081612819576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656481525060200191505060405180910390fd5b60008151111561289f5780806020019051602081101561283857600080fd5b810190808051906020019092919050505061289e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180612a31602a913960400191505060405180910390fd5b5b50505050565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f91506000801b82141580156128e75750808214155b9250505091905056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f74207375636365656445524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa265627a7a7231582079f8d577922ab95ef59e5dc1b898a1a35e416558ea1c8d73e40b2bf8ccfe76a664736f6c63430005110032000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4800000000000000000000000031317f9a5e4cc1d231bdf07755c994015a96a37c

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101735760003560e01c806377c7b8fc116100de578063b69ef8a811610097578063dd62ed3e11610071578063dd62ed3e14610714578063f77c47911461078c578063f8897945146107d6578063fc0c546a146107f457610173565b8063b69ef8a8146106be578063b6b55f25146106dc578063d389800f1461070a57610173565b806377c7b8fc146104c957806392eefe9b146104e757806395d89b411461052b578063a457c2d7146105ae578063a9059cbb14610614578063ab033ea91461067a57610173565b80633950935111610130578063395093511461035757806345dc3dd8146103bd57806348a0d754146103eb5780635aa6e675146104095780636ac5db191461045357806370a082311461047157610173565b806306fdde0314610178578063095ea7b3146101fb57806318160ddd1461026157806323b872dd1461027f5780632e1a7d4d14610305578063313ce56714610333575b600080fd5b61018061083e565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101c05780820151818401526020810190506101a5565b50505050905090810190601f1680156101ed5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102476004803603604081101561021157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506108e0565b604051808215151515815260200191505060405180910390f35b6102696108fe565b6040518082815260200191505060405180910390f35b6102eb6004803603606081101561029557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610908565b604051808215151515815260200191505060405180910390f35b6103316004803603602081101561031b57600080fd5b81019080803590602001909291905050506109e1565b005b61033b610d6b565b604051808260ff1660ff16815260200191505060405180910390f35b6103a36004803603604081101561036d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610d82565b604051808215151515815260200191505060405180910390f35b6103e9600480360360208110156103d357600080fd5b8101908080359060200190929190505050610e35565b005b6103f3610f02565b6040518082815260200191505060405180910390f35b61041161100b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61045b611031565b6040518082815260200191505060405180910390f35b6104b36004803603602081101561048757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611037565b6040518082815260200191505060405180910390f35b6104d161107f565b6040518082815260200191505060405180910390f35b610529600480360360208110156104fd57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506110c1565b005b6105336111c8565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610573578082015181840152602081019050610558565b50505050905090810190601f1680156105a05780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6105fa600480360360408110156105c457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061126a565b604051808215151515815260200191505060405180910390f35b6106606004803603604081101561062a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611337565b604051808215151515815260200191505060405180910390f35b6106bc6004803603602081101561069057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611355565b005b6106c661145c565b6040518082815260200191505060405180910390f35b610708600480360360208110156106f257600080fd5b810190808035906020019092919050505061164a565b005b6107126116f9565b005b6107766004803603604081101561072a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061185a565b6040518082815260200191505060405180910390f35b6107946118e1565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6107de611907565b6040518082815260200191505060405180910390f35b6107fc61190d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b606060038054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156108d65780601f106108ab576101008083540402835291602001916108d6565b820191906000526020600020905b8154815290600101906020018083116108b957829003601f168201915b5050505050905090565b60006108f46108ed611933565b848461193b565b6001905092915050565b6000600254905090565b6000610915848484611b32565b6109d684610921611933565b6109d18560405180606001604052806028815260200161299f60289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610987611933565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611de89092919063ffffffff16565b61193b565b600190509392505050565b6000610a166109ee6108fe565b610a08846109fa61145c565b611ea890919063ffffffff16565b611f2e90919063ffffffff16565b9050610a223383611f78565b6000600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610ac357600080fd5b505afa158015610ad7573d6000803e3d6000fd5b505050506040513d6020811015610aed57600080fd5b8101908080519060200190929190505050905081811015610d19576000610b1d828461213090919063ffffffff16565b9050600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f3fef3a3600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015610bea57600080fd5b505af1158015610bfe573d6000803e3d6000fd5b505050506000600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610ca357600080fd5b505afa158015610cb7573d6000803e3d6000fd5b505050506040513d6020811015610ccd57600080fd5b810190808051906020019092919050505090506000610cf5848361213090919063ffffffff16565b905082811015610d1557610d12818561217a90919063ffffffff16565b94505b5050505b610d663383600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166122029092919063ffffffff16565b505050565b6000600560009054906101000a900460ff16905090565b6000610e2b610d8f611933565b84610e268560016000610da0611933565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461217a90919063ffffffff16565b61193b565b6001905092915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ef8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21676f7665726e616e636500000000000000000000000000000000000000000081525060200191505060405180910390fd5b8060068190555050565b6000611006612710610ff8600654600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610faf57600080fd5b505afa158015610fc3573d6000803e3d6000fd5b505050506040513d6020811015610fd957600080fd5b8101908080519060200190929190505050611ea890919063ffffffff16565b611f2e90919063ffffffff16565b905090565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61271081565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60006110bc61108c6108fe565b6110ae670de0b6b3a76400006110a061145c565b611ea890919063ffffffff16565b611f2e90919063ffffffff16565b905090565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611184576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21676f7665726e616e636500000000000000000000000000000000000000000081525060200191505060405180910390fd5b80600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b606060048054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156112605780601f1061123557610100808354040283529160200191611260565b820191906000526020600020905b81548152906001019060200180831161124357829003601f168201915b5050505050905090565b600061132d611277611933565b8461132885604051806060016040528060258152602001612a5b60259139600160006112a1611933565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611de89092919063ffffffff16565b61193b565b6001905092915050565b600061134b611344611933565b8484611b32565b6001905092915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611418576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f21676f7665726e616e636500000000000000000000000000000000000000000081525060200191505060405180910390fd5b80600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000611645600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561152257600080fd5b505afa158015611536573d6000803e3d6000fd5b505050506040513d602081101561154c57600080fd5b8101908080519060200190929190505050600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156115fc57600080fd5b505afa158015611610573d6000803e3d6000fd5b505050506040513d602081101561162657600080fd5b810190808051906020019092919050505061217a90919063ffffffff16565b905090565b600061165461145c565b90506116a5333084600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166122d3909392919063ffffffff16565b600080905060008214156116bb578290506116ea565b6116e7826116d96116ca6108fe565b86611ea890919063ffffffff16565b611f2e90919063ffffffff16565b90505b6116f433826123d9565b505050565b6000611703610f02565b9050611774600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166122029092919063ffffffff16565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b02bf4b9600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561183f57600080fd5b505af1158015611853573d6000803e3d6000fd5b5050505050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60065481565b600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156119c1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180612a0d6024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611a47576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806129366022913960400191505060405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611bb8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806129e86025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611c3e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806128f16023913960400191505060405180910390fd5b611ca981604051806060016040528060268152602001612958602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611de89092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611d3c816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461217a90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b6000838311158290611e95576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611e5a578082015181840152602081019050611e3f565b50505050905090810190601f168015611e875780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b600080831415611ebb5760009050611f28565b6000828402905082848281611ecc57fe5b0414611f23576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602181526020018061297e6021913960400191505060405180910390fd5b809150505b92915050565b6000611f7083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612594565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611ffe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806129c76021913960400191505060405180910390fd5b61206981604051806060016040528060228152602001612914602291396000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611de89092919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506120c08160025461213090919063ffffffff16565b600281905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b600061217283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611de8565b905092915050565b6000808284019050838110156121f8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b6122ce838473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb905060e01b8484604051602401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505061265a565b505050565b6123d3848573ffffffffffffffffffffffffffffffffffffffff166323b872dd905060e01b858585604051602401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505061265a565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561247c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f45524332303a206d696e7420746f20746865207a65726f20616464726573730081525060200191505060405180910390fd5b6124918160025461217a90919063ffffffff16565b6002819055506124e8816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461217a90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b60008083118290612640576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156126055780820151818401526020810190506125ea565b50505050905090810190601f1680156126325780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161264c57fe5b049050809150509392505050565b6126798273ffffffffffffffffffffffffffffffffffffffff166128a5565b6126eb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e74726163740081525060200191505060405180910390fd5b600060608373ffffffffffffffffffffffffffffffffffffffff16836040518082805190602001908083835b6020831061273a5780518252602082019150602081019050602083039250612717565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d806000811461279c576040519150601f19603f3d011682016040523d82523d6000602084013e6127a1565b606091505b509150915081612819576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656481525060200191505060405180910390fd5b60008151111561289f5780806020019051602081101561283857600080fd5b810190808051906020019092919050505061289e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180612a31602a913960400191505060405180910390fd5b5b50505050565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f91506000801b82141580156128e75750808214155b9250505091905056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f74207375636365656445524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa265627a7a7231582079f8d577922ab95ef59e5dc1b898a1a35e416558ea1c8d73e40b2bf8ccfe76a664736f6c63430005110032

Deployed Bytecode Sourcemap

10938:2833:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10938:2833:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5973:83;;;:::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;5973:83:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2993:152;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2993:152:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;2476:91;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3151:304;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3151:304:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;13062:583;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;13062:583:0;;;;;;;;;;;;;;;;;:::i;:::-;;6155:83;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3461:210;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3461:210:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;11780:118;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11780:118:0;;;;;;;;;;;;;;;;;:::i;:::-;;12356;;;:::i;:::-;;;;;;;;;;;;;;;;;;;11173:25;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;11132:32;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2573:110;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2573:110:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;13651:117;;;:::i;:::-;;;;;;;;;;;;;;;;;;;12061:147;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;12061:147:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;6062:87;;;:::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;6062:87:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3677:261;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3677:261:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;2689:158;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2689:158:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;11906:147;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11906:147:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;11605:167;;;:::i;:::-;;;;;;;;;;;;;;;;;;;12652:338;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;12652:338:0;;;;;;;;;;;;;;;;;:::i;:::-;;12482:164;;;:::i;:::-;;2853:134;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2853:134:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;11203:25;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;11105:22;;;:::i;:::-;;;;;;;;;;;;;;;;;;;11077:19;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;5973:83;6010:13;6043:5;6036:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5973:83;:::o;2993:152::-;3059:4;3076:39;3085:12;:10;:12::i;:::-;3099:7;3108:6;3076:8;:39::i;:::-;3133:4;3126:11;;2993:152;;;;:::o;2476:91::-;2520:7;2547:12;;2540:19;;2476:91;:::o;3151:304::-;3240:4;3257:36;3267:6;3275:9;3286:6;3257:9;:36::i;:::-;3304:121;3313:6;3321:12;:10;:12::i;:::-;3335:89;3373:6;3335:89;;;;;;;;;;;;;;;;;:11;:19;3347:6;3335:19;;;;;;;;;;;;;;;:33;3355:12;:10;:12::i;:::-;3335:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;3304:8;:121::i;:::-;3443:4;3436:11;;3151:304;;;;;:::o;13062:583::-;13112:6;13121:43;13150:13;:11;:13::i;:::-;13122:22;13136:7;13122:9;:7;:9::i;:::-;:13;;:22;;;;:::i;:::-;13121:28;;:43;;;;:::i;:::-;13112:52;;13173:26;13179:10;13191:7;13173:5;:26::i;:::-;13234:6;13243:5;;;;;;;;;;;:15;;;13267:4;13243:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13243:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;13243:30:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;13243:30:0;;;;;;;;;;;;;;;;13234:39;;13290:1;13286;:5;13282:308;;;13306:14;13323:8;13329:1;13323;:5;;:8;;;;:::i;:::-;13306:25;;13355:10;;;;;;;;;;;13344:31;;;13384:5;;;;;;;;;;;13392:9;13344:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13344:58:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;13344:58:0;;;;13415:11;13429:5;;;;;;;;;;;:15;;;13453:4;13429:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13429:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;13429:30:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;13429:30:0;;;;;;;;;;;;;;;;13415:44;;13472:10;13485:13;13496:1;13485:6;:10;;:13;;;;:::i;:::-;13472:26;;13523:9;13515:5;:17;13511:70;;;13555:12;13561:5;13555:1;:5;;:12;;;;:::i;:::-;13551:16;;13511:70;13282:308;;;;13606:33;13625:10;13637:1;13606:5;;;;;;;;;;;:18;;;;:33;;;;;:::i;:::-;13062:583;;;:::o;6155:83::-;6196:5;6221:9;;;;;;;;;;;6214:16;;6155:83;:::o;3461:210::-;3541:4;3558:83;3567:12;:10;:12::i;:::-;3581:7;3590:50;3629:10;3590:11;:25;3602:12;:10;:12::i;:::-;3590:25;;;;;;;;;;;;;;;:34;3616:7;3590:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;3558:8;:83::i;:::-;3659:4;3652:11;;3461:210;;;;:::o;11780:118::-;11847:10;;;;;;;;;;;11833:24;;:10;:24;;;11825:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11888:4;11882:3;:10;;;;11780:118;:::o;12356:::-;12398:4;12420:48;11159:5;12420:39;12455:3;;12420:5;;;;;;;;;;;:15;;;12444:4;12420:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12420:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12420:30:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;12420:30:0;;;;;;;;;;;;;;;;:34;;:39;;;;:::i;:::-;:43;;:48;;;;:::i;:::-;12413:55;;12356:118;:::o;11173:25::-;;;;;;;;;;;;;:::o;11132:32::-;11159:5;11132:32;:::o;2573:110::-;2630:7;2657:9;:18;2667:7;2657:18;;;;;;;;;;;;;;;;2650:25;;2573:110;;;:::o;13651:117::-;13704:4;13724:38;13748:13;:11;:13::i;:::-;13724:19;13738:4;13724:9;:7;:9::i;:::-;:13;;:19;;;;:::i;:::-;:23;;:38;;;;:::i;:::-;13717:45;;13651:117;:::o;12061:147::-;12143:10;;;;;;;;;;;12129:24;;:10;:24;;;12121:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12191:11;12178:10;;:24;;;;;;;;;;;;;;;;;;12061:147;:::o;6062:87::-;6101:13;6134:7;6127:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6062:87;:::o;3677:261::-;3762:4;3779:129;3788:12;:10;:12::i;:::-;3802:7;3811:96;3850:15;3811:96;;;;;;;;;;;;;;;;;:11;:25;3823:12;:10;:12::i;:::-;3811:25;;;;;;;;;;;;;;;:34;3837:7;3811:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;3779:8;:129::i;:::-;3926:4;3919:11;;3677:261;;;;:::o;2689:158::-;2758:4;2775:42;2785:12;:10;:12::i;:::-;2799:9;2810:6;2775:9;:42::i;:::-;2835:4;2828:11;;2689:158;;;;:::o;11906:147::-;11988:10;;;;;;;;;;;11974:24;;:10;:24;;;11966:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12036:11;12023:10;;:24;;;;;;;;;;;;;;;;;;11906:147;:::o;11605:167::-;11645:4;11667:99;11728:10;;;;;;;;;;;11717:32;;;11758:5;;;;;;;;;;;11717:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11717:48:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11717:48:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11717:48:0;;;;;;;;;;;;;;;;11667:5;;;;;;;;;;;:15;;;11691:4;11667:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11667:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11667:30:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11667:30:0;;;;;;;;;;;;;;;;:49;;:99;;;;:::i;:::-;11660:106;;11605:167;:::o;12652:338::-;12701:10;12714:9;:7;:9::i;:::-;12701:22;;12732:58;12755:10;12775:4;12782:7;12732:5;;;;;;;;;;;:22;;;;:58;;;;;;:::i;:::-;12799:11;12813:1;12799:15;;12836:1;12827:5;:10;12823:128;;;12859:7;12850:16;;12823:128;;;12902:39;12935:5;12903:26;12915:13;:11;:13::i;:::-;12903:7;:11;;:26;;;;:::i;:::-;12902:32;;:39;;;;:::i;:::-;12893:48;;12823:128;12959:25;12965:10;12977:6;12959:5;:25::i;:::-;12652:338;;;:::o;12482:164::-;12514:9;12526:11;:9;:11::i;:::-;12514:23;;12546:36;12565:10;;;;;;;;;;;12577:4;12546:5;;;;;;;;;;;:18;;;;:36;;;;;:::i;:::-;12602:10;;;;;;;;;;;12591:27;;;12627:5;;;;;;;;;;;12635:4;12591:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12591:49:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12591:49:0;;;;12482:164;:::o;2853:134::-;2925:7;2952:11;:18;2964:5;2952:18;;;;;;;;;;;;;;;:27;2971:7;2952:27;;;;;;;;;;;;;;;;2945:34;;2853:134;;;;:::o;11203:25::-;;;;;;;;;;;;;:::o;11105:22::-;;;;:::o;11077:19::-;;;;;;;;;;;;;:::o;818:98::-;863:15;898:10;891:17;;818:98;:::o;5089:338::-;5200:1;5183:19;;:5;:19;;;;5175:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5281:1;5262:21;;:7;:21;;;;5254:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5365:6;5335:11;:18;5347:5;5335:18;;;;;;;;;;;;;;;:27;5354:7;5335:27;;;;;;;;;;;;;;;:36;;;;5403:7;5387:32;;5396:5;5387:32;;;5412:6;5387:32;;;;;;;;;;;;;;;;;;5089:338;;;:::o;3944:471::-;4060:1;4042:20;;:6;:20;;;;4034:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4144:1;4123:23;;:9;:23;;;;4115:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4219;4241:6;4219:71;;;;;;;;;;;;;;;;;:9;:17;4229:6;4219:17;;;;;;;;;;;;;;;;:21;;:71;;;;;:::i;:::-;4199:9;:17;4209:6;4199:17;;;;;;;;;;;;;;;:91;;;;4324:32;4349:6;4324:9;:20;4334:9;4324:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;4301:9;:20;4311:9;4301:20;;;;;;;;;;;;;;;:55;;;;4389:9;4372:35;;4381:6;4372:35;;;4400:6;4372:35;;;;;;;;;;;;;;;;;;3944:471;;;:::o;6598:192::-;6684:7;6717:1;6712;:6;;6720:12;6704: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;6704:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6744:9;6760:1;6756;:5;6744:17;;6781:1;6774:8;;;6598:192;;;;;:::o;6796:250::-;6854:7;6883:1;6878;:6;6874:47;;;6908:1;6901:8;;;;6874:47;6933:9;6949:1;6945;:5;6933:17;;6978:1;6973;6969;:5;;;;;;:10;6961:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7037:1;7030:8;;;6796:250;;;;;:::o;7052:132::-;7110:7;7137:39;7141:1;7144;7137:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;7130:46;;7052:132;;;;:::o;4735:348::-;4830:1;4811:21;;:7;:21;;;;4803:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4904:68;4927:6;4904:68;;;;;;;;;;;;;;;;;:9;:18;4914:7;4904:18;;;;;;;;;;;;;;;;:22;;:68;;;;;:::i;:::-;4883:9;:18;4893:7;4883:18;;;;;;;;;;;;;;;:89;;;;4998:24;5015:6;4998:12;;:16;;:24;;;;:::i;:::-;4983:12;:39;;;;5064:1;5038:37;;5047:7;5038:37;;;5068:6;5038:37;;;;;;;;;;;;;;;;;;4735:348;;:::o;6456:136::-;6514:7;6541:43;6545:1;6548;6541:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;6534:50;;6456:136;;;;:::o;6269:181::-;6327:7;6347:9;6363:1;6359;:5;6347:17;;6388:1;6383;:6;;6375:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6441:1;6434:8;;;6269:181;;;;:::o;8769:176::-;8852:85;8871:5;8901;:14;;;:23;;;;8926:2;8930:5;8878:58;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;8878:58:0;;;;;;;38:4:-1;29:7;25:18;67:10;61:17;96:58;199:8;192:4;186;182:15;179:29;167:10;160:49;0:215;;;8878:58:0;8852:18;:85::i;:::-;8769:176;;;:::o;8953:204::-;9054:95;9073:5;9103;:18;;;:27;;;;9132:4;9138:2;9142:5;9080:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;9080:68:0;;;;;;;38:4:-1;29:7;25:18;67:10;61:17;96:58;199:8;192:4;186;182:15;179:29;167:10;160:49;0:215;;;9080:68:0;9054:18;:95::i;:::-;8953:204;;;;:::o;4421:308::-;4516:1;4497:21;;:7;:21;;;;4489:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4582:24;4599:6;4582:12;;:16;;:24;;;;:::i;:::-;4567:12;:39;;;;4638:30;4661:6;4638:9;:18;4648:7;4638:18;;;;;;;;;;;;;;;;:22;;:30;;;;:::i;:::-;4617:9;:18;4627:7;4617:18;;;;;;;;;;;;;;;:51;;;;4705:7;4684:37;;4701:1;4684:37;;;4714:6;4684:37;;;;;;;;;;;;;;;;;;4421:308;;:::o;7190:258::-;7276:7;7375:1;7371;:5;7378:12;7363: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;7363:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7402:9;7418:1;7414;:5;;;;;;7402:17;;7439:1;7432:8;;;7190:258;;;;;:::o;10149:598::-;10237:27;10245:5;10237:25;;;:27::i;:::-;10229:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10374:12;10388:23;10423:5;10415:19;;10435:4;10415:25;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;10415:25:0;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;10373:67:0;;;;10459:7;10451:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10540:1;10520:10;:17;:21;10516:224;;;10662:10;10651:30;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;10651:30:0;;;;;;;;;;;;;;;;10643:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10516:224;10149:598;;;;:::o;7786:374::-;7846:4;7863:16;7890:19;7912:66;7890:88;;;;8081:7;8069:20;8057:32;;8121:3;8109:15;;:8;:15;;:42;;;;;8140:11;8128:8;:23;;8109:42;8101:51;;;;7786:374;;;:::o

Swarm Source

bzzr://79f8d577922ab95ef59e5dc1b898a1a35e416558ea1c8d73e40b2bf8ccfe76a6
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.