ETH Price: $1,840.36 (-14.16%)
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To

There are no matching entries

Please try again later

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
APRWithPoolOracle

Compiler Version
v0.5.12+commit.7709ece9

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license
/**
 *Submitted for verification at Etherscan.io on 2020-02-06
*/

pragma solidity ^0.5.0;
pragma experimental ABIEncoderV2;

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function decimals() external view returns (uint8);
    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;
    }
}

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

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

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

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

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

        return c;
    }
    function divCeil(
        uint256 a,
        uint256 b
    )
        internal
        pure
        returns (uint256)
    {
        uint256 quotient = div(a, b);
        uint256 remainder = a - quotient * b;
        if (remainder > 0) {
            return quotient + 1;
        } else {
            return quotient;
        }
    }
    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 Decimal {
    using SafeMath for uint256;

    uint256 constant BASE = 10**18;

    function one()
        internal
        pure
        returns (uint256)
    {
        return BASE;
    }

    function onePlus(
        uint256 d
    )
        internal
        pure
        returns (uint256)
    {
        return d.add(BASE);
    }

    function mulFloor(
        uint256 target,
        uint256 d
    )
        internal
        pure
        returns (uint256)
    {
        return target.mul(d) / BASE;
    }

    function mulCeil(
        uint256 target,
        uint256 d
    )
        internal
        pure
        returns (uint256)
    {
        return target.mul(d).divCeil(BASE);
    }

    function divFloor(
        uint256 target,
        uint256 d
    )
        internal
        pure
        returns (uint256)
    {
        return target.mul(BASE).div(d);
    }

    function divCeil(
        uint256 target,
        uint256 d
    )
        internal
        pure
        returns (uint256)
    {
        return target.mul(BASE).divCeil(d);
    }
}

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");
    }
}

// Compound
interface Compound {
  function interestRateModel() external view returns (address);
  function reserveFactorMantissa() external view returns (uint256);
  function totalBorrows() external view returns (uint256);
  function totalReserves() external view returns (uint256);

  function supplyRatePerBlock() external view returns (uint);
  function getCash() external view returns (uint256);
}

// Fulcrum
interface Fulcrum {
  function supplyInterestRate() external view returns (uint256);
  function nextSupplyInterestRate(uint256 supplyAmount) external view returns (uint256);
}

interface DyDx {
  struct val {
       uint256 value;
   }

   struct set {
      uint128 borrow;
      uint128 supply;
  }

  function getEarningsRate() external view returns (val memory);
  function getMarketInterestRate(uint256 marketId) external view returns (val memory);
  function getMarketTotalPar(uint256 marketId) external view returns (set memory);
}

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

interface LendingPoolCore  {
  function getReserveCurrentLiquidityRate(address _reserve)
  external
  view
  returns (
      uint256 liquidityRate
  );
  function getReserveInterestRateStrategyAddress(address _reserve) external view returns (address);
  function getReserveTotalBorrows(address _reserve) external view returns (uint256);
  function getReserveTotalBorrowsStable(address _reserve) external view returns (uint256);
  function getReserveTotalBorrowsVariable(address _reserve) external view returns (uint256);
  function getReserveCurrentAverageStableBorrowRate(address _reserve)
     external
     view
     returns (uint256);
  function getReserveAvailableLiquidity(address _reserve) external view returns (uint256);
}

interface IReserveInterestRateStrategy {

    function getBaseVariableBorrowRate() external view returns (uint256);
    function calculateInterestRates(
        address _reserve,
        uint256 _utilizationRate,
        uint256 _totalBorrowsStable,
        uint256 _totalBorrowsVariable,
        uint256 _averageStableBorrowRate)
    external
    view
    returns (uint256 liquidityRate, uint256 stableBorrowRate, uint256 variableBorrowRate);
}

interface InterestRateModel {
  function getSupplyRate(uint cash, uint borrows, uint reserves, uint reserveFactorMantissa) external view returns (uint);
}

contract Structs {
  struct Asset {
    address lendingPool;
    address priceOralce;
    address interestModel;
  }
}

contract IDDEX is Structs {

  function getInterestRates(address token, uint256 extraBorrowAmount)
    external
    view
    returns (uint256 borrowInterestRate, uint256 supplyInterestRate);
  function getIndex(address token)
    external
    view
    returns (uint256 supplyIndex, uint256 borrowIndex);
  function getTotalSupply(address asset)
    external
    view
    returns (uint256 amount);
  function getTotalBorrow(address asset)
    external
    view
    returns (uint256 amount);
  function getAsset(address token)
    external
    view returns (Asset memory asset);
}

interface IDDEXModel {
  function polynomialInterestModel(uint256 borrowRatio) external view returns (uint256);
}

interface ILendF {
  function getSupplyBalance(address account, address token)
    external
    view
    returns (uint256);
  function supplyBalances(address account, address token)
    external
    view
    returns (uint256 principal, uint256 interestIndex);
  function supply(address asset, uint256 amount) external;
  function withdraw(address asset, uint256 amount) external;
  function markets(address asset) external view returns (
    bool isSupported,
    uint256 blockNumber,
    address interestRateModel,
    uint256 totalSupply,
    uint256 supplyRateMantissa,
    uint256 supplyIndex,
    uint256 totalBorrows,
    uint256 borrowRateMantissa,
    uint256 borrowIndex
  );
}

interface ILendFModel {
    function getSupplyRate(address asset, uint cash, uint borrows) external view returns (uint, uint);
}

contract APRWithPoolOracle is Ownable, Structs {
  using SafeMath for uint256;
  using Address for address;

  uint256 DECIMAL = 10 ** 18;

  address public DYDX;
  address public AAVE;
  address public DDEX;
  address public LENDF;

  uint256 public liquidationRatio;
  uint256 public dydxModifier;

  constructor() public {
    DYDX = address(0x1E0447b19BB6EcFdAe1e4AE1694b0C3659614e4e);
    AAVE = address(0x24a42fD28C976A61Df5D00D0599C34c4f90748c8);
    DDEX = address(0x241e82C79452F51fbfc89Fac6d912e021dB1a3B7);
    LENDF = address(0x0eEe3E3828A45f7601D5F54bF49bB01d1A9dF5ea);
    liquidationRatio = 50000000000000000;
    dydxModifier = 20;
  }

  function set_new_AAVE(address _new_AAVE) public onlyOwner {
      AAVE = _new_AAVE;
  }
  function set_new_DDEX(address _new_DDEX) public onlyOwner {
      DDEX = _new_DDEX;
  }
  function set_new_DYDX(address _new_DYDX) public onlyOwner {
      DYDX = _new_DYDX;
  }
  function set_new_LENDF(address _new_LENDF) public onlyOwner {
      LENDF = _new_LENDF;
  }
  function set_new_Ratio(uint256 _new_Ratio) public onlyOwner {
      liquidationRatio = _new_Ratio;
  }
  function set_new_Modifier(uint256 _new_Modifier) public onlyOwner {
      dydxModifier = _new_Modifier;
  }

  function getLENDFAPR(address token) public view returns (uint256) {
    (,,,,uint256 supplyRateMantissa,,,,) = ILendF(LENDF).markets(token);
    return supplyRateMantissa.mul(2102400);
  }

  function getLENDFAPRAdjusted(address token, uint256 supply) public view returns (uint256) {
    if (token == address(0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE)) {
      return 0;
    }
    uint256 totalCash = IERC20(token).balanceOf(LENDF).add(supply);
    (,, address interestRateModel,,,, uint256 totalBorrows,,) = ILendF(LENDF).markets(token);
    if (interestRateModel == address(0)) {
      return 0;
    }
    (, uint256 supplyRateMantissa) = ILendFModel(interestRateModel).getSupplyRate(token, totalCash, totalBorrows);
    return supplyRateMantissa.mul(2102400);
  }

  function getDDEXAPR(address token) public view returns (uint256) {
    if (token == address(0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE)) {
      token = address(0x000000000000000000000000000000000000000E);
    }
    (uint256 supplyIndex,) = IDDEX(DDEX).getIndex(token);
    if (supplyIndex == 0) {
      return 0;
    }
    (,uint256 supplyRate) = IDDEX(DDEX).getInterestRates(token, 0);
    return supplyRate;
  }

  function getDDEXAPRAdjusted(address token, uint256 _supply) public view returns (uint256) {
    if (token == address(0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE)) {
      token = address(0x000000000000000000000000000000000000000E);
    }
    (uint256 supplyIndex,) = IDDEX(DDEX).getIndex(token);
    if (supplyIndex == 0) {
      return 0;
    }
    uint256 supply = IDDEX(DDEX).getTotalSupply(token).add(_supply);
    uint256 borrow = IDDEX(DDEX).getTotalBorrow(token);
    uint256 borrowRatio = borrow.mul(Decimal.one()).div(supply);
    address interestRateModel = IDDEX(DDEX).getAsset(token).interestModel;
    uint256 borrowRate = IDDEXModel(interestRateModel).polynomialInterestModel(borrowRatio);
    uint256 borrowInterest = Decimal.mulCeil(borrow, borrowRate);
    uint256 supplyInterest = Decimal.mulFloor(borrowInterest, Decimal.one().sub(liquidationRatio));
    return Decimal.divFloor(supplyInterest, supply);
  }

  function getCompoundAPR(address token) public view returns (uint256) {
    return Compound(token).supplyRatePerBlock().mul(2102400);
  }

  function getCompoundAPRAdjusted(address token, uint256 _supply) public view returns (uint256) {
    Compound c = Compound(token);
    address model = Compound(token).interestRateModel();
    if (model == address(0)) {
      return c.supplyRatePerBlock().mul(2102400);
    }
    InterestRateModel i = InterestRateModel(model);
    uint256 cashPrior = c.getCash().add(_supply);
    return i.getSupplyRate(cashPrior, c.totalBorrows(), c.totalReserves().add(_supply), c.reserveFactorMantissa()).mul(2102400);
  }

  function getFulcrumAPR(address token) public view returns(uint256) {
    return Fulcrum(token).supplyInterestRate().div(100);
  }

  function getFulcrumAPRAdjusted(address token, uint256 _supply) public view returns(uint256) {
    return Fulcrum(token).nextSupplyInterestRate(_supply).div(100);
  }

  function getDyDxAPR(uint256 marketId) public view returns(uint256) {
    uint256 rate      = DyDx(DYDX).getMarketInterestRate(marketId).value;
    uint256 aprBorrow = rate * 31622400;
    uint256 borrow    = DyDx(DYDX).getMarketTotalPar(marketId).borrow;
    uint256 supply    = DyDx(DYDX).getMarketTotalPar(marketId).supply;
    uint256 usage     = (borrow * DECIMAL) / supply;
    uint256 apr       = (((aprBorrow * usage) / DECIMAL) * DyDx(DYDX).getEarningsRate().value) / DECIMAL;
    return apr;
  }
  
  function getDyDxAPRAdjusted(uint256 marketId, uint256 _supply) public view returns(uint256) {
    uint256 rate      = DyDx(DYDX).getMarketInterestRate(marketId).value;
    // Arbitrary value to offset calculations
    _supply = _supply.mul(dydxModifier);
    uint256 aprBorrow = rate * 31622400;
    uint256 borrow    = DyDx(DYDX).getMarketTotalPar(marketId).borrow;
    uint256 supply    = DyDx(DYDX).getMarketTotalPar(marketId).supply;
    supply = supply.add(_supply);
    uint256 usage     = (borrow * DECIMAL) / supply;
    uint256 apr       = (((aprBorrow * usage) / DECIMAL) * DyDx(DYDX).getEarningsRate().value) / DECIMAL;
    return apr;
  }

  function getAaveCore() public view returns (address) {
    return address(LendingPoolAddressesProvider(AAVE).getLendingPoolCore());
  }

  function getAaveAPR(address token) public view returns (uint256) {
    LendingPoolCore core = LendingPoolCore(LendingPoolAddressesProvider(AAVE).getLendingPoolCore());
    return core.getReserveCurrentLiquidityRate(token).div(1e9);
  }

  function getAaveAPRAdjusted(address token, uint256 _supply) public view returns (uint256) {
    LendingPoolCore core = LendingPoolCore(LendingPoolAddressesProvider(AAVE).getLendingPoolCore());
    IReserveInterestRateStrategy apr = IReserveInterestRateStrategy(core.getReserveInterestRateStrategyAddress(token));
    (uint256 newLiquidityRate,,) = apr.calculateInterestRates(
      token,
      core.getReserveAvailableLiquidity(token).add(_supply),
      core.getReserveTotalBorrowsStable(token),
      core.getReserveTotalBorrowsVariable(token),
      core.getReserveCurrentAverageStableBorrowRate(token)
    );
    return newLiquidityRate.div(1e9);
  }

  // incase of half-way error
  function inCaseTokenGetsStuck(IERC20 _TokenAddress) onlyOwner public {
      uint qty = _TokenAddress.balanceOf(address(this));
      _TokenAddress.transfer(msg.sender, qty);
  }
  // incase of half-way error
  function inCaseETHGetsStuck() onlyOwner public{
      (bool result, ) = msg.sender.call.value(address(this).balance)("");
      require(result, "transfer of ETH failed");
  }
}

Contract Security Audit

Contract ABI

API
[{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"constant":true,"inputs":[],"name":"AAVE","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"DDEX","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"DYDX","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"LENDF","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"dydxModifier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"getAaveAPR","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"_supply","type":"uint256"}],"name":"getAaveAPRAdjusted","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getAaveCore","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"getCompoundAPR","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"_supply","type":"uint256"}],"name":"getCompoundAPRAdjusted","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"getDDEXAPR","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"_supply","type":"uint256"}],"name":"getDDEXAPRAdjusted","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"marketId","type":"uint256"}],"name":"getDyDxAPR","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"marketId","type":"uint256"},{"internalType":"uint256","name":"_supply","type":"uint256"}],"name":"getDyDxAPRAdjusted","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"getFulcrumAPR","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"_supply","type":"uint256"}],"name":"getFulcrumAPRAdjusted","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"getLENDFAPR","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"supply","type":"uint256"}],"name":"getLENDFAPRAdjusted","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"inCaseETHGetsStuck","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"contract IERC20","name":"_TokenAddress","type":"address"}],"name":"inCaseTokenGetsStuck","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"liquidationRatio","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"renounceOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_new_AAVE","type":"address"}],"name":"set_new_AAVE","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_new_DDEX","type":"address"}],"name":"set_new_DDEX","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_new_DYDX","type":"address"}],"name":"set_new_DYDX","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_new_LENDF","type":"address"}],"name":"set_new_LENDF","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_new_Modifier","type":"uint256"}],"name":"set_new_Modifier","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_new_Ratio","type":"uint256"}],"name":"set_new_Ratio","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"}]

6080604052670de0b6b3a76400006001553480156200001d57600080fd5b506200002e6200025960201b60201c565b6000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3731e0447b19bb6ecfdae1e4ae1694b0c3659614e4e600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507324a42fd28c976a61df5d00d0599c34c4f90748c8600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073241e82c79452f51fbfc89fac6d912e021db1a3b7600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550730eee3e3828a45f7601d5f54bf49bb01d1a9df5ea600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555066b1a2bc2ec50000600681905550601460078190555062000261565b600033905090565b61399480620002716000396000f3fe608060405234801561001057600080fd5b50600436106101e55760003560e01c806381d24d8d1161010f578063c043fca2116100a2578063f60a15ed11610071578063f60a15ed146105a4578063f82ce27d146105ae578063fb73c832146105cc578063fcc01c7b146105fc576101e5565b8063c043fca21461051e578063d9dc73991461053c578063ddf1084214610558578063f2fde38b14610588576101e5565b806390ece0de116100de57806390ece0de14610496578063989eaa9c146104b45780639f71b462146104e4578063ae600c4514610502576101e5565b806381d24d8d146103fa57806383deca3d1461042a5780638da5cb5b1461045a5780638f32d59b14610478576101e5565b806348ccda3c11610187578063715018a611610156578063715018a61461038857806373824dae1461039257806376852893146103c2578063812adb06146103de576101e5565b806348ccda3c146102ec5780634eff75d81461030a5780634f5dd9691461033a5780636d5ccd181461036a576101e5565b80632a71abe3116101c35780632a71abe3146102685780632c7a5ae4146102845780632e8d6e18146102a057806344e258b4146102bc576101e5565b80630e775fd5146101ea5780631775765f1461021a578063192a986114610238575b600080fd5b61020460048036036101ff919081019061302d565b61062c565b6040516102119190613728565b60405180910390f35b6102226108ef565b60405161022f9190613728565b60405180910390f35b610252600480360361024d9190810190612fdb565b6108f5565b60405161025f9190613728565b60405180910390f35b610282600480360361027d91908101906131fc565b610a41565b005b61029e60048036036102999190810190612fdb565b610a92565b005b6102ba60048036036102b59190810190613158565b610b1d565b005b6102d660048036036102d19190810190612fdb565b610c83565b6040516102e39190613728565b60405180910390f35b6102f4610d1f565b6040516103019190613554565b60405180910390f35b610324600480360361031f919081019061302d565b610d45565b6040516103319190613728565b60405180910390f35b610354600480360361034f9190810190612fdb565b610deb565b6040516103619190613728565b60405180910390f35b610372610ec2565b60405161037f9190613554565b60405180910390f35b610390610ee8565b005b6103ac60048036036103a7919081019061302d565b610fee565b6040516103b99190613728565b60405180910390f35b6103dc60048036036103d79190810190612fdb565b611431565b005b6103f860048036036103f39190810190612fdb565b6114bc565b005b610414600480360361040f91908101906131fc565b611547565b6040516104219190613728565b60405180910390f35b610444600480360361043f9190810190612fdb565b611870565b6040516104519190613728565b60405180910390f35b61046261190a565b60405161046f9190613554565b60405180910390f35b610480611933565b60405161048d919061364b565b60405180910390f35b61049e611991565b6040516104ab9190613554565b60405180910390f35b6104ce60048036036104c9919081019061302d565b6119b7565b6040516104db9190613728565b60405180910390f35b6104ec611dd4565b6040516104f99190613728565b60405180910390f35b61051c60048036036105179190810190612fdb565b611dda565b005b610526611e65565b6040516105339190613554565b60405180910390f35b610556600480360361055191908101906131fc565b611e8b565b005b610572600480360361056d9190810190612fdb565b611edc565b60405161057f9190613728565b60405180910390f35b6105a2600480360361059d9190810190612fdb565b6120aa565b005b6105ac6120fd565b005b6105b661220a565b6040516105c39190613554565b60405180910390f35b6105e660048036036105e1919081019061302d565b6122b1565b6040516105f39190613728565b60405180910390f35b6106166004803603610611919081019061324e565b6126dd565b6040516106239190613728565b60405180910390f35b600073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561067f57600090506108e9565b600061073e838573ffffffffffffffffffffffffffffffffffffffff166370a08231600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b81526004016106e09190613554565b60206040518083038186803b1580156106f857600080fd5b505afa15801561070c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506107309190810190613225565b612a3390919063ffffffff16565b9050600080600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638e8f294b876040518263ffffffff1660e01b815260040161079e9190613554565b6101206040518083038186803b1580156107b757600080fd5b505afa1580156107cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506107ef9190810190613092565b5050965050505093505050600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561083b57600093505050506108e9565b60008273ffffffffffffffffffffffffffffffffffffffff1663517cf73e8886856040518463ffffffff1660e01b815260040161087a939291906135c1565b604080518083038186803b15801561089157600080fd5b505afa1580156108a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506108c9919081019061328a565b9150506108e26220148082612a8890919063ffffffff16565b9450505050505b92915050565b60065481565b600080600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ed6ff7606040518163ffffffff1660e01b815260040160206040518083038186803b15801561096057600080fd5b505afa158015610974573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506109989190810190613004565b9050610a39633b9aca008273ffffffffffffffffffffffffffffffffffffffff1663c540148e866040518263ffffffff1660e01b81526004016109db9190613554565b60206040518083038186803b1580156109f357600080fd5b505afa158015610a07573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610a2b9190810190613225565b612af890919063ffffffff16565b915050919050565b610a49611933565b610a88576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a7f90613708565b60405180910390fd5b8060068190555050565b610a9a611933565b610ad9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ad090613708565b60405180910390fd5b80600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b610b25611933565b610b64576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b5b90613708565b60405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610b9f9190613554565b60206040518083038186803b158015610bb757600080fd5b505afa158015610bcb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610bef9190810190613225565b90508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401610c2c92919061356f565b602060405180830381600087803b158015610c4657600080fd5b505af1158015610c5a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610c7e9190810190613069565b505050565b6000610d18622014808373ffffffffffffffffffffffffffffffffffffffff1663ae9d70b06040518163ffffffff1660e01b815260040160206040518083038186803b158015610cd257600080fd5b505afa158015610ce6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610d0a9190810190613225565b612a8890919063ffffffff16565b9050919050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610de360648473ffffffffffffffffffffffffffffffffffffffff1663d65a5021856040518263ffffffff1660e01b8152600401610d859190613728565b60206040518083038186803b158015610d9d57600080fd5b505afa158015610db1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610dd59190810190613225565b612af890919063ffffffff16565b905092915050565b600080600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638e8f294b846040518263ffffffff1660e01b8152600401610e499190613554565b6101206040518083038186803b158015610e6257600080fd5b505afa158015610e76573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610e9a9190810190613092565b50505050945050505050610eba6220148082612a8890919063ffffffff16565b915050919050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610ef0611933565b610f2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2690613708565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561103d57600e92505b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b31610db856040518263ffffffff1660e01b815260040161109a9190613554565b604080518083038186803b1580156110b157600080fd5b505afa1580156110c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506110e9919081019061328a565b50905060008114156110ff57600091505061142b565b60006111be84600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166368da10ae886040518263ffffffff1660e01b81526004016111609190613554565b60206040518083038186803b15801561117857600080fd5b505afa15801561118c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506111b09190810190613225565b612a3390919063ffffffff16565b90506000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638538d14e876040518263ffffffff1660e01b815260040161121d9190613554565b60206040518083038186803b15801561123557600080fd5b505afa158015611249573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061126d9190810190613225565b9050600061129d8361128f611280612b42565b85612a8890919063ffffffff16565b612af890919063ffffffff16565b90506000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166330b8b2c6896040518263ffffffff1660e01b81526004016112fc9190613554565b60606040518083038186803b15801561131457600080fd5b505afa158015611328573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061134c9190810190613181565b60400151905060008173ffffffffffffffffffffffffffffffffffffffff166369e8a15f846040518263ffffffff1660e01b815260040161138d9190613728565b60206040518083038186803b1580156113a557600080fd5b505afa1580156113b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506113dd9190810190613225565b905060006113eb8583612b52565b905060006114148261140f600654611401612b42565b612b8990919063ffffffff16565b612bd3565b90506114208188612c01565b985050505050505050505b92915050565b611439611933565b611478576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146f90613708565b60405180910390fd5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6114c4611933565b611503576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114fa90613708565b60405180910390fd5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600080600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fd47eda6846040518263ffffffff1660e01b81526004016115a59190613728565b60206040518083038186803b1580156115bd57600080fd5b505afa1580156115d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506115f591908101906131d3565b60000151905060006301e28500820290506000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cb04a34c866040518263ffffffff1660e01b81526004016116639190613728565b604080518083038186803b15801561167a57600080fd5b505afa15801561168e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506116b291908101906131aa565b600001516fffffffffffffffffffffffffffffffff1690506000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cb04a34c876040518263ffffffff1660e01b81526004016117279190613728565b604080518083038186803b15801561173e57600080fd5b505afa158015611752573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061177691908101906131aa565b602001516fffffffffffffffffffffffffffffffff16905060008160015484028161179d57fe5b0490506000600154600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e55202286040518163ffffffff1660e01b815260040160206040518083038186803b15801561180d57600080fd5b505afa158015611821573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061184591908101906131d3565b600001516001548488028161185657fe5b04028161185f57fe5b049050809650505050505050919050565b600061190360648373ffffffffffffffffffffffffffffffffffffffff166309ec6b6b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156118bd57600080fd5b505afa1580156118d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506118f59190810190613225565b612af890919063ffffffff16565b9050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611975612c38565b73ffffffffffffffffffffffffffffffffffffffff1614905090565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ed6ff7606040518163ffffffff1660e01b815260040160206040518083038186803b158015611a2257600080fd5b505afa158015611a36573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611a5a9190810190613004565b905060008173ffffffffffffffffffffffffffffffffffffffff16636ae14416866040518263ffffffff1660e01b8152600401611a979190613554565b60206040518083038186803b158015611aaf57600080fd5b505afa158015611ac3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611ae79190810190613004565b905060008173ffffffffffffffffffffffffffffffffffffffff166357e37af087611ba3888773ffffffffffffffffffffffffffffffffffffffff1663e24030198c6040518263ffffffff1660e01b8152600401611b459190613554565b60206040518083038186803b158015611b5d57600080fd5b505afa158015611b71573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611b959190810190613225565b612a3390919063ffffffff16565b8673ffffffffffffffffffffffffffffffffffffffff16637f90fec58b6040518263ffffffff1660e01b8152600401611bdc9190613554565b60206040518083038186803b158015611bf457600080fd5b505afa158015611c08573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611c2c9190810190613225565b8773ffffffffffffffffffffffffffffffffffffffff166398bd47378c6040518263ffffffff1660e01b8152600401611c659190613554565b60206040518083038186803b158015611c7d57600080fd5b505afa158015611c91573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611cb59190810190613225565b8873ffffffffffffffffffffffffffffffffffffffff166346bc0f288d6040518263ffffffff1660e01b8152600401611cee9190613554565b60206040518083038186803b158015611d0657600080fd5b505afa158015611d1a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611d3e9190810190613225565b6040518663ffffffff1660e01b8152600401611d5e9594939291906135f8565b60606040518083038186803b158015611d7657600080fd5b505afa158015611d8a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611dae91908101906132c6565b50509050611dc9633b9aca0082612af890919063ffffffff16565b935050505092915050565b60075481565b611de2611933565b611e21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e1890613708565b60405180910390fd5b80600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611e93611933565b611ed2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ec990613708565b60405180910390fd5b8060078190555050565b600073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611f2b57600e91505b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b31610db846040518263ffffffff1660e01b8152600401611f889190613554565b604080518083038186803b158015611f9f57600080fd5b505afa158015611fb3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611fd7919081019061328a565b5090506000811415611fed5760009150506120a5565b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166343239e9b8560006040518363ffffffff1660e01b815260040161204d929190613598565b604080518083038186803b15801561206457600080fd5b505afa158015612078573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061209c919081019061328a565b91505080925050505b919050565b6120b2611933565b6120f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120e890613708565b60405180910390fd5b6120fa81612c40565b50565b612105611933565b612144576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161213b90613708565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff16316040516121819061353f565b60006040518083038185875af1925050503d80600081146121be576040519150601f19603f3d011682016040523d82523d6000602084013e6121c3565b606091505b5050905080612207576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121fe906136c8565b60405180910390fd5b50565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ed6ff7606040518163ffffffff1660e01b815260040160206040518083038186803b15801561227457600080fd5b505afa158015612288573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506122ac9190810190613004565b905090565b60008083905060008473ffffffffffffffffffffffffffffffffffffffff1663f3fdb15a6040518163ffffffff1660e01b815260040160206040518083038186803b1580156122ff57600080fd5b505afa158015612313573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506123379190810190613004565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561240a57612401622014808373ffffffffffffffffffffffffffffffffffffffff1663ae9d70b06040518163ffffffff1660e01b815260040160206040518083038186803b1580156123bb57600080fd5b505afa1580156123cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506123f39190810190613225565b612a8890919063ffffffff16565b925050506126d7565b600081905060006124a1868573ffffffffffffffffffffffffffffffffffffffff16633b1d21a26040518163ffffffff1660e01b815260040160206040518083038186803b15801561245b57600080fd5b505afa15801561246f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506124939190810190613225565b612a3390919063ffffffff16565b90506126d0622014808373ffffffffffffffffffffffffffffffffffffffff1663b8168816848873ffffffffffffffffffffffffffffffffffffffff166347bd37186040518163ffffffff1660e01b815260040160206040518083038186803b15801561250d57600080fd5b505afa158015612521573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506125459190810190613225565b6125d58c8b73ffffffffffffffffffffffffffffffffffffffff16638f840ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561258f57600080fd5b505afa1580156125a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506125c79190810190613225565b612a3390919063ffffffff16565b8a73ffffffffffffffffffffffffffffffffffffffff1663173b99046040518163ffffffff1660e01b815260040160206040518083038186803b15801561261b57600080fd5b505afa15801561262f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506126539190810190613225565b6040518563ffffffff1660e01b81526004016126729493929190613743565b60206040518083038186803b15801561268a57600080fd5b505afa15801561269e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506126c29190810190613225565b612a8890919063ffffffff16565b9450505050505b92915050565b600080600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fd47eda6856040518263ffffffff1660e01b815260040161273b9190613728565b60206040518083038186803b15801561275357600080fd5b505afa158015612767573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061278b91908101906131d3565b6000015190506127a660075484612a8890919063ffffffff16565b925060006301e28500820290506000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cb04a34c876040518263ffffffff1660e01b81526004016128109190613728565b604080518083038186803b15801561282757600080fd5b505afa15801561283b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061285f91908101906131aa565b600001516fffffffffffffffffffffffffffffffff1690506000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cb04a34c886040518263ffffffff1660e01b81526004016128d49190613728565b604080518083038186803b1580156128eb57600080fd5b505afa1580156128ff573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061292391908101906131aa565b602001516fffffffffffffffffffffffffffffffff16905061294e8682612a3390919063ffffffff16565b905060008160015484028161295f57fe5b0490506000600154600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e55202286040518163ffffffff1660e01b815260040160206040518083038186803b1580156129cf57600080fd5b505afa1580156129e3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612a0791908101906131d3565b6000015160015484880281612a1857fe5b040281612a2157fe5b04905080965050505050505092915050565b600080828401905083811015612a7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a75906136a8565b60405180910390fd5b8091505092915050565b600080831415612a9b5760009050612af2565b6000828402905082848281612aac57fe5b0414612aed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ae4906136e8565b60405180910390fd5b809150505b92915050565b6000612b3a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612d6e565b905092915050565b6000670de0b6b3a7640000905090565b6000612b81670de0b6b3a7640000612b738486612a8890919063ffffffff16565b612dcf90919063ffffffff16565b905092915050565b6000612bcb83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612e09565b905092915050565b6000670de0b6b3a7640000612bf18385612a8890919063ffffffff16565b81612bf857fe5b04905092915050565b6000612c3082612c22670de0b6b3a764000086612a8890919063ffffffff16565b612af890919063ffffffff16565b905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612cb0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ca790613688565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008083118290612db5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dac9190613666565b60405180910390fd5b506000838581612dc157fe5b049050809150509392505050565b600080612ddc8484612af8565b90506000838202850390506000811115612dfd576001820192505050612e03565b81925050505b92915050565b6000838311158290612e51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e489190613666565b60405180910390fd5b5060008385039050809150509392505050565b600081359050612e73816138de565b92915050565b600081519050612e88816138de565b92915050565b600081519050612e9d816138f5565b92915050565b600081359050612eb28161390c565b92915050565b600060608284031215612eca57600080fd5b612ed46060613788565b90506000612ee484828501612e79565b6000830152506020612ef884828501612e79565b6020830152506040612f0c84828501612e79565b60408301525092915050565b600060408284031215612f2a57600080fd5b612f346040613788565b90506000612f4484828501612f9c565b6000830152506020612f5884828501612f9c565b60208301525092915050565b600060208284031215612f7657600080fd5b612f806020613788565b90506000612f9084828501612fc6565b60008301525092915050565b600081519050612fab81613923565b92915050565b600081359050612fc08161393a565b92915050565b600081519050612fd58161393a565b92915050565b600060208284031215612fed57600080fd5b6000612ffb84828501612e64565b91505092915050565b60006020828403121561301657600080fd5b600061302484828501612e79565b91505092915050565b6000806040838503121561304057600080fd5b600061304e85828601612e64565b925050602061305f85828601612fb1565b9150509250929050565b60006020828403121561307b57600080fd5b600061308984828501612e8e565b91505092915050565b60008060008060008060008060006101208a8c0312156130b157600080fd5b60006130bf8c828d01612e8e565b99505060206130d08c828d01612fc6565b98505060406130e18c828d01612e79565b97505060606130f28c828d01612fc6565b96505060806131038c828d01612fc6565b95505060a06131148c828d01612fc6565b94505060c06131258c828d01612fc6565b93505060e06131368c828d01612fc6565b9250506101006131488c828d01612fc6565b9150509295985092959850929598565b60006020828403121561316a57600080fd5b600061317884828501612ea3565b91505092915050565b60006060828403121561319357600080fd5b60006131a184828501612eb8565b91505092915050565b6000604082840312156131bc57600080fd5b60006131ca84828501612f18565b91505092915050565b6000602082840312156131e557600080fd5b60006131f384828501612f64565b91505092915050565b60006020828403121561320e57600080fd5b600061321c84828501612fb1565b91505092915050565b60006020828403121561323757600080fd5b600061324584828501612fc6565b91505092915050565b6000806040838503121561326157600080fd5b600061326f85828601612fb1565b925050602061328085828601612fb1565b9150509250929050565b6000806040838503121561329d57600080fd5b60006132ab85828601612fc6565b92505060206132bc85828601612fc6565b9150509250929050565b6000806000606084860312156132db57600080fd5b60006132e986828701612fc6565b93505060206132fa86828701612fc6565b925050604061330b86828701612fc6565b9150509250925092565b61331e81613852565b82525050565b61332d816137dc565b82525050565b61333c816137ee565b82525050565b61334b81613864565b82525050565b600061335c826137b5565b61336681856137cb565b935061337681856020860161389a565b61337f816138cd565b840191505092915050565b60006133976026836137cb565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006133fd601b836137cb565b91507f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006000830152602082019050919050565b600061343d6016836137cb565b91507f7472616e73666572206f6620455448206661696c6564000000000000000000006000830152602082019050919050565b600061347d6021836137cb565b91507f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008301527f77000000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006134e36020836137cb565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b60006135236000836137c0565b9150600082019050919050565b61353981613848565b82525050565b600061354a82613516565b9150819050919050565b60006020820190506135696000830184613324565b92915050565b60006040820190506135846000830185613315565b6135916020830184613530565b9392505050565b60006040820190506135ad6000830185613324565b6135ba6020830184613342565b9392505050565b60006060820190506135d66000830186613324565b6135e36020830185613530565b6135f06040830184613530565b949350505050565b600060a08201905061360d6000830188613324565b61361a6020830187613530565b6136276040830186613530565b6136346060830185613530565b6136416080830184613530565b9695505050505050565b60006020820190506136606000830184613333565b92915050565b600060208201905081810360008301526136808184613351565b905092915050565b600060208201905081810360008301526136a18161338a565b9050919050565b600060208201905081810360008301526136c1816133f0565b9050919050565b600060208201905081810360008301526136e181613430565b9050919050565b6000602082019050818103600083015261370181613470565b9050919050565b60006020820190508181036000830152613721816134d6565b9050919050565b600060208201905061373d6000830184613530565b92915050565b60006080820190506137586000830187613530565b6137656020830186613530565b6137726040830185613530565b61377f6060830184613530565b95945050505050565b6000604051905081810181811067ffffffffffffffff821117156137ab57600080fd5b8060405250919050565b600081519050919050565b600081905092915050565b600082825260208201905092915050565b60006137e782613828565b9050919050565b60008115159050919050565b6000613805826137dc565b9050919050565b60006fffffffffffffffffffffffffffffffff82169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600061385d82613876565b9050919050565b600061386f82613848565b9050919050565b600061388182613888565b9050919050565b600061389382613828565b9050919050565b60005b838110156138b857808201518184015260208101905061389d565b838111156138c7576000848401525b50505050565b6000601f19601f8301169050919050565b6138e7816137dc565b81146138f257600080fd5b50565b6138fe816137ee565b811461390957600080fd5b50565b613915816137fa565b811461392057600080fd5b50565b61392c8161380c565b811461393757600080fd5b50565b61394381613848565b811461394e57600080fd5b5056fea365627a7a723158207d6eb0c13b1371759d2b3686384e1393100033b170d18d10434c7c11808863b06c6578706572696d656e74616cf564736f6c634300050c0040

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101e55760003560e01c806381d24d8d1161010f578063c043fca2116100a2578063f60a15ed11610071578063f60a15ed146105a4578063f82ce27d146105ae578063fb73c832146105cc578063fcc01c7b146105fc576101e5565b8063c043fca21461051e578063d9dc73991461053c578063ddf1084214610558578063f2fde38b14610588576101e5565b806390ece0de116100de57806390ece0de14610496578063989eaa9c146104b45780639f71b462146104e4578063ae600c4514610502576101e5565b806381d24d8d146103fa57806383deca3d1461042a5780638da5cb5b1461045a5780638f32d59b14610478576101e5565b806348ccda3c11610187578063715018a611610156578063715018a61461038857806373824dae1461039257806376852893146103c2578063812adb06146103de576101e5565b806348ccda3c146102ec5780634eff75d81461030a5780634f5dd9691461033a5780636d5ccd181461036a576101e5565b80632a71abe3116101c35780632a71abe3146102685780632c7a5ae4146102845780632e8d6e18146102a057806344e258b4146102bc576101e5565b80630e775fd5146101ea5780631775765f1461021a578063192a986114610238575b600080fd5b61020460048036036101ff919081019061302d565b61062c565b6040516102119190613728565b60405180910390f35b6102226108ef565b60405161022f9190613728565b60405180910390f35b610252600480360361024d9190810190612fdb565b6108f5565b60405161025f9190613728565b60405180910390f35b610282600480360361027d91908101906131fc565b610a41565b005b61029e60048036036102999190810190612fdb565b610a92565b005b6102ba60048036036102b59190810190613158565b610b1d565b005b6102d660048036036102d19190810190612fdb565b610c83565b6040516102e39190613728565b60405180910390f35b6102f4610d1f565b6040516103019190613554565b60405180910390f35b610324600480360361031f919081019061302d565b610d45565b6040516103319190613728565b60405180910390f35b610354600480360361034f9190810190612fdb565b610deb565b6040516103619190613728565b60405180910390f35b610372610ec2565b60405161037f9190613554565b60405180910390f35b610390610ee8565b005b6103ac60048036036103a7919081019061302d565b610fee565b6040516103b99190613728565b60405180910390f35b6103dc60048036036103d79190810190612fdb565b611431565b005b6103f860048036036103f39190810190612fdb565b6114bc565b005b610414600480360361040f91908101906131fc565b611547565b6040516104219190613728565b60405180910390f35b610444600480360361043f9190810190612fdb565b611870565b6040516104519190613728565b60405180910390f35b61046261190a565b60405161046f9190613554565b60405180910390f35b610480611933565b60405161048d919061364b565b60405180910390f35b61049e611991565b6040516104ab9190613554565b60405180910390f35b6104ce60048036036104c9919081019061302d565b6119b7565b6040516104db9190613728565b60405180910390f35b6104ec611dd4565b6040516104f99190613728565b60405180910390f35b61051c60048036036105179190810190612fdb565b611dda565b005b610526611e65565b6040516105339190613554565b60405180910390f35b610556600480360361055191908101906131fc565b611e8b565b005b610572600480360361056d9190810190612fdb565b611edc565b60405161057f9190613728565b60405180910390f35b6105a2600480360361059d9190810190612fdb565b6120aa565b005b6105ac6120fd565b005b6105b661220a565b6040516105c39190613554565b60405180910390f35b6105e660048036036105e1919081019061302d565b6122b1565b6040516105f39190613728565b60405180910390f35b6106166004803603610611919081019061324e565b6126dd565b6040516106239190613728565b60405180910390f35b600073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561067f57600090506108e9565b600061073e838573ffffffffffffffffffffffffffffffffffffffff166370a08231600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b81526004016106e09190613554565b60206040518083038186803b1580156106f857600080fd5b505afa15801561070c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506107309190810190613225565b612a3390919063ffffffff16565b9050600080600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638e8f294b876040518263ffffffff1660e01b815260040161079e9190613554565b6101206040518083038186803b1580156107b757600080fd5b505afa1580156107cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506107ef9190810190613092565b5050965050505093505050600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561083b57600093505050506108e9565b60008273ffffffffffffffffffffffffffffffffffffffff1663517cf73e8886856040518463ffffffff1660e01b815260040161087a939291906135c1565b604080518083038186803b15801561089157600080fd5b505afa1580156108a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506108c9919081019061328a565b9150506108e26220148082612a8890919063ffffffff16565b9450505050505b92915050565b60065481565b600080600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ed6ff7606040518163ffffffff1660e01b815260040160206040518083038186803b15801561096057600080fd5b505afa158015610974573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506109989190810190613004565b9050610a39633b9aca008273ffffffffffffffffffffffffffffffffffffffff1663c540148e866040518263ffffffff1660e01b81526004016109db9190613554565b60206040518083038186803b1580156109f357600080fd5b505afa158015610a07573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610a2b9190810190613225565b612af890919063ffffffff16565b915050919050565b610a49611933565b610a88576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a7f90613708565b60405180910390fd5b8060068190555050565b610a9a611933565b610ad9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ad090613708565b60405180910390fd5b80600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b610b25611933565b610b64576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b5b90613708565b60405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610b9f9190613554565b60206040518083038186803b158015610bb757600080fd5b505afa158015610bcb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610bef9190810190613225565b90508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401610c2c92919061356f565b602060405180830381600087803b158015610c4657600080fd5b505af1158015610c5a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610c7e9190810190613069565b505050565b6000610d18622014808373ffffffffffffffffffffffffffffffffffffffff1663ae9d70b06040518163ffffffff1660e01b815260040160206040518083038186803b158015610cd257600080fd5b505afa158015610ce6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610d0a9190810190613225565b612a8890919063ffffffff16565b9050919050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610de360648473ffffffffffffffffffffffffffffffffffffffff1663d65a5021856040518263ffffffff1660e01b8152600401610d859190613728565b60206040518083038186803b158015610d9d57600080fd5b505afa158015610db1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610dd59190810190613225565b612af890919063ffffffff16565b905092915050565b600080600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638e8f294b846040518263ffffffff1660e01b8152600401610e499190613554565b6101206040518083038186803b158015610e6257600080fd5b505afa158015610e76573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610e9a9190810190613092565b50505050945050505050610eba6220148082612a8890919063ffffffff16565b915050919050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610ef0611933565b610f2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2690613708565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561103d57600e92505b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b31610db856040518263ffffffff1660e01b815260040161109a9190613554565b604080518083038186803b1580156110b157600080fd5b505afa1580156110c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506110e9919081019061328a565b50905060008114156110ff57600091505061142b565b60006111be84600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166368da10ae886040518263ffffffff1660e01b81526004016111609190613554565b60206040518083038186803b15801561117857600080fd5b505afa15801561118c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506111b09190810190613225565b612a3390919063ffffffff16565b90506000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638538d14e876040518263ffffffff1660e01b815260040161121d9190613554565b60206040518083038186803b15801561123557600080fd5b505afa158015611249573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061126d9190810190613225565b9050600061129d8361128f611280612b42565b85612a8890919063ffffffff16565b612af890919063ffffffff16565b90506000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166330b8b2c6896040518263ffffffff1660e01b81526004016112fc9190613554565b60606040518083038186803b15801561131457600080fd5b505afa158015611328573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061134c9190810190613181565b60400151905060008173ffffffffffffffffffffffffffffffffffffffff166369e8a15f846040518263ffffffff1660e01b815260040161138d9190613728565b60206040518083038186803b1580156113a557600080fd5b505afa1580156113b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506113dd9190810190613225565b905060006113eb8583612b52565b905060006114148261140f600654611401612b42565b612b8990919063ffffffff16565b612bd3565b90506114208188612c01565b985050505050505050505b92915050565b611439611933565b611478576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146f90613708565b60405180910390fd5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6114c4611933565b611503576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114fa90613708565b60405180910390fd5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600080600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fd47eda6846040518263ffffffff1660e01b81526004016115a59190613728565b60206040518083038186803b1580156115bd57600080fd5b505afa1580156115d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506115f591908101906131d3565b60000151905060006301e28500820290506000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cb04a34c866040518263ffffffff1660e01b81526004016116639190613728565b604080518083038186803b15801561167a57600080fd5b505afa15801561168e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506116b291908101906131aa565b600001516fffffffffffffffffffffffffffffffff1690506000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cb04a34c876040518263ffffffff1660e01b81526004016117279190613728565b604080518083038186803b15801561173e57600080fd5b505afa158015611752573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061177691908101906131aa565b602001516fffffffffffffffffffffffffffffffff16905060008160015484028161179d57fe5b0490506000600154600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e55202286040518163ffffffff1660e01b815260040160206040518083038186803b15801561180d57600080fd5b505afa158015611821573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061184591908101906131d3565b600001516001548488028161185657fe5b04028161185f57fe5b049050809650505050505050919050565b600061190360648373ffffffffffffffffffffffffffffffffffffffff166309ec6b6b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156118bd57600080fd5b505afa1580156118d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506118f59190810190613225565b612af890919063ffffffff16565b9050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611975612c38565b73ffffffffffffffffffffffffffffffffffffffff1614905090565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ed6ff7606040518163ffffffff1660e01b815260040160206040518083038186803b158015611a2257600080fd5b505afa158015611a36573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611a5a9190810190613004565b905060008173ffffffffffffffffffffffffffffffffffffffff16636ae14416866040518263ffffffff1660e01b8152600401611a979190613554565b60206040518083038186803b158015611aaf57600080fd5b505afa158015611ac3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611ae79190810190613004565b905060008173ffffffffffffffffffffffffffffffffffffffff166357e37af087611ba3888773ffffffffffffffffffffffffffffffffffffffff1663e24030198c6040518263ffffffff1660e01b8152600401611b459190613554565b60206040518083038186803b158015611b5d57600080fd5b505afa158015611b71573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611b959190810190613225565b612a3390919063ffffffff16565b8673ffffffffffffffffffffffffffffffffffffffff16637f90fec58b6040518263ffffffff1660e01b8152600401611bdc9190613554565b60206040518083038186803b158015611bf457600080fd5b505afa158015611c08573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611c2c9190810190613225565b8773ffffffffffffffffffffffffffffffffffffffff166398bd47378c6040518263ffffffff1660e01b8152600401611c659190613554565b60206040518083038186803b158015611c7d57600080fd5b505afa158015611c91573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611cb59190810190613225565b8873ffffffffffffffffffffffffffffffffffffffff166346bc0f288d6040518263ffffffff1660e01b8152600401611cee9190613554565b60206040518083038186803b158015611d0657600080fd5b505afa158015611d1a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611d3e9190810190613225565b6040518663ffffffff1660e01b8152600401611d5e9594939291906135f8565b60606040518083038186803b158015611d7657600080fd5b505afa158015611d8a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611dae91908101906132c6565b50509050611dc9633b9aca0082612af890919063ffffffff16565b935050505092915050565b60075481565b611de2611933565b611e21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e1890613708565b60405180910390fd5b80600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611e93611933565b611ed2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ec990613708565b60405180910390fd5b8060078190555050565b600073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611f2b57600e91505b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b31610db846040518263ffffffff1660e01b8152600401611f889190613554565b604080518083038186803b158015611f9f57600080fd5b505afa158015611fb3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611fd7919081019061328a565b5090506000811415611fed5760009150506120a5565b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166343239e9b8560006040518363ffffffff1660e01b815260040161204d929190613598565b604080518083038186803b15801561206457600080fd5b505afa158015612078573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061209c919081019061328a565b91505080925050505b919050565b6120b2611933565b6120f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120e890613708565b60405180910390fd5b6120fa81612c40565b50565b612105611933565b612144576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161213b90613708565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff16316040516121819061353f565b60006040518083038185875af1925050503d80600081146121be576040519150601f19603f3d011682016040523d82523d6000602084013e6121c3565b606091505b5050905080612207576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121fe906136c8565b60405180910390fd5b50565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ed6ff7606040518163ffffffff1660e01b815260040160206040518083038186803b15801561227457600080fd5b505afa158015612288573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506122ac9190810190613004565b905090565b60008083905060008473ffffffffffffffffffffffffffffffffffffffff1663f3fdb15a6040518163ffffffff1660e01b815260040160206040518083038186803b1580156122ff57600080fd5b505afa158015612313573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506123379190810190613004565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561240a57612401622014808373ffffffffffffffffffffffffffffffffffffffff1663ae9d70b06040518163ffffffff1660e01b815260040160206040518083038186803b1580156123bb57600080fd5b505afa1580156123cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506123f39190810190613225565b612a8890919063ffffffff16565b925050506126d7565b600081905060006124a1868573ffffffffffffffffffffffffffffffffffffffff16633b1d21a26040518163ffffffff1660e01b815260040160206040518083038186803b15801561245b57600080fd5b505afa15801561246f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506124939190810190613225565b612a3390919063ffffffff16565b90506126d0622014808373ffffffffffffffffffffffffffffffffffffffff1663b8168816848873ffffffffffffffffffffffffffffffffffffffff166347bd37186040518163ffffffff1660e01b815260040160206040518083038186803b15801561250d57600080fd5b505afa158015612521573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506125459190810190613225565b6125d58c8b73ffffffffffffffffffffffffffffffffffffffff16638f840ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561258f57600080fd5b505afa1580156125a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506125c79190810190613225565b612a3390919063ffffffff16565b8a73ffffffffffffffffffffffffffffffffffffffff1663173b99046040518163ffffffff1660e01b815260040160206040518083038186803b15801561261b57600080fd5b505afa15801561262f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506126539190810190613225565b6040518563ffffffff1660e01b81526004016126729493929190613743565b60206040518083038186803b15801561268a57600080fd5b505afa15801561269e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506126c29190810190613225565b612a8890919063ffffffff16565b9450505050505b92915050565b600080600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fd47eda6856040518263ffffffff1660e01b815260040161273b9190613728565b60206040518083038186803b15801561275357600080fd5b505afa158015612767573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061278b91908101906131d3565b6000015190506127a660075484612a8890919063ffffffff16565b925060006301e28500820290506000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cb04a34c876040518263ffffffff1660e01b81526004016128109190613728565b604080518083038186803b15801561282757600080fd5b505afa15801561283b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061285f91908101906131aa565b600001516fffffffffffffffffffffffffffffffff1690506000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cb04a34c886040518263ffffffff1660e01b81526004016128d49190613728565b604080518083038186803b1580156128eb57600080fd5b505afa1580156128ff573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061292391908101906131aa565b602001516fffffffffffffffffffffffffffffffff16905061294e8682612a3390919063ffffffff16565b905060008160015484028161295f57fe5b0490506000600154600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e55202286040518163ffffffff1660e01b815260040160206040518083038186803b1580156129cf57600080fd5b505afa1580156129e3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612a0791908101906131d3565b6000015160015484880281612a1857fe5b040281612a2157fe5b04905080965050505050505092915050565b600080828401905083811015612a7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a75906136a8565b60405180910390fd5b8091505092915050565b600080831415612a9b5760009050612af2565b6000828402905082848281612aac57fe5b0414612aed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ae4906136e8565b60405180910390fd5b809150505b92915050565b6000612b3a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612d6e565b905092915050565b6000670de0b6b3a7640000905090565b6000612b81670de0b6b3a7640000612b738486612a8890919063ffffffff16565b612dcf90919063ffffffff16565b905092915050565b6000612bcb83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612e09565b905092915050565b6000670de0b6b3a7640000612bf18385612a8890919063ffffffff16565b81612bf857fe5b04905092915050565b6000612c3082612c22670de0b6b3a764000086612a8890919063ffffffff16565b612af890919063ffffffff16565b905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612cb0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ca790613688565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008083118290612db5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dac9190613666565b60405180910390fd5b506000838581612dc157fe5b049050809150509392505050565b600080612ddc8484612af8565b90506000838202850390506000811115612dfd576001820192505050612e03565b81925050505b92915050565b6000838311158290612e51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e489190613666565b60405180910390fd5b5060008385039050809150509392505050565b600081359050612e73816138de565b92915050565b600081519050612e88816138de565b92915050565b600081519050612e9d816138f5565b92915050565b600081359050612eb28161390c565b92915050565b600060608284031215612eca57600080fd5b612ed46060613788565b90506000612ee484828501612e79565b6000830152506020612ef884828501612e79565b6020830152506040612f0c84828501612e79565b60408301525092915050565b600060408284031215612f2a57600080fd5b612f346040613788565b90506000612f4484828501612f9c565b6000830152506020612f5884828501612f9c565b60208301525092915050565b600060208284031215612f7657600080fd5b612f806020613788565b90506000612f9084828501612fc6565b60008301525092915050565b600081519050612fab81613923565b92915050565b600081359050612fc08161393a565b92915050565b600081519050612fd58161393a565b92915050565b600060208284031215612fed57600080fd5b6000612ffb84828501612e64565b91505092915050565b60006020828403121561301657600080fd5b600061302484828501612e79565b91505092915050565b6000806040838503121561304057600080fd5b600061304e85828601612e64565b925050602061305f85828601612fb1565b9150509250929050565b60006020828403121561307b57600080fd5b600061308984828501612e8e565b91505092915050565b60008060008060008060008060006101208a8c0312156130b157600080fd5b60006130bf8c828d01612e8e565b99505060206130d08c828d01612fc6565b98505060406130e18c828d01612e79565b97505060606130f28c828d01612fc6565b96505060806131038c828d01612fc6565b95505060a06131148c828d01612fc6565b94505060c06131258c828d01612fc6565b93505060e06131368c828d01612fc6565b9250506101006131488c828d01612fc6565b9150509295985092959850929598565b60006020828403121561316a57600080fd5b600061317884828501612ea3565b91505092915050565b60006060828403121561319357600080fd5b60006131a184828501612eb8565b91505092915050565b6000604082840312156131bc57600080fd5b60006131ca84828501612f18565b91505092915050565b6000602082840312156131e557600080fd5b60006131f384828501612f64565b91505092915050565b60006020828403121561320e57600080fd5b600061321c84828501612fb1565b91505092915050565b60006020828403121561323757600080fd5b600061324584828501612fc6565b91505092915050565b6000806040838503121561326157600080fd5b600061326f85828601612fb1565b925050602061328085828601612fb1565b9150509250929050565b6000806040838503121561329d57600080fd5b60006132ab85828601612fc6565b92505060206132bc85828601612fc6565b9150509250929050565b6000806000606084860312156132db57600080fd5b60006132e986828701612fc6565b93505060206132fa86828701612fc6565b925050604061330b86828701612fc6565b9150509250925092565b61331e81613852565b82525050565b61332d816137dc565b82525050565b61333c816137ee565b82525050565b61334b81613864565b82525050565b600061335c826137b5565b61336681856137cb565b935061337681856020860161389a565b61337f816138cd565b840191505092915050565b60006133976026836137cb565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006133fd601b836137cb565b91507f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006000830152602082019050919050565b600061343d6016836137cb565b91507f7472616e73666572206f6620455448206661696c6564000000000000000000006000830152602082019050919050565b600061347d6021836137cb565b91507f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008301527f77000000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006134e36020836137cb565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b60006135236000836137c0565b9150600082019050919050565b61353981613848565b82525050565b600061354a82613516565b9150819050919050565b60006020820190506135696000830184613324565b92915050565b60006040820190506135846000830185613315565b6135916020830184613530565b9392505050565b60006040820190506135ad6000830185613324565b6135ba6020830184613342565b9392505050565b60006060820190506135d66000830186613324565b6135e36020830185613530565b6135f06040830184613530565b949350505050565b600060a08201905061360d6000830188613324565b61361a6020830187613530565b6136276040830186613530565b6136346060830185613530565b6136416080830184613530565b9695505050505050565b60006020820190506136606000830184613333565b92915050565b600060208201905081810360008301526136808184613351565b905092915050565b600060208201905081810360008301526136a18161338a565b9050919050565b600060208201905081810360008301526136c1816133f0565b9050919050565b600060208201905081810360008301526136e181613430565b9050919050565b6000602082019050818103600083015261370181613470565b9050919050565b60006020820190508181036000830152613721816134d6565b9050919050565b600060208201905061373d6000830184613530565b92915050565b60006080820190506137586000830187613530565b6137656020830186613530565b6137726040830185613530565b61377f6060830184613530565b95945050505050565b6000604051905081810181811067ffffffffffffffff821117156137ab57600080fd5b8060405250919050565b600081519050919050565b600081905092915050565b600082825260208201905092915050565b60006137e782613828565b9050919050565b60008115159050919050565b6000613805826137dc565b9050919050565b60006fffffffffffffffffffffffffffffffff82169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600061385d82613876565b9050919050565b600061386f82613848565b9050919050565b600061388182613888565b9050919050565b600061389382613828565b9050919050565b60005b838110156138b857808201518184015260208101905061389d565b838111156138c7576000848401525b50505050565b6000601f19601f8301169050919050565b6138e7816137dc565b81146138f257600080fd5b50565b6138fe816137ee565b811461390957600080fd5b50565b613915816137fa565b811461392057600080fd5b50565b61392c8161380c565b811461393757600080fd5b50565b61394381613848565b811461394e57600080fd5b5056fea365627a7a723158207d6eb0c13b1371759d2b3686384e1393100033b170d18d10434c7c11808863b06c6578706572696d656e74616cf564736f6c634300050c0040

Deployed Bytecode Sourcemap

10339:7093:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10339:7093:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11813:586;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;10586:31;;;:::i;:::-;;;;;;;;;;;;;;;;16089:238;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;11393:104;;;;;;;;;;;;;;;;:::i;:::-;;11203:89;;;;;;;;;;;;;;;;:::i;:::-;;17036:181;;;;;;;;;;;;;;;;:::i;:::-;;13782:138;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;10511:19;;;:::i;:::-;;;;;;;;;;;;;;;;14586:167;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;11616:191;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;10559:20;;;:::i;:::-;;;;;;;;;;;;;;;;1823:140;;;:::i;:::-;;12835:941;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;11110:89;;;;;;;;;;;;;;;;:::i;:::-;;11017;;;;;;;;;;;;;;;;:::i;:::-;;14759:512;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;14449:131;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;1526:79;;;:::i;:::-;;;;;;;;;;;;;;;;1723:94;;;:::i;:::-;;;;;;;;;;;;;;;;10535:19;;;:::i;:::-;;;;;;;;;;;;;;;;16333:666;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;10622:27;;;:::i;:::-;;;;;;;;;;;;;;;;11296:93;;;;;;;;;;;;;;;;:::i;:::-;;10487:19;;;:::i;:::-;;;;;;;;;;;;;;;;11501:109;;;;;;;;;;;;;;;;:::i;:::-;;12405:424;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;1969:109;;;;;;;;;;;;;;;;:::i;:::-;;17252:177;;;:::i;:::-;;15946:137;;;:::i;:::-;;;;;;;;;;;;;;;;13926:517;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;15279:661;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;11813:586;11894:7;11931:42;11914:60;;:5;:60;;;11910:91;;;11992:1;11985:8;;;;11910:91;12007:17;12027:42;12062:6;12034:5;12027:23;;;12051:5;;;;;;;;;;;12027:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12027:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12027:30:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;12027:30:0;;;;;;;;;:34;;:42;;;;:::i;:::-;12007:62;;12080:25;12110:20;12143:5;;;;;;;;;;;12136:21;;;12158:5;12136:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12136:28:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12136:28:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;12136:28:0;;;;;;;;;12076:88;;;;;;;;;;;12204:1;12175:31;;:17;:31;;;12171:62;;;12224:1;12217:8;;;;;;;12171:62;12242:26;12284:17;12272:44;;;12317:5;12324:9;12335:12;12272:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12272:76:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12272:76:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;12272:76:0;;;;;;;;;12239:109;;;12362:31;12385:7;12362:18;:22;;:31;;;;:::i;:::-;12355:38;;;;;;11813:586;;;;;:::o;10586:31::-;;;;:::o;16089:238::-;16145:7;16161:20;16229:4;;;;;;;;;;;16200:53;;;:55;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16200:55:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16200:55:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;16200:55:0;;;;;;;;;16161:95;;16270:51;16317:3;16270:4;:35;;;16306:5;16270:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16270:42:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16270:42:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;16270:42:0;;;;;;;;;:46;;:51;;;;:::i;:::-;16263:58;;;16089:238;;;:::o;11393:104::-;1651:9;:7;:9::i;:::-;1643:54;;;;;;;;;;;;;;;;;;;;;;11481:10;11462:16;:29;;;;11393:104;:::o;11203:89::-;1651:9;:7;:9::i;:::-;1643:54;;;;;;;;;;;;;;;;;;;;;;11277:9;11270:4;;:16;;;;;;;;;;;;;;;;;;11203:89;:::o;17036:181::-;1651:9;:7;:9::i;:::-;1643:54;;;;;;;;;;;;;;;;;;;;;;17114:8;17125:13;:23;;;17157:4;17125:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17125:38:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17125:38:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;17125:38:0;;;;;;;;;17114:49;;17172:13;:22;;;17195:10;17207:3;17172:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17172:39:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17172:39:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;17172:39:0;;;;;;;;;;1708:1;17036:181;:::o;13782:138::-;13842:7;13865:49;13906:7;13874:5;13865:34;;;:36;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13865:36:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;13865:36:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;13865:36:0;;;;;;;;;:40;;:49;;;;:::i;:::-;13858:56;;13782:138;;;:::o;10511:19::-;;;;;;;;;;;;;:::o;14586:167::-;14669:7;14692:55;14743:3;14700:5;14692:37;;;14730:7;14692:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14692:46:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14692:46:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;14692:46:0;;;;;;;;;:50;;:55;;;;:::i;:::-;14685:62;;14586:167;;;;:::o;11616:191::-;11673:7;11694:26;11735:5;;;;;;;;;;;11728:21;;;11750:5;11728:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11728:28:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11728:28:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;11728:28:0;;;;;;;;;11689:67;;;;;;;;;;11770:31;11793:7;11770:18;:22;;:31;;;;:::i;:::-;11763:38;;;11616:191;;;:::o;10559:20::-;;;;;;;;;;;;;:::o;1823:140::-;1651:9;:7;:9::i;:::-;1643:54;;;;;;;;;;;;;;;;;;;;;;1922:1;1885:40;;1906:6;;;;;;;;;;;1885:40;;;;;;;;;;;;1953:1;1936:6;;:19;;;;;;;;;;;;;;;;;;1823:140::o;12835:941::-;12916:7;12953:42;12936:60;;:5;:60;;;12932:142;;;13023:42;13007:59;;12932:142;13081:19;13111:4;;;;;;;;;;;13105:20;;;13126:5;13105:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13105:27:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;13105:27:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;13105:27:0;;;;;;;;;13080:52;;;13158:1;13143:11;:16;13139:47;;;13177:1;13170:8;;;;;13139:47;13192:14;13209:46;13247:7;13215:4;;;;;;;;;;;13209:26;;;13236:5;13209:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13209:33:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;13209:33:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;13209:33:0;;;;;;;;;:37;;:46;;;;:::i;:::-;13192:63;;13262:14;13285:4;;;;;;;;;;;13279:26;;;13306:5;13279:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13279:33:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;13279:33:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;13279:33:0;;;;;;;;;13262:50;;13319:19;13341:37;13371:6;13341:25;13352:13;:11;:13::i;:::-;13341:6;:10;;:25;;;;:::i;:::-;:29;;:37;;;;:::i;:::-;13319:59;;13385:25;13419:4;;;;;;;;;;;13413:20;;;13434:5;13413:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13413:27:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;13413:27:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;13413:27:0;;;;;;;;;:41;;;13385:69;;13461:18;13493:17;13482:53;;;13536:11;13482:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13482:66:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;13482:66:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;13482:66:0;;;;;;;;;13461:87;;13555:22;13580:35;13596:6;13604:10;13580:15;:35::i;:::-;13555:60;;13622:22;13647:69;13664:14;13680:35;13698:16;;13680:13;:11;:13::i;:::-;:17;;:35;;;;:::i;:::-;13647:16;:69::i;:::-;13622:94;;13730:40;13747:14;13763:6;13730:16;:40::i;:::-;13723:47;;;;;;;;;;12835:941;;;;;:::o;11110:89::-;1651:9;:7;:9::i;:::-;1643:54;;;;;;;;;;;;;;;;;;;;;;11184:9;11177:4;;:16;;;;;;;;;;;;;;;;;;11110:89;:::o;11017:::-;1651:9;:7;:9::i;:::-;1643:54;;;;;;;;;;;;;;;;;;;;;;11091:9;11084:4;;:16;;;;;;;;;;;;;;;;;;11017:89;:::o;14759:512::-;14817:7;14833:12;14858:4;;;;;;;;;;;14853:32;;;14886:8;14853:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14853:42:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14853:42:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;14853:42:0;;;;;;;;;:48;;;14833:68;;14908:17;14935:8;14928:4;:15;14908:35;;14950:14;14975:4;;;;;;;;;;;14970:28;;;14999:8;14970:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14970:38:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14970:38:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;14970:38:0;;;;;;;;;:45;;;14950:65;;;;15022:14;15047:4;;;;;;;;;;;15042:28;;;15071:8;15042:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15042:38:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15042:38:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;15042:38:0;;;;;;;;;:45;;;15022:65;;;;15094:13;15135:6;15124:7;;15115:6;:16;15114:27;;;;;;15094:47;;15148:11;15241:7;;15208:4;;;;;;;;;;;15203:26;;;:28;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15203:28:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15203:28:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;15203:28:0;;;;;;;;;:34;;;15192:7;;15183:5;15171:9;:17;15170:29;;;;;;15169:68;15168:80;;;;;;15148:100;;15262:3;15255:10;;;;;;;;14759:512;;;:::o;14449:131::-;14507:7;14530:44;14570:3;14538:5;14530:33;;;:35;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14530:35:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14530:35:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;14530:35:0;;;;;;;;;:39;;:44;;;;:::i;:::-;14523:51;;14449:131;;;:::o;1526:79::-;1564:7;1591:6;;;;;;;;;;;1584:13;;1526:79;:::o;1723:94::-;1763:4;1803:6;;;;;;;;;;;1787:22;;:12;:10;:12::i;:::-;:22;;;1780:29;;1723:94;:::o;10535:19::-;;;;;;;;;;;;;:::o;16333:666::-;16414:7;16430:20;16498:4;;;;;;;;;;;16469:53;;;:55;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16469:55:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16469:55:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;16469:55:0;;;;;;;;;16430:95;;16532:32;16596:4;:42;;;16639:5;16596:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16596:49:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16596:49:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;16596:49:0;;;;;;;;;16532:114;;16654:24;16684:3;:26;;;16719:5;16733:53;16778:7;16733:4;:33;;;16767:5;16733:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16733:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16733:40:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;16733:40:0;;;;;;;;;:44;;:53;;;;:::i;:::-;16795:4;:33;;;16829:5;16795:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16795:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16795:40:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;16795:40:0;;;;;;;;;16844:4;:35;;;16880:5;16844:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16844:42:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16844:42:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;16844:42:0;;;;;;;;;16895:4;:45;;;16941:5;16895:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16895:52:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16895:52:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;16895:52:0;;;;;;;;;16684:270;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16684:270:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16684:270:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;16684:270:0;;;;;;;;;16653:301;;;;16968:25;16989:3;16968:16;:20;;:25;;;;:::i;:::-;16961:32;;;;;16333:666;;;;:::o;10622:27::-;;;;:::o;11296:93::-;1651:9;:7;:9::i;:::-;1643:54;;;;;;;;;;;;;;;;;;;;;;11373:10;11365:5;;:18;;;;;;;;;;;;;;;;;;11296:93;:::o;10487:19::-;;;;;;;;;;;;;:::o;11501:109::-;1651:9;:7;:9::i;:::-;1643:54;;;;;;;;;;;;;;;;;;;;;;11591:13;11576:12;:28;;;;11501:109;:::o;12405:424::-;12461:7;12498:42;12481:60;;:5;:60;;;12477:142;;;12568:42;12552:59;;12477:142;12626:19;12656:4;;;;;;;;;;;12650:20;;;12671:5;12650:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12650:27:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12650:27:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;12650:27:0;;;;;;;;;12625:52;;;12703:1;12688:11;:16;12684:47;;;12722:1;12715:8;;;;;12684:47;12739:18;12767:4;;;;;;;;;;;12761:28;;;12790:5;12797:1;12761:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12761:38:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12761:38:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;12761:38:0;;;;;;;;;12737:62;;;12813:10;12806:17;;;;12405:424;;;;:::o;1969:109::-;1651:9;:7;:9::i;:::-;1643:54;;;;;;;;;;;;;;;;;;;;;;2042:28;2061:8;2042:18;:28::i;:::-;1969:109;:::o;17252:177::-;1651:9;:7;:9::i;:::-;1643:54;;;;;;;;;;;;;;;;;;;;;;17308:11;17325:10;:15;;17355:4;17347:21;;;17325:48;;;;;;;;;;;;;;;;;;;;;;;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;;17307:66:0;;;17390:6;17382:41;;;;;;;;;;;;;;;;;;;;;;1708:1;17252:177::o;15946:137::-;15990:7;16050:4;;;;;;;;;;;16021:53;;;:55;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16021:55:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16021:55:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;16021:55:0;;;;;;;;;16006:71;;15946:137;:::o;13926:517::-;14011:7;14027:10;14049:5;14027:28;;14062:13;14087:5;14078:33;;;:35;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14078:35:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14078:35:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;14078:35:0;;;;;;;;;14062:51;;14141:1;14124:19;;:5;:19;;;14120:84;;;14161:35;14188:7;14161:1;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14161:22:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14161:22:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;14161:22:0;;;;;;;;;:26;;:35;;;;:::i;:::-;14154:42;;;;;;14120:84;14210:19;14250:5;14210:46;;14263:17;14283:24;14299:7;14283:1;:9;;;:11;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14283:11:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14283:11:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;14283:11:0;;;;;;;;;:15;;:24;;;;:::i;:::-;14263:44;;14321:116;14429:7;14321:1;:15;;;14337:9;14348:1;:14;;;:16;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14348:16:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14348:16:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;14348:16:0;;;;;;;;;14366:30;14388:7;14366:1;:15;;;:17;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14366:17:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14366:17:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;14366:17:0;;;;;;;;;:21;;:30;;;;:::i;:::-;14398:1;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14398:25:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14398:25:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;14398:25:0;;;;;;;;;14321:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14321:103:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14321:103:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;14321:103:0;;;;;;;;;:107;;:116;;;;:::i;:::-;14314:123;;;;;;13926:517;;;;;:::o;15279:661::-;15362:7;15378:12;15403:4;;;;;;;;;;;15398:32;;;15431:8;15398:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15398:42:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15398:42:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;15398:42:0;;;;;;;;;:48;;;15378:68;;15510:25;15522:12;;15510:7;:11;;:25;;;;:::i;:::-;15500:35;;15542:17;15569:8;15562:4;:15;15542:35;;15584:14;15609:4;;;;;;;;;;;15604:28;;;15633:8;15604:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15604:38:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15604:38:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;15604:38:0;;;;;;;;;:45;;;15584:65;;;;15656:14;15681:4;;;;;;;;;;;15676:28;;;15705:8;15676:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15676:38:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15676:38:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;15676:38:0;;;;;;;;;:45;;;15656:65;;;;15737:19;15748:7;15737:6;:10;;:19;;;;:::i;:::-;15728:28;;15763:13;15804:6;15793:7;;15784:6;:16;15783:27;;;;;;15763:47;;15817:11;15910:7;;15877:4;;;;;;;;;;;15872:26;;;:28;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15872:28:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15872:28:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;15872:28:0;;;;;;;;;:34;;;15861:7;;15852:5;15840:9;:17;15839:29;;;;;;15838:68;15837:80;;;;;;15817:100;;15931:3;15924:10;;;;;;;;15279:661;;;;:::o;2344:181::-;2402:7;2422:9;2438:1;2434;:5;2422:17;;2463:1;2458;:6;;2450:46;;;;;;;;;;;;;;;;;;;;;;2516:1;2509:8;;;2344:181;;;;:::o;2871:250::-;2929:7;2958:1;2953;:6;2949:47;;;2983:1;2976:8;;;;2949:47;3008:9;3024:1;3020;:5;3008:17;;3053:1;3048;3044;:5;;;;;;:10;3036:56;;;;;;;;;;;;;;;;;;;;;;3112:1;3105:8;;;2871:250;;;;;:::o;3127:132::-;3185:7;3212:39;3216:1;3219;3212:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;3205:46;;3127:132;;;;:::o;4219:109::-;4284:7;4204:6;4309:11;;4219:109;:::o;4677:186::-;4796:7;4828:27;4204:6;4828:13;4839:1;4828:6;:10;;:13;;;;:::i;:::-;:21;;:27;;;;:::i;:::-;4821:34;;4677:186;;;;:::o;2531:136::-;2589:7;2616:43;2620:1;2623;2616:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2609:50;;2531:136;;;;:::o;4489:180::-;4609:7;4204:6;4641:13;4652:1;4641:6;:10;;:13;;;;:::i;:::-;:20;;;;;;4634:27;;4489:180;;;;:::o;4871:183::-;4991:7;5023:23;5044:1;5023:16;4204:6;5023;:10;;:16;;;;:::i;:::-;:20;;:23;;;;:::i;:::-;5016:30;;4871:183;;;;:::o;908:98::-;953:15;988:10;981:17;;908:98;:::o;2084:229::-;2178:1;2158:22;;:8;:22;;;;2150:73;;;;;;;;;;;;;;;;;;;;;;2268:8;2239:38;;2260:6;;;;;;;;;;;2239:38;;;;;;;;;;;;2297:8;2288:6;;:17;;;;;;;;;;;;;;;;;;2084:229;:::o;3265:191::-;3351:7;3383:1;3379;:5;3386:12;3371:28;;;;;;;;;;;;;;;;;;;;;;;;;3410:9;3426:1;3422;:5;;;;;;3410:17;;3447:1;3440:8;;;3265:191;;;;;:::o;3462:345::-;3576:7;3601:16;3620:9;3624:1;3627;3620:3;:9::i;:::-;3601:28;;3640:17;3675:1;3664:8;:12;3660:1;:16;3640:36;;3703:1;3691:9;:13;3687:113;;;3739:1;3728:8;:12;3721:19;;;;;;3687:113;3780:8;3773:15;;;;3462:345;;;;;:::o;2673:192::-;2759:7;2792:1;2787;:6;;2795:12;2779:29;;;;;;;;;;;;;;;;;;;;;;;;;2819:9;2835:1;2831;:5;2819:17;;2856:1;2849:8;;;2673:192;;;;;:::o;5:130:-1:-;;85:6;72:20;63:29;;97:33;124:5;97:33;;;57:78;;;;;142:134;;226:6;220:13;211:22;;238:33;265:5;238:33;;;205:71;;;;;283:128;;364:6;358:13;349:22;;376:30;400:5;376:30;;;343:68;;;;;418:156;;511:6;498:20;489:29;;523:46;563:5;523:46;;;483:91;;;;;608:674;;730:4;718:9;713:3;709:19;705:30;702:2;;;748:1;745;738:12;702:2;766:20;781:4;766:20;;;757:29;;843:1;874:60;930:3;921:6;910:9;906:22;874:60;;;868:3;861:5;857:15;850:85;796:150;1003:2;1036:60;1092:3;1083:6;1072:9;1068:22;1036:60;;;1029:4;1022:5;1018:16;1011:86;956:152;1167:2;1200:60;1256:3;1247:6;1236:9;1232:22;1200:60;;;1193:4;1186:5;1182:16;1175:86;1118:154;696:586;;;;;1311:498;;1431:4;1419:9;1414:3;1410:19;1406:30;1403:2;;;1449:1;1446;1439:12;1403:2;1467:20;1482:4;1467:20;;;1458:29;;1539:1;1570:60;1626:3;1617:6;1606:9;1602:22;1570:60;;;1564:3;1557:5;1553:15;1546:85;1497:145;1694:2;1727:60;1783:3;1774:6;1763:9;1759:22;1727:60;;;1720:4;1713:5;1709:16;1702:86;1652:147;1397:412;;;;;1838:340;;1958:4;1946:9;1941:3;1937:19;1933:30;1930:2;;;1976:1;1973;1966:12;1930:2;1994:20;2009:4;1994:20;;;1985:29;;2065:1;2096:60;2152:3;2143:6;2132:9;2128:22;2096:60;;;2090:3;2083:5;2079:15;2072:85;2024:144;1924:254;;;;;2185:134;;2269:6;2263:13;2254:22;;2281:33;2308:5;2281:33;;;2248:71;;;;;2326:130;;2406:6;2393:20;2384:29;;2418:33;2445:5;2418:33;;;2378:78;;;;;2463:134;;2547:6;2541:13;2532:22;;2559:33;2586:5;2559:33;;;2526:71;;;;;2604:241;;2708:2;2696:9;2687:7;2683:23;2679:32;2676:2;;;2724:1;2721;2714:12;2676:2;2759:1;2776:53;2821:7;2812:6;2801:9;2797:22;2776:53;;;2766:63;;2738:97;2670:175;;;;;2852:263;;2967:2;2955:9;2946:7;2942:23;2938:32;2935:2;;;2983:1;2980;2973:12;2935:2;3018:1;3035:64;3091:7;3082:6;3071:9;3067:22;3035:64;;;3025:74;;2997:108;2929:186;;;;;3122:366;;;3243:2;3231:9;3222:7;3218:23;3214:32;3211:2;;;3259:1;3256;3249:12;3211:2;3294:1;3311:53;3356:7;3347:6;3336:9;3332:22;3311:53;;;3301:63;;3273:97;3401:2;3419:53;3464:7;3455:6;3444:9;3440:22;3419:53;;;3409:63;;3380:98;3205:283;;;;;;3495:257;;3607:2;3595:9;3586:7;3582:23;3578:32;3575:2;;;3623:1;3620;3613:12;3575:2;3658:1;3675:61;3728:7;3719:6;3708:9;3704:22;3675:61;;;3665:71;;3637:105;3569:183;;;;;3759:1351;;;;;;;;;;4007:3;3995:9;3986:7;3982:23;3978:33;3975:2;;;4024:1;4021;4014:12;3975:2;4059:1;4076:61;4129:7;4120:6;4109:9;4105:22;4076:61;;;4066:71;;4038:105;4174:2;4192:64;4248:7;4239:6;4228:9;4224:22;4192:64;;;4182:74;;4153:109;4293:2;4311:64;4367:7;4358:6;4347:9;4343:22;4311:64;;;4301:74;;4272:109;4412:2;4430:64;4486:7;4477:6;4466:9;4462:22;4430:64;;;4420:74;;4391:109;4531:3;4550:64;4606:7;4597:6;4586:9;4582:22;4550:64;;;4540:74;;4510:110;4651:3;4670:64;4726:7;4717:6;4706:9;4702:22;4670:64;;;4660:74;;4630:110;4771:3;4790:64;4846:7;4837:6;4826:9;4822:22;4790:64;;;4780:74;;4750:110;4891:3;4910:64;4966:7;4957:6;4946:9;4942:22;4910:64;;;4900:74;;4870:110;5011:3;5030:64;5086:7;5077:6;5066:9;5062:22;5030:64;;;5020:74;;4990:110;3969:1141;;;;;;;;;;;;5117:267;;5234:2;5222:9;5213:7;5209:23;5205:32;5202:2;;;5250:1;5247;5240:12;5202:2;5285:1;5302:66;5360:7;5351:6;5340:9;5336:22;5302:66;;;5292:76;;5264:110;5196:188;;;;;5391:307;;5528:2;5516:9;5507:7;5503:23;5499:32;5496:2;;;5544:1;5541;5534:12;5496:2;5579:1;5596:86;5674:7;5665:6;5654:9;5650:22;5596:86;;;5586:96;;5558:130;5490:208;;;;;5705:303;;5840:2;5828:9;5819:7;5815:23;5811:32;5808:2;;;5856:1;5853;5846:12;5808:2;5891:1;5908:84;5984:7;5975:6;5964:9;5960:22;5908:84;;;5898:94;;5870:128;5802:206;;;;;6015:303;;6150:2;6138:9;6129:7;6125:23;6121:32;6118:2;;;6166:1;6163;6156:12;6118:2;6201:1;6218:84;6294:7;6285:6;6274:9;6270:22;6218:84;;;6208:94;;6180:128;6112:206;;;;;6325:241;;6429:2;6417:9;6408:7;6404:23;6400:32;6397:2;;;6445:1;6442;6435:12;6397:2;6480:1;6497:53;6542:7;6533:6;6522:9;6518:22;6497:53;;;6487:63;;6459:97;6391:175;;;;;6573:263;;6688:2;6676:9;6667:7;6663:23;6659:32;6656:2;;;6704:1;6701;6694:12;6656:2;6739:1;6756:64;6812:7;6803:6;6792:9;6788:22;6756:64;;;6746:74;;6718:108;6650:186;;;;;6843:366;;;6964:2;6952:9;6943:7;6939:23;6935:32;6932:2;;;6980:1;6977;6970:12;6932:2;7015:1;7032:53;7077:7;7068:6;7057:9;7053:22;7032:53;;;7022:63;;6994:97;7122:2;7140:53;7185:7;7176:6;7165:9;7161:22;7140:53;;;7130:63;;7101:98;6926:283;;;;;;7216:399;;;7348:2;7336:9;7327:7;7323:23;7319:32;7316:2;;;7364:1;7361;7354:12;7316:2;7399:1;7416:64;7472:7;7463:6;7452:9;7448:22;7416:64;;;7406:74;;7378:108;7517:2;7535:64;7591:7;7582:6;7571:9;7567:22;7535:64;;;7525:74;;7496:109;7310:305;;;;;;7622:535;;;;7771:2;7759:9;7750:7;7746:23;7742:32;7739:2;;;7787:1;7784;7777:12;7739:2;7822:1;7839:64;7895:7;7886:6;7875:9;7871:22;7839:64;;;7829:74;;7801:108;7940:2;7958:64;8014:7;8005:6;7994:9;7990:22;7958:64;;;7948:74;;7919:109;8059:2;8077:64;8133:7;8124:6;8113:9;8109:22;8077:64;;;8067:74;;8038:109;7733:424;;;;;;8164:142;8255:45;8294:5;8255:45;;;8250:3;8243:58;8237:69;;;8313:113;8396:24;8414:5;8396:24;;;8391:3;8384:37;8378:48;;;8433:104;8510:21;8525:5;8510:21;;;8505:3;8498:34;8492:45;;;8544:142;8635:45;8674:5;8635:45;;;8630:3;8623:58;8617:69;;;8693:347;;8805:39;8838:5;8805:39;;;8856:71;8920:6;8915:3;8856:71;;;8849:78;;8932:52;8977:6;8972:3;8965:4;8958:5;8954:16;8932:52;;;9005:29;9027:6;9005:29;;;9000:3;8996:39;8989:46;;8785:255;;;;;;9048:465;;9208:67;9272:2;9267:3;9208:67;;;9201:74;;9308:66;9304:1;9299:3;9295:11;9288:87;9409:66;9404:2;9399:3;9395:12;9388:88;9504:2;9499:3;9495:12;9488:19;;9194:319;;;;9522:364;;9682:67;9746:2;9741:3;9682:67;;;9675:74;;9782:66;9778:1;9773:3;9769:11;9762:87;9877:2;9872:3;9868:12;9861:19;;9668:218;;;;9895:364;;10055:67;10119:2;10114:3;10055:67;;;10048:74;;10155:66;10151:1;10146:3;10142:11;10135:87;10250:2;10245:3;10241:12;10234:19;;10041:218;;;;10268:465;;10428:67;10492:2;10487:3;10428:67;;;10421:74;;10528:66;10524:1;10519:3;10515:11;10508:87;10629:66;10624:2;10619:3;10615:12;10608:88;10724:2;10719:3;10715:12;10708:19;;10414:319;;;;10742:364;;10902:67;10966:2;10961:3;10902:67;;;10895:74;;11002:66;10998:1;10993:3;10989:11;10982:87;11097:2;11092:3;11088:12;11081:19;;10888:218;;;;11115:296;;11292:83;11373:1;11368:3;11292:83;;;11285:90;;11403:1;11398:3;11394:11;11387:18;;11278:133;;;;11419:113;11502:24;11520:5;11502:24;;;11497:3;11490:37;11484:48;;;11539:370;;11737:147;11880:3;11737:147;;;11730:154;;11901:3;11894:10;;11718:191;;;;11916:213;;12034:2;12023:9;12019:18;12011:26;;12048:71;12116:1;12105:9;12101:17;12092:6;12048:71;;;12005:124;;;;;12136:340;;12290:2;12279:9;12275:18;12267:26;;12304:79;12380:1;12369:9;12365:17;12356:6;12304:79;;;12394:72;12462:2;12451:9;12447:18;12438:6;12394:72;;;12261:215;;;;;;12483:340;;12637:2;12626:9;12622:18;12614:26;;12651:71;12719:1;12708:9;12704:17;12695:6;12651:71;;;12733:80;12809:2;12798:9;12794:18;12785:6;12733:80;;;12608:215;;;;;;12830:435;;13004:2;12993:9;12989:18;12981:26;;13018:71;13086:1;13075:9;13071:17;13062:6;13018:71;;;13100:72;13168:2;13157:9;13153:18;13144:6;13100:72;;;13183;13251:2;13240:9;13236:18;13227:6;13183:72;;;12975:290;;;;;;;13272:659;;13502:3;13491:9;13487:19;13479:27;;13517:71;13585:1;13574:9;13570:17;13561:6;13517:71;;;13599:72;13667:2;13656:9;13652:18;13643:6;13599:72;;;13682;13750:2;13739:9;13735:18;13726:6;13682:72;;;13765;13833:2;13822:9;13818:18;13809:6;13765:72;;;13848:73;13916:3;13905:9;13901:19;13892:6;13848:73;;;13473:458;;;;;;;;;13938:201;;14050:2;14039:9;14035:18;14027:26;;14064:65;14126:1;14115:9;14111:17;14102:6;14064:65;;;14021:118;;;;;14146:301;;14284:2;14273:9;14269:18;14261:26;;14334:9;14328:4;14324:20;14320:1;14309:9;14305:17;14298:47;14359:78;14432:4;14423:6;14359:78;;;14351:86;;14255:192;;;;;14454:407;;14645:2;14634:9;14630:18;14622:26;;14695:9;14689:4;14685:20;14681:1;14670:9;14666:17;14659:47;14720:131;14846:4;14720:131;;;14712:139;;14616:245;;;;14868:407;;15059:2;15048:9;15044:18;15036:26;;15109:9;15103:4;15099:20;15095:1;15084:9;15080:17;15073:47;15134:131;15260:4;15134:131;;;15126:139;;15030:245;;;;15282:407;;15473:2;15462:9;15458:18;15450:26;;15523:9;15517:4;15513:20;15509:1;15498:9;15494:17;15487:47;15548:131;15674:4;15548:131;;;15540:139;;15444:245;;;;15696:407;;15887:2;15876:9;15872:18;15864:26;;15937:9;15931:4;15927:20;15923:1;15912:9;15908:17;15901:47;15962:131;16088:4;15962:131;;;15954:139;;15858:245;;;;16110:407;;16301:2;16290:9;16286:18;16278:26;;16351:9;16345:4;16341:20;16337:1;16326:9;16322:17;16315:47;16376:131;16502:4;16376:131;;;16368:139;;16272:245;;;;16524:213;;16642:2;16631:9;16627:18;16619:26;;16656:71;16724:1;16713:9;16709:17;16700:6;16656:71;;;16613:124;;;;;16744:547;;16946:3;16935:9;16931:19;16923:27;;16961:71;17029:1;17018:9;17014:17;17005:6;16961:71;;;17043:72;17111:2;17100:9;17096:18;17087:6;17043:72;;;17126;17194:2;17183:9;17179:18;17170:6;17126:72;;;17209;17277:2;17266:9;17262:18;17253:6;17209:72;;;16917:374;;;;;;;;17298:256;;17360:2;17354:9;17344:19;;17398:4;17390:6;17386:17;17497:6;17485:10;17482:22;17461:18;17449:10;17446:34;17443:62;17440:2;;;17518:1;17515;17508:12;17440:2;17538:10;17534:2;17527:22;17338:216;;;;;17561:122;;17655:5;17649:12;17639:22;;17620:63;;;;17691:144;;17826:3;17811:18;;17804:31;;;;;17844:163;;17959:6;17954:3;17947:19;17996:4;17991:3;17987:14;17972:29;;17940:67;;;;;18015:91;;18077:24;18095:5;18077:24;;;18066:35;;18060:46;;;;18113:85;;18186:5;18179:13;18172:21;18161:32;;18155:43;;;;18205:104;;18280:24;18298:5;18280:24;;;18269:35;;18263:46;;;;18316:113;;18389:34;18382:5;18378:46;18367:57;;18361:68;;;;18436:121;;18509:42;18502:5;18498:54;18487:65;;18481:76;;;;18564:72;;18626:5;18615:16;;18609:27;;;;18643:129;;18730:37;18761:5;18730:37;;;18717:50;;18711:61;;;;18779:116;;18866:24;18884:5;18866:24;;;18853:37;;18847:48;;;;18902:121;;18981:37;19012:5;18981:37;;;18968:50;;18962:61;;;;19030:108;;19109:24;19127:5;19109:24;;;19096:37;;19090:48;;;;19146:268;19211:1;19218:101;19232:6;19229:1;19226:13;19218:101;;;19308:1;19303:3;19299:11;19293:18;19289:1;19284:3;19280:11;19273:39;19254:2;19251:1;19247:10;19242:15;;19218:101;;;19334:6;19331:1;19328:13;19325:2;;;19399:1;19390:6;19385:3;19381:16;19374:27;19325:2;19195:219;;;;;19422:97;;19510:2;19506:7;19501:2;19494:5;19490:14;19486:28;19476:38;;19470:49;;;;19527:117;19596:24;19614:5;19596:24;;;19589:5;19586:35;19576:2;;19635:1;19632;19625:12;19576:2;19570:74;;19651:111;19717:21;19732:5;19717:21;;;19710:5;19707:32;19697:2;;19753:1;19750;19743:12;19697:2;19691:71;;19769:143;19851:37;19882:5;19851:37;;;19844:5;19841:48;19831:2;;19903:1;19900;19893:12;19831:2;19825:87;;19919:117;19988:24;20006:5;19988:24;;;19981:5;19978:35;19968:2;;20027:1;20024;20017:12;19968:2;19962:74;;20043:117;20112:24;20130:5;20112:24;;;20105:5;20102:35;20092:2;;20151:1;20148;20141:12;20092:2;20086:74;

Swarm Source

bzzr://7d6eb0c13b1371759d2b3686384e1393100033b170d18d10434c7c11808863b0

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

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.