Contract 0x5d72e1b68a5043c99d700d0928f0a922963f186e

Txn Hash Method
Block
From
To
Value [Txn Fee]
0xa0551aedf5a32d2751cf08c6b5eeca03b5cc8ffc988d4e2707609c077810f1f80x6080604072051142021-11-20 18:43:51227 days 8 hrs ago0xa9061100d29c3c562a2e2421eb035741c1b42137 IN  Create: ConnectV2BenqiIncentivesAvalanche0 AVAX0.06255582333
[ Download CSV Export 
Parent Txn Hash Block From To Value
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
ConnectV2BenqiIncentivesAvalanche

Compiler Version
v0.7.6+commit.7338295f

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at snowtrace.io on 2021-11-20
*/

// File contracts/avalanche/common/interfaces.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.7.0;

interface TokenInterface {
    function approve(address, uint256) external;
    function transfer(address, uint) external;
    function transferFrom(address, address, uint) external;
    function deposit() external payable;
    function withdraw(uint) external;
    function balanceOf(address) external view returns (uint);
    function decimals() external view returns (uint);
}

interface MemoryInterface {
    function getUint(uint id) external returns (uint num);
    function setUint(uint id, uint val) external;
}

interface AccountInterface {
    function enable(address) external;
    function disable(address) external;
    function isAuth(address) external view returns (bool);
}


// File contracts/avalanche/common/stores.sol

pragma solidity ^0.7.0;

abstract contract Stores {

  /**
   * @dev Return avax address
   */
  address constant internal avaxAddr = 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE;

  /**
   * @dev Return Wrapped AVAX address
   */
  address constant internal wavaxAddr = 0xB31f66AA3C1e785363F0875A1B74E27b85FD66c7;

  /**
   * @dev Return memory variable address
   */
  MemoryInterface constant internal instaMemory = MemoryInterface(0x3254Ce8f5b1c82431B8f21Df01918342215825C2);

  /**
   * @dev Get Uint value from InstaMemory Contract.
   */
  function getUint(uint getId, uint val) internal returns (uint returnVal) {
    returnVal = getId == 0 ? val : instaMemory.getUint(getId);
  }

  /**
  * @dev Set Uint value in InstaMemory Contract.
  */
  function setUint(uint setId, uint val) virtual internal {
    if (setId != 0) instaMemory.setUint(setId, val);
  }

}


// File @openzeppelin/contracts/math/[email protected]

pragma solidity >=0.6.0 <0.8.0;

/**
 * @dev Wrappers over Solidity's arithmetic operations with added overflow
 * checks.
 *
 * Arithmetic operations in Solidity wrap on overflow. This can easily result
 * in bugs, because programmers usually assume that an overflow raises an
 * error, which is the standard behavior in high level programming languages.
 * `SafeMath` restores this intuition by reverting the transaction when an
 * operation overflows.
 *
 * Using this library instead of the unchecked operations eliminates an entire
 * class of bugs, so it's recommended to use it always.
 */
library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        uint256 c = a + b;
        if (c < a) return (false, 0);
        return (true, c);
    }

    /**
     * @dev Returns the substraction of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        if (b > a) return (false, 0);
        return (true, a - b);
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
        if (a == 0) return (true, 0);
        uint256 c = a * b;
        if (c / a != b) return (false, 0);
        return (true, c);
    }

    /**
     * @dev Returns the division of two unsigned integers, with a division by zero flag.
     *
     * _Available since v3.4._
     */
    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        if (b == 0) return (false, 0);
        return (true, a / b);
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag.
     *
     * _Available since v3.4._
     */
    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        if (b == 0) return (false, 0);
        return (true, a % b);
    }

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

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

    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     *
     * - Multiplication cannot overflow.
     */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) return 0;
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }

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

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

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
     * overflow (when the result is negative).
     *
     * CAUTION: This function is deprecated because it requires allocating memory for the error
     * message unnecessarily. For custom revert reasons use {trySub}.
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        return a - b;
    }

    /**
     * @dev Returns the integer division of two unsigned integers, reverting with custom message on
     * division by zero. The result is rounded towards zero.
     *
     * CAUTION: This function is deprecated because it requires allocating memory for the error
     * message unnecessarily. For custom revert reasons use {tryDiv}.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        return a / b;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * reverting with custom message when dividing by zero.
     *
     * CAUTION: This function is deprecated because it requires allocating memory for the error
     * message unnecessarily. For custom revert reasons use {tryMod}.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        return a % b;
    }
}


// File contracts/avalanche/common/math.sol

pragma solidity ^0.7.0;

contract DSMath {
  uint constant WAD = 10 ** 18;
  uint constant RAY = 10 ** 27;

  function add(uint x, uint y) internal pure returns (uint z) {
    z = SafeMath.add(x, y);
  }

  function sub(uint x, uint y) internal virtual pure returns (uint z) {
    z = SafeMath.sub(x, y);
  }

  function mul(uint x, uint y) internal pure returns (uint z) {
    z = SafeMath.mul(x, y);
  }

  function div(uint x, uint y) internal pure returns (uint z) {
    z = SafeMath.div(x, y);
  }

  function wmul(uint x, uint y) internal pure returns (uint z) {
    z = SafeMath.add(SafeMath.mul(x, y), WAD / 2) / WAD;
  }

  function wdiv(uint x, uint y) internal pure returns (uint z) {
    z = SafeMath.add(SafeMath.mul(x, WAD), y / 2) / y;
  }

  function rdiv(uint x, uint y) internal pure returns (uint z) {
    z = SafeMath.add(SafeMath.mul(x, RAY), y / 2) / y;
  }

  function rmul(uint x, uint y) internal pure returns (uint z) {
    z = SafeMath.add(SafeMath.mul(x, y), RAY / 2) / RAY;
  }

  function toInt(uint x) internal pure returns (int y) {
    y = int(x);
    require(y >= 0, "int-overflow");
  }

  function toRad(uint wad) internal pure returns (uint rad) {
    rad = mul(wad, 10 ** 27);
  }

}


// File contracts/avalanche/common/basic.sol

pragma solidity ^0.7.0;



abstract contract Basic is DSMath, Stores {

    function convert18ToDec(uint _dec, uint256 _amt) internal pure returns (uint256 amt) {
        amt = (_amt / 10 ** (18 - _dec));
    }

    function convertTo18(uint _dec, uint256 _amt) internal pure returns (uint256 amt) {
        amt = mul(_amt, 10 ** (18 - _dec));
    }

    function getTokenBal(TokenInterface token) internal view returns(uint _amt) {
        _amt = address(token) == avaxAddr ? address(this).balance : token.balanceOf(address(this));
    }

    function getTokensDec(TokenInterface buyAddr, TokenInterface sellAddr) internal view returns(uint buyDec, uint sellDec) {
        buyDec = address(buyAddr) == avaxAddr ?  18 : buyAddr.decimals();
        sellDec = address(sellAddr) == avaxAddr ?  18 : sellAddr.decimals();
    }

    function encodeEvent(string memory eventName, bytes memory eventParam) internal pure returns (bytes memory) {
        return abi.encode(eventName, eventParam);
    }

    function approve(TokenInterface token, address spender, uint256 amount) internal {
        try token.approve(spender, amount) {

        } catch {
            token.approve(spender, 0);
            token.approve(spender, amount);
        }
    }

    function changeAvaxAddress(address buy, address sell) internal pure returns(TokenInterface _buy, TokenInterface _sell){
        _buy = buy == avaxAddr ? TokenInterface(wavaxAddr) : TokenInterface(buy);
        _sell = sell == avaxAddr ? TokenInterface(wavaxAddr) : TokenInterface(sell);
    }

    function convertAvaxToWavax(bool isAvax, TokenInterface token, uint amount) internal {
        if(isAvax) token.deposit{value: amount}();
    }

    function convertWavaxToAvax(bool isAvax, TokenInterface token, uint amount) internal {
       if(isAvax) {
            approve(token, address(token), amount);
            token.withdraw(amount);
        }
    }
}


// File contracts/avalanche/connectors/benqi/benqi-rewards/interface.sol

pragma solidity ^0.7.0;

interface ComptrollerInterface {
    function claimReward(uint8 rewardType, address holder) external;
    function claimReward(uint8 rewardType, address holder, address[] calldata) external;
    function claimReward(uint8 rewardType, address[] calldata holders, address[] calldata qiTokens, bool borrowers, bool suppliers) external;
}

interface QiInterface {
    function delegate(address delegatee) external;
    function delegates(address) external view returns(address);
}

interface BenqiMappingInterface {
    function qiTokenMapping(string calldata tokenId) external view returns (address);
    function getMapping(string calldata tokenId) external view returns (address, address);
}


// File contracts/avalanche/connectors/benqi/benqi-rewards/helpers.sol

pragma solidity ^0.7.0;


abstract contract Helpers is DSMath, Basic {
    /**
     * @dev Benqi Comptroller
     */
    ComptrollerInterface internal constant troller = ComptrollerInterface(0x486Af39519B4Dc9a7fCcd318217352830E8AD9b4);

    /**
     * @dev Qi Reward Token
     */
    QiInterface internal constant benqiToken = QiInterface(0x8729438EB15e2C8B576fCc6AeCdA6A148776C0F5);

    /**
     * @dev Benqi Mapping
     */
    BenqiMappingInterface internal constant qiMapping = BenqiMappingInterface(0xe19Fba29ac9BAACc1F584aEcD9C98B4F6fC58ba6);

    /**
     * @dev Benqi reward token type to show BENQI or AVAX
     */
    uint8 internal constant rewardQi = 0;
    uint8 internal constant rewardAvax = 1;

    function getMergedQiTokens(
        string[] calldata supplyIds,
        string[] calldata borrowIds
    ) internal view returns (address[] memory qitokens, bool isBorrow, bool isSupply) {
        uint _supplyLen = supplyIds.length;
        uint _borrowLen = borrowIds.length;
        uint _totalLen = add(_supplyLen, _borrowLen);
        qitokens = new address[](_totalLen);

        if(_supplyLen > 0) {
            isSupply = true;
            for (uint i = 0; i < _supplyLen; i++) {
                (address token, address qiToken) = qiMapping.getMapping(supplyIds[i]);
                require(token != address(0) && qiToken != address(0), "invalid token/qitoken address");

                qitokens[i] = qiToken;
            }
        }

        if(_borrowLen > 0) {
            isBorrow = true;
            for (uint i = 0; i < _borrowLen; i++) {
                (address token, address qiToken) = qiMapping.getMapping(borrowIds[i]);
                require(token != address(0) && qiToken != address(0), "invalid token/qitoken address");

                qitokens[_supplyLen + i] = qiToken;
            }
        }
    }
}


// File contracts/avalanche/connectors/benqi/benqi-rewards/events.sol

pragma solidity ^0.7.0;

contract Events {
    event LogClaimedReward(uint256 rewardAmt, uint256 setId);
    event LogDelegate(address delegatee);
}


// File contracts/avalanche/connectors/benqi/benqi-rewards/main.sol

pragma solidity ^0.7.0;
pragma experimental ABIEncoderV2;

/**
 * @title Reward.
 * @dev Claim Reward.
 */




abstract contract IncentivesResolver is Events, Helpers {

    /**
     * @dev Claim Accrued Qi Token.
     * @notice Claim Accrued Qi Token.
     * @param setId ID stores the amount of Reward claimed.
    */
    function ClaimQiReward(uint256 setId) external payable returns (string memory _eventName, bytes memory _eventParam) {
        TokenInterface _benqiToken = TokenInterface(address(benqiToken));
        uint intialBal = _benqiToken.balanceOf(address(this));
        troller.claimReward(rewardQi, address(this));
        uint finalBal = _benqiToken.balanceOf(address(this));
        uint amt = sub(finalBal, intialBal);

        setUint(setId, amt);

        _eventName = "LogClaimedReward(uint256,uint256)";
        _eventParam = abi.encode(amt, setId);
    }

    /**
     * @dev Claim Accrued Qi Token.
     * @notice Claim Accrued Qi Token.
     * @param tokenIds Array of supplied and borrowed token IDs.
     * @param setId ID stores the amount of Reward claimed.
    */
    function ClaimQiRewardTwo(string[] calldata tokenIds, uint256 setId) external payable returns (string memory _eventName, bytes memory _eventParam) {
        uint _len = tokenIds.length;
        address[] memory qitokens = new address[](_len);
        for (uint i = 0; i < _len; i++) {
            (address token, address qiToken) = qiMapping.getMapping(tokenIds[i]);
            require(token != address(0) && qiToken != address(0), "invalid token/qitoken address");

            qitokens[i] = qiToken;
        }

        TokenInterface _benqiToken = TokenInterface(address(benqiToken));
        uint intialBal = _benqiToken.balanceOf(address(this));
        troller.claimReward(rewardQi, address(this), qitokens);
        uint finalBal = _benqiToken.balanceOf(address(this));
        uint amt = sub(finalBal, intialBal);

        setUint(setId, amt);

        _eventName = "LogClaimedReward(uint256,uint256)";
        _eventParam = abi.encode(amt, setId);
    }

    /**
     * @dev Claim Accrued Qi Token.
     * @notice Claim Accrued Qi Token.
     * @param supplyTokenIds Array of supplied tokenIds.
     * @param borrowTokenIds Array of borrowed tokenIds.
     * @param setId ID stores the amount of Reward claimed.
    */
    function ClaimQiRewardThree(string[] calldata supplyTokenIds, string[] calldata borrowTokenIds, uint256 setId) external payable returns (string memory _eventName, bytes memory _eventParam) {
       (address[] memory qitokens, bool isBorrow, bool isSupply) = getMergedQiTokens(supplyTokenIds, borrowTokenIds);

        address[] memory holders = new address[](1);
        holders[0] = address(this);

        TokenInterface _benqiToken = TokenInterface(address(benqiToken));
        uint intialBal = _benqiToken.balanceOf(address(this));
        troller.claimReward(rewardQi, holders, qitokens, isBorrow, isSupply);
        uint finalBal = _benqiToken.balanceOf(address(this));
        uint amt = sub(finalBal, intialBal);

        setUint(setId, amt);

        _eventName = "LogClaimedReward(uint256,uint256)";
        _eventParam = abi.encode(amt, setId);
    }

    /**
     * @dev Claim Accrued Avax Token.
     * @notice Claim Accrued Avax Token.
     * @param setId ID stores the amount of Reward claimed.
    */
    function ClaimAvaxReward(uint256 setId) external payable returns (string memory _eventName, bytes memory _eventParam) {
        uint intialBal = address(this).balance;
        troller.claimReward(rewardAvax, address(this));
        uint finalBal = address(this).balance;
        uint amt = sub(finalBal, intialBal);

        setUint(setId, amt);

        _eventName = "LogClaimedReward(uint256,uint256)";
        _eventParam = abi.encode(amt, setId);
    }

    /**
     * @dev Claim Accrued Avax Token.
     * @notice Claim Accrued Avax Token.
     * @param tokenIds Array of supplied and borrowed token IDs.
     * @param setId ID stores the amount of Reward claimed.
    */
    function ClaimAvaxRewardTwo(string[] calldata tokenIds, uint256 setId) external payable returns (string memory _eventName, bytes memory _eventParam) {
        uint _len = tokenIds.length;
        address[] memory qitokens = new address[](_len);
        for (uint i = 0; i < _len; i++) {
            (address token, address qiToken) = qiMapping.getMapping(tokenIds[i]);
            require(token != address(0) && qiToken != address(0), "invalid token/qitoken address");

            qitokens[i] = qiToken;
        }

        uint intialBal = address(this).balance;
        troller.claimReward(rewardAvax, address(this), qitokens);
        uint finalBal = address(this).balance;
        uint amt = sub(finalBal, intialBal);

        setUint(setId, amt);

        _eventName = "LogClaimedReward(uint256,uint256)";
        _eventParam = abi.encode(amt, setId);
    }

    /**
     * @dev Claim Accrued Avax Token.
     * @notice Claim Accrued Avax Token.
     * @param supplyTokenIds Array of supplied tokenIds.
     * @param borrowTokenIds Array of borrowed tokenIds.
     * @param setId ID stores the amount of Reward claimed.
    */
    function ClaimAvaxRewardThree(string[] calldata supplyTokenIds, string[] calldata borrowTokenIds, uint256 setId) external payable returns (string memory _eventName, bytes memory _eventParam) {
       (address[] memory qitokens, bool isBorrow, bool isSupply) = getMergedQiTokens(supplyTokenIds, borrowTokenIds);

        address[] memory holders = new address[](1);
        holders[0] = address(this);

        uint intialBal = address(this).balance;
        troller.claimReward(rewardAvax, holders, qitokens, isBorrow, isSupply);
        uint finalBal = address(this).balance;
        uint amt = sub(finalBal, intialBal);

        setUint(setId, amt);

        _eventName = "LogClaimedReward(uint256,uint256)";
        _eventParam = abi.encode(amt, setId);
    }

    /**
     * @dev Delegate votes.
     * @notice Delegate votes.
     * @param delegatee The address to delegate the votes to.
    */
    function delegate(address delegatee) external payable returns (string memory _eventName, bytes memory _eventParam) {
        require(benqiToken.delegates(address(this)) != delegatee, "Already delegated to same delegatee.");

        benqiToken.delegate(delegatee);

        _eventName = "LogDelegate(address)";
        _eventParam = abi.encode(delegatee);
    }
}

contract ConnectV2BenqiIncentivesAvalanche is IncentivesResolver {
    string public constant name = "Benqi-Incentives-v1";
}

Contract ABI

[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"rewardAmt","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"setId","type":"uint256"}],"name":"LogClaimedReward","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"delegatee","type":"address"}],"name":"LogDelegate","type":"event"},{"inputs":[{"internalType":"uint256","name":"setId","type":"uint256"}],"name":"ClaimAvaxReward","outputs":[{"internalType":"string","name":"_eventName","type":"string"},{"internalType":"bytes","name":"_eventParam","type":"bytes"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"string[]","name":"supplyTokenIds","type":"string[]"},{"internalType":"string[]","name":"borrowTokenIds","type":"string[]"},{"internalType":"uint256","name":"setId","type":"uint256"}],"name":"ClaimAvaxRewardThree","outputs":[{"internalType":"string","name":"_eventName","type":"string"},{"internalType":"bytes","name":"_eventParam","type":"bytes"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"string[]","name":"tokenIds","type":"string[]"},{"internalType":"uint256","name":"setId","type":"uint256"}],"name":"ClaimAvaxRewardTwo","outputs":[{"internalType":"string","name":"_eventName","type":"string"},{"internalType":"bytes","name":"_eventParam","type":"bytes"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"setId","type":"uint256"}],"name":"ClaimQiReward","outputs":[{"internalType":"string","name":"_eventName","type":"string"},{"internalType":"bytes","name":"_eventParam","type":"bytes"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"string[]","name":"supplyTokenIds","type":"string[]"},{"internalType":"string[]","name":"borrowTokenIds","type":"string[]"},{"internalType":"uint256","name":"setId","type":"uint256"}],"name":"ClaimQiRewardThree","outputs":[{"internalType":"string","name":"_eventName","type":"string"},{"internalType":"bytes","name":"_eventParam","type":"bytes"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"string[]","name":"tokenIds","type":"string[]"},{"internalType":"uint256","name":"setId","type":"uint256"}],"name":"ClaimQiRewardTwo","outputs":[{"internalType":"string","name":"_eventName","type":"string"},{"internalType":"bytes","name":"_eventParam","type":"bytes"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"delegatee","type":"address"}],"name":"delegate","outputs":[{"internalType":"string","name":"_eventName","type":"string"},{"internalType":"bytes","name":"_eventParam","type":"bytes"}],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"}]

608060405234801561001057600080fd5b50612165806100206000396000f3fe60806040526004361061007a5760003560e01c80633835e6121161004e5780633835e6121461013d5780635c19a95c1461016e578063744944251461019f578063d1a1b402146101d05761007a565b806205d20b1461007f57806306fdde03146100b05780631b72cef8146100db57806330da45101461010c575b600080fd5b61009960048036038101906100949190611a8f565b610201565b6040516100a7929190611dc8565b60405180910390f35b3480156100bc57600080fd5b506100c56102ef565b6040516100d29190611da6565b60405180910390f35b6100f560048036038101906100f09190611a37565b610328565b604051610103929190611dc8565b60405180910390f35b61012660048036038101906101219190611a37565b61063c565b604051610134929190611dc8565b60405180910390f35b610157600480360381019061015291906119ae565b610a7a565b604051610165929190611dc8565b60405180910390f35b61018860048036038101906101839190611920565b610d4c565b604051610196929190611dc8565b60405180910390f35b6101b960048036038101906101b491906119ae565b610f38565b6040516101c7929190611dc8565b60405180910390f35b6101ea60048036038101906101e59190611a8f565b6110e0565b6040516101f8929190611dc8565b60405180910390f35b606080600047905073486af39519b4dc9a7fccd318217352830e8ad9b473ffffffffffffffffffffffffffffffffffffffff16630952c5636001306040518363ffffffff1660e01b8152600401610259929190611ea8565b600060405180830381600087803b15801561027357600080fd5b505af1158015610287573d6000803e3d6000fd5b505050506000479050600061029c82846112f8565b90506102a8868261130c565b60405180606001604052806021815260200161210f60219139945080866040516020016102d6929190611e7f565b6040516020818303038152906040529350505050915091565b6040518060400160405280601381526020017f42656e71692d496e63656e74697665732d76310000000000000000000000000081525081565b606080600085859050905060008167ffffffffffffffff8111801561034c57600080fd5b5060405190808252806020026020018201604052801561037b5781602001602082028036833780820191505090505b50905060005b828110156105495760008073e19fba29ac9baacc1f584aecd9c98b4f6fc58ba673ffffffffffffffffffffffffffffffffffffffff166311f45e9c8b8b868181106103c857fe5b90506020028101906103da9190611f70565b6040518363ffffffff1660e01b81526004016103f7929190611d82565b604080518083038186803b15801561040e57600080fd5b505afa158015610422573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104469190611972565b91509150600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156104b45750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b6104f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104ea90611e5f565b60405180910390fd5b8084848151811061050057fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505050508080600101915050610381565b50600047905073486af39519b4dc9a7fccd318217352830e8ad9b473ffffffffffffffffffffffffffffffffffffffff1663744532ae600130856040518463ffffffff1660e01b81526004016105a193929190611ed1565b600060405180830381600087803b1580156105bb57600080fd5b505af11580156105cf573d6000803e3d6000fd5b50505050600047905060006105e482846112f8565b90506105f0888261130c565b60405180606001604052806021815260200161210f602191399650808860405160200161061e929190611e7f565b60405160208183030381529060405295505050505050935093915050565b606080600085859050905060008167ffffffffffffffff8111801561066057600080fd5b5060405190808252806020026020018201604052801561068f5781602001602082028036833780820191505090505b50905060005b8281101561085d5760008073e19fba29ac9baacc1f584aecd9c98b4f6fc58ba673ffffffffffffffffffffffffffffffffffffffff166311f45e9c8b8b868181106106dc57fe5b90506020028101906106ee9190611f70565b6040518363ffffffff1660e01b815260040161070b929190611d82565b604080518083038186803b15801561072257600080fd5b505afa158015610736573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061075a9190611972565b91509150600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156107c85750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b610807576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107fe90611e5f565b60405180910390fd5b8084848151811061081457fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505050508080600101915050610695565b506000738729438eb15e2c8b576fcc6aecda6a148776c0f5905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016108b29190611d67565b60206040518083038186803b1580156108ca57600080fd5b505afa1580156108de573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109029190611ab8565b905073486af39519b4dc9a7fccd318217352830e8ad9b473ffffffffffffffffffffffffffffffffffffffff1663744532ae600030866040518463ffffffff1660e01b815260040161095693929190611ed1565b600060405180830381600087803b15801561097057600080fd5b505af1158015610984573d6000803e3d6000fd5b5050505060008273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016109c39190611d67565b60206040518083038186803b1580156109db57600080fd5b505afa1580156109ef573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a139190611ab8565b90506000610a2182846112f8565b9050610a2d898261130c565b60405180606001604052806021815260200161210f6021913997508089604051602001610a5b929190611e7f565b6040516020818303038152906040529650505050505050935093915050565b6060806000806000610a8e8a8a8a8a61139a565b9250925092506000600167ffffffffffffffff81118015610aae57600080fd5b50604051908082528060200260200182016040528015610add5781602001602082028036833780820191505090505b5090503081600081518110610aee57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000738729438eb15e2c8b576fcc6aecda6a148776c0f5905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610b7c9190611d67565b60206040518083038186803b158015610b9457600080fd5b505afa158015610ba8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bcc9190611ab8565b905073486af39519b4dc9a7fccd318217352830e8ad9b473ffffffffffffffffffffffffffffffffffffffff16638805714b6000858989896040518663ffffffff1660e01b8152600401610c24959493929190611f0f565b600060405180830381600087803b158015610c3e57600080fd5b505af1158015610c52573d6000803e3d6000fd5b5050505060008273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610c919190611d67565b60206040518083038186803b158015610ca957600080fd5b505afa158015610cbd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ce19190611ab8565b90506000610cef82846112f8565b9050610cfb8b8261130c565b60405180606001604052806021815260200161210f602191399950808b604051602001610d29929190611e7f565b604051602081830303815290604052985050505050505050509550959350505050565b6060808273ffffffffffffffffffffffffffffffffffffffff16738729438eb15e2c8b576fcc6aecda6a148776c0f573ffffffffffffffffffffffffffffffffffffffff1663587cde1e306040518263ffffffff1660e01b8152600401610db39190611d67565b60206040518083038186803b158015610dcb57600080fd5b505afa158015610ddf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e039190611949565b73ffffffffffffffffffffffffffffffffffffffff161415610e5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5190611e3f565b60405180910390fd5b738729438eb15e2c8b576fcc6aecda6a148776c0f573ffffffffffffffffffffffffffffffffffffffff16635c19a95c846040518263ffffffff1660e01b8152600401610ea79190611d67565b600060405180830381600087803b158015610ec157600080fd5b505af1158015610ed5573d6000803e3d6000fd5b505050506040518060400160405280601481526020017f4c6f6744656c6567617465286164647265737329000000000000000000000000815250915082604051602001610f229190611d67565b6040516020818303038152906040529050915091565b6060806000806000610f4c8a8a8a8a61139a565b9250925092506000600167ffffffffffffffff81118015610f6c57600080fd5b50604051908082528060200260200182016040528015610f9b5781602001602082028036833780820191505090505b5090503081600081518110610fac57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600047905073486af39519b4dc9a7fccd318217352830e8ad9b473ffffffffffffffffffffffffffffffffffffffff16638805714b6001848888886040518663ffffffff1660e01b8152600401611041959493929190611f0f565b600060405180830381600087803b15801561105b57600080fd5b505af115801561106f573d6000803e3d6000fd5b505050506000479050600061108482846112f8565b90506110908a8261130c565b60405180606001604052806021815260200161210f602191399850808a6040516020016110be929190611e7f565b6040516020818303038152906040529750505050505050509550959350505050565b6060806000738729438eb15e2c8b576fcc6aecda6a148776c0f5905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016111379190611d67565b60206040518083038186803b15801561114f57600080fd5b505afa158015611163573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111879190611ab8565b905073486af39519b4dc9a7fccd318217352830e8ad9b473ffffffffffffffffffffffffffffffffffffffff16630952c5636000306040518363ffffffff1660e01b81526004016111d9929190611ea8565b600060405180830381600087803b1580156111f357600080fd5b505af1158015611207573d6000803e3d6000fd5b5050505060008273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016112469190611d67565b60206040518083038186803b15801561125e57600080fd5b505afa158015611272573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112969190611ab8565b905060006112a482846112f8565b90506112b0878261130c565b60405180606001604052806021815260200161210f60219139955080876040516020016112de929190611e7f565b604051602081830303815290604052945050505050915091565b600061130483836117c9565b905092915050565b6000821461139657733254ce8f5b1c82431b8f21df01918342215825c273ffffffffffffffffffffffffffffffffffffffff166361e3c94483836040518363ffffffff1660e01b8152600401611363929190611e7f565b600060405180830381600087803b15801561137d57600080fd5b505af1158015611391573d6000803e3d6000fd5b505050505b5050565b60606000806000878790509050600086869050905060006113bb8383611819565b90508067ffffffffffffffff811180156113d457600080fd5b506040519080825280602002602001820160405280156114035781602001602082028036833780820191505090505b50955060008311156115e0576001935060005b838110156115de5760008073e19fba29ac9baacc1f584aecd9c98b4f6fc58ba673ffffffffffffffffffffffffffffffffffffffff166311f45e9c8e8e8681811061145d57fe5b905060200281019061146f9190611f70565b6040518363ffffffff1660e01b815260040161148c929190611d82565b604080518083038186803b1580156114a357600080fd5b505afa1580156114b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114db9190611972565b91509150600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156115495750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b611588576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161157f90611e5f565b60405180910390fd5b8089848151811061159557fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505050508080600101915050611416565b505b60008211156117bc576001945060005b828110156117ba5760008073e19fba29ac9baacc1f584aecd9c98b4f6fc58ba673ffffffffffffffffffffffffffffffffffffffff166311f45e9c8c8c8681811061163757fe5b90506020028101906116499190611f70565b6040518363ffffffff1660e01b8152600401611666929190611d82565b604080518083038186803b15801561167d57600080fd5b505afa158015611691573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116b59190611972565b91509150600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156117235750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b611762576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175990611e5f565b60405180910390fd5b80898488018151811061177157fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050505080806001019150506115f0565b505b5050509450945094915050565b60008282111561180e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180590611e1f565b60405180910390fd5b818303905092915050565b6000611825838361182d565b905092915050565b600080828401905083811015611878576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161186f90611dff565b60405180910390fd5b8091505092915050565b600081359050611891816120e0565b92915050565b6000815190506118a6816120e0565b92915050565b60008083601f8401126118be57600080fd5b8235905067ffffffffffffffff8111156118d757600080fd5b6020830191508360208202830111156118ef57600080fd5b9250929050565b600081359050611905816120f7565b92915050565b60008151905061191a816120f7565b92915050565b60006020828403121561193257600080fd5b600061194084828501611882565b91505092915050565b60006020828403121561195b57600080fd5b600061196984828501611897565b91505092915050565b6000806040838503121561198557600080fd5b600061199385828601611897565b92505060206119a485828601611897565b9150509250929050565b6000806000806000606086880312156119c657600080fd5b600086013567ffffffffffffffff8111156119e057600080fd5b6119ec888289016118ac565b9550955050602086013567ffffffffffffffff811115611a0b57600080fd5b611a17888289016118ac565b93509350506040611a2a888289016118f6565b9150509295509295909350565b600080600060408486031215611a4c57600080fd5b600084013567ffffffffffffffff811115611a6657600080fd5b611a72868287016118ac565b93509350506020611a85868287016118f6565b9150509250925092565b600060208284031215611aa157600080fd5b6000611aaf848285016118f6565b91505092915050565b600060208284031215611aca57600080fd5b6000611ad88482850161190b565b91505092915050565b6000611aed8383611af9565b60208301905092915050565b611b0281612038565b82525050565b611b1181612038565b82525050565b6000611b2282611fd7565b611b2c8185612005565b9350611b3783611fc7565b8060005b83811015611b68578151611b4f8882611ae1565b9750611b5a83611ff8565b925050600181019050611b3b565b5085935050505092915050565b611b7e8161204a565b82525050565b6000611b8f82611fe2565b611b998185612016565b9350611ba981856020860161209c565b611bb2816120cf565b840191505092915050565b6000611bc98385612027565b9350611bd683858461208d565b611bdf836120cf565b840190509392505050565b6000611bf582611fed565b611bff8185612027565b9350611c0f81856020860161209c565b611c18816120cf565b840191505092915050565b6000611c30601b83612027565b91507f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006000830152602082019050919050565b6000611c70601e83612027565b91507f536166654d6174683a207375627472616374696f6e206f766572666c6f7700006000830152602082019050919050565b6000611cb0602483612027565b91507f416c72656164792064656c65676174656420746f2073616d652064656c65676160008301527f7465652e000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611d16601d83612027565b91507f696e76616c696420746f6b656e2f7169746f6b656e20616464726573730000006000830152602082019050919050565b611d5281612076565b82525050565b611d6181612080565b82525050565b6000602082019050611d7c6000830184611b08565b92915050565b60006020820190508181036000830152611d9d818486611bbd565b90509392505050565b60006020820190508181036000830152611dc08184611bea565b905092915050565b60006040820190508181036000830152611de28185611bea565b90508181036020830152611df68184611b84565b90509392505050565b60006020820190508181036000830152611e1881611c23565b9050919050565b60006020820190508181036000830152611e3881611c63565b9050919050565b60006020820190508181036000830152611e5881611ca3565b9050919050565b60006020820190508181036000830152611e7881611d09565b9050919050565b6000604082019050611e946000830185611d49565b611ea16020830184611d49565b9392505050565b6000604082019050611ebd6000830185611d58565b611eca6020830184611b08565b9392505050565b6000606082019050611ee66000830186611d58565b611ef36020830185611b08565b8181036040830152611f058184611b17565b9050949350505050565b600060a082019050611f246000830188611d58565b8181036020830152611f368187611b17565b90508181036040830152611f4a8186611b17565b9050611f596060830185611b75565b611f666080830184611b75565b9695505050505050565b60008083356001602003843603038112611f8957600080fd5b80840192508235915067ffffffffffffffff821115611fa757600080fd5b602083019250600182023603831315611fbf57600080fd5b509250929050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600061204382612056565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b82818337600083830152505050565b60005b838110156120ba57808201518184015260208101905061209f565b838111156120c9576000848401525b50505050565b6000601f19601f8301169050919050565b6120e981612038565b81146120f457600080fd5b50565b61210081612076565b811461210b57600080fd5b5056fe4c6f67436c61696d65645265776172642875696e743235362c75696e7432353629a264697066735822122005220df7c01b42cf201890c518418ec2f6be268011b168760c4ff83b21f0ce3564736f6c63430007060033

Deployed ByteCode Sourcemap

22286:127:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19122:466;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;22358:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19821:881;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;16816:982;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;18077:878;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;21911:368;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;20985:777;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;16020:567;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;19122:466;19188:24;19214;19251:14;19268:21;19251:38;;13668:42;19300:19;;;14202:1;19340:4;19300:46;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19357:13;19373:21;19357:37;;19405:8;19416:24;19420:8;19430:9;19416:3;:24::i;:::-;19405:35;;19453:19;19461:5;19468:3;19453:7;:19::i;:::-;19485:48;;;;;;;;;;;;;;;;;;;19569:3;19574:5;19558:22;;;;;;;;;:::i;:::-;;;;;;;;;;;;;19544:36;;19122:466;;;;;;:::o;22358:51::-;;;;;;;;;;;;;;;;;;;:::o;19821:881::-;19918:24;19944;19981:9;19993:8;;:15;;19981:27;;20019:25;20061:4;20047:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20019:47;;20082:6;20077:266;20098:4;20094:1;:8;20077:266;;;20125:13;20140:15;13993:42;20159:20;;;20180:8;;20189:1;20180:11;;;;;;;;;;;;;;;;;;:::i;:::-;20159:33;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20124:68;;;;20232:1;20215:19;;:5;:19;;;;:44;;;;;20257:1;20238:21;;:7;:21;;;;20215:44;20207:86;;;;;;;;;;;;:::i;:::-;;;;;;;;;20324:7;20310:8;20319:1;20310:11;;;;;;;;;;;;;:21;;;;;;;;;;;20077:266;;20104:3;;;;;;;20077:266;;;;20355:14;20372:21;20355:38;;13668:42;20404:19;;;14202:1;20444:4;20451:8;20404:56;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20471:13;20487:21;20471:37;;20519:8;20530:24;20534:8;20544:9;20530:3;:24::i;:::-;20519:35;;20567:19;20575:5;20582:3;20567:7;:19::i;:::-;20599:48;;;;;;;;;;;;;;;;;;;20683:3;20688:5;20672:22;;;;;;;;;:::i;:::-;;;;;;;;;;;;;20658:36;;19821:881;;;;;;;;;;;:::o;16816:982::-;16911:24;16937;16974:9;16986:8;;:15;;16974:27;;17012:25;17054:4;17040:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17012:47;;17075:6;17070:266;17091:4;17087:1;:8;17070:266;;;17118:13;17133:15;13993:42;17152:20;;;17173:8;;17182:1;17173:11;;;;;;;;;;;;;;;;;;:::i;:::-;17152:33;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17117:68;;;;17225:1;17208:19;;:5;:19;;;;:44;;;;;17250:1;17231:21;;:7;:21;;;;17208:44;17200:86;;;;;;;;;;;;:::i;:::-;;;;;;;;;17317:7;17303:8;17312:1;17303:11;;;;;;;;;;;;;:21;;;;;;;;;;;17070:266;;17097:3;;;;;;;17070:266;;;;17348:26;13822:42;17348:64;;17423:14;17440:11;:21;;;17470:4;17440:36;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17423:53;;13668:42;17487:19;;;14157:1;17525:4;17532:8;17487:54;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17552:13;17568:11;:21;;;17598:4;17568:36;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17552:52;;17615:8;17626:24;17630:8;17640:9;17626:3;:24::i;:::-;17615:35;;17663:19;17671:5;17678:3;17663:7;:19::i;:::-;17695:48;;;;;;;;;;;;;;;;;;;17779:3;17784:5;17768:22;;;;;;;;;:::i;:::-;;;;;;;;;;;;;17754:36;;16816:982;;;;;;;;;;;;:::o;18077:878::-;18214:24;18240;18277:25;18304:13;18319;18336:49;18354:14;;18370;;18336:17;:49::i;:::-;18276:109;;;;;;18398:24;18439:1;18425:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18398:43;;18473:4;18452:7;18460:1;18452:10;;;;;;;;;;;;;:26;;;;;;;;;;;18491;13822:42;18491:64;;18566:14;18583:11;:21;;;18613:4;18583:36;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18566:53;;13668:42;18630:19;;;14157:1;18660:7;18669:8;18679;18689;18630:68;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18709:13;18725:11;:21;;;18755:4;18725:36;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18709:52;;18772:8;18783:24;18787:8;18797:9;18783:3;:24::i;:::-;18772:35;;18820:19;18828:5;18835:3;18820:7;:19::i;:::-;18852:48;;;;;;;;;;;;;;;;;;;18936:3;18941:5;18925:22;;;;;;;;;:::i;:::-;;;;;;;;;;;;;18911:36;;18077:878;;;;;;;;;;;;;;;;:::o;21911:368::-;21974:24;22000;22084:9;22045:48;;13822:42;22045:20;;;22074:4;22045:35;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:48;;;;22037:97;;;;;;;;;;;;:::i;:::-;;;;;;;;;13822:42;22147:19;;;22167:9;22147:30;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22190:35;;;;;;;;;;;;;;;;;;;22261:9;22250:21;;;;;;;;:::i;:::-;;;;;;;;;;;;;22236:35;;21911:368;;;:::o;20985:777::-;21124:24;21150;21187:25;21214:13;21229;21246:49;21264:14;;21280;;21246:17;:49::i;:::-;21186:109;;;;;;21308:24;21349:1;21335:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21308:43;;21383:4;21362:7;21370:1;21362:10;;;;;;;;;;;;;:26;;;;;;;;;;;21401:14;21418:21;21401:38;;13668:42;21450:19;;;14202:1;21482:7;21491:8;21501;21511;21450:70;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21531:13;21547:21;21531:37;;21579:8;21590:24;21594:8;21604:9;21590:3;:24::i;:::-;21579:35;;21627:19;21635:5;21642:3;21627:7;:19::i;:::-;21659:48;;;;;;;;;;;;;;;;;;;21743:3;21748:5;21732:22;;;;;;;;;:::i;:::-;;;;;;;;;;;;;21718:36;;20985:777;;;;;;;;;;;;;;;:::o;16020:567::-;16084:24;16110;16147:26;13822:42;16147:64;;16222:14;16239:11;:21;;;16269:4;16239:36;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16222:53;;13668:42;16286:19;;;14157:1;16324:4;16286:44;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16341:13;16357:11;:21;;;16387:4;16357:36;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16341:52;;16404:8;16415:24;16419:8;16429:9;16415:3;:24::i;:::-;16404:35;;16452:19;16460:5;16467:3;16452:7;:19::i;:::-;16484:48;;;;;;;;;;;;;;;;;;;16568:3;16573:5;16557:22;;;;;;;;;:::i;:::-;;;;;;;;;;;;;16543:36;;16020:567;;;;;;;:::o;9512:103::-;9572:6;9591:18;9604:1;9607;9591:12;:18::i;:::-;9587:22;;9512:103;;;;:::o;1653:116::-;1729:1;1720:5;:10;1716:47;;1324:42;1732:19;;;1752:5;1759:3;1732:31;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1716:47;1653:116;;:::o;14212:1154::-;14345:25;14372:13;14387;14413:15;14431:9;;:16;;14413:34;;14458:15;14476:9;;:16;;14458:34;;14503:14;14520:27;14524:10;14536;14520:3;:27::i;:::-;14503:44;;14583:9;14569:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14558:35;;14622:1;14609:10;:14;14606:364;;;14651:4;14640:15;;14675:6;14670:289;14691:10;14687:1;:14;14670:289;;;14728:13;14743:15;13993:42;14762:20;;;14783:9;;14793:1;14783:12;;;;;;;;;;;;;;;;;;:::i;:::-;14762:34;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14727:69;;;;14840:1;14823:19;;:5;:19;;;;:44;;;;;14865:1;14846:21;;:7;:21;;;;14823:44;14815:86;;;;;;;;;;;;:::i;:::-;;;;;;;;;14936:7;14922:8;14931:1;14922:11;;;;;;;;;;;;;:21;;;;;;;;;;;14670:289;;14703:3;;;;;;;14670:289;;;;14606:364;14998:1;14985:10;:14;14982:377;;;15027:4;15016:15;;15051:6;15046:302;15067:10;15063:1;:14;15046:302;;;15104:13;15119:15;13993:42;15138:20;;;15159:9;;15169:1;15159:12;;;;;;;;;;;;;;;;;;:::i;:::-;15138:34;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15103:69;;;;15216:1;15199:19;;:5;:19;;;;:44;;;;;15241:1;15222:21;;:7;:21;;;;15199:44;15191:86;;;;;;;;;;;;:::i;:::-;;;;;;;;;15325:7;15298:8;15320:1;15307:10;:14;15298:24;;;;;;;;;;;;;:34;;;;;;;;;;;15046:302;;15079:3;;;;;;;15046:302;;;;14982:377;14212:1154;;;;;;;;;;;:::o;5041:158::-;5099:7;5132:1;5127;:6;;5119:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;5190:1;5186;:5;5179:12;;5041:158;;;;:::o;9411:95::-;9463:6;9482:18;9495:1;9498;9482:12;:18::i;:::-;9478:22;;9411:95;;;;:::o;4579:179::-;4637:7;4657:9;4673:1;4669;:5;4657:17;;4698:1;4693;:6;;4685:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;4749:1;4742:8;;;4579:179;;;;:::o;7:139:1:-;;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;152:143::-;;240:6;234:13;225:22;;256:33;283:5;256:33;:::i;:::-;215:80;;;;:::o;317:379::-;;;462:3;455:4;447:6;443:17;439:27;429:2;;480:1;477;470:12;429:2;516:6;503:20;493:30;;546:18;538:6;535:30;532:2;;;578:1;575;568:12;532:2;615:4;607:6;603:17;591:29;;669:3;661:4;653:6;649:17;639:8;635:32;632:41;629:2;;;686:1;683;676:12;629:2;419:277;;;;;:::o;702:139::-;;786:6;773:20;764:29;;802:33;829:5;802:33;:::i;:::-;754:87;;;;:::o;847:143::-;;935:6;929:13;920:22;;951:33;978:5;951:33;:::i;:::-;910:80;;;;:::o;996:262::-;;1104:2;1092:9;1083:7;1079:23;1075:32;1072:2;;;1120:1;1117;1110:12;1072:2;1163:1;1188:53;1233:7;1224:6;1213:9;1209:22;1188:53;:::i;:::-;1178:63;;1134:117;1062:196;;;;:::o;1264:284::-;;1383:2;1371:9;1362:7;1358:23;1354:32;1351:2;;;1399:1;1396;1389:12;1351:2;1442:1;1467:64;1523:7;1514:6;1503:9;1499:22;1467:64;:::i;:::-;1457:74;;1413:128;1341:207;;;;:::o;1554:440::-;;;1690:2;1678:9;1669:7;1665:23;1661:32;1658:2;;;1706:1;1703;1696:12;1658:2;1749:1;1774:64;1830:7;1821:6;1810:9;1806:22;1774:64;:::i;:::-;1764:74;;1720:128;1887:2;1913:64;1969:7;1960:6;1949:9;1945:22;1913:64;:::i;:::-;1903:74;;1858:129;1648:346;;;;;:::o;2000:926::-;;;;;;2236:2;2224:9;2215:7;2211:23;2207:32;2204:2;;;2252:1;2249;2242:12;2204:2;2323:1;2312:9;2308:17;2295:31;2353:18;2345:6;2342:30;2339:2;;;2385:1;2382;2375:12;2339:2;2421:92;2505:7;2496:6;2485:9;2481:22;2421:92;:::i;:::-;2403:110;;;;2266:257;2590:2;2579:9;2575:18;2562:32;2621:18;2613:6;2610:30;2607:2;;;2653:1;2650;2643:12;2607:2;2689:92;2773:7;2764:6;2753:9;2749:22;2689:92;:::i;:::-;2671:110;;;;2533:258;2830:2;2856:53;2901:7;2892:6;2881:9;2877:22;2856:53;:::i;:::-;2846:63;;2801:118;2194:732;;;;;;;;:::o;2932:594::-;;;;3104:2;3092:9;3083:7;3079:23;3075:32;3072:2;;;3120:1;3117;3110:12;3072:2;3191:1;3180:9;3176:17;3163:31;3221:18;3213:6;3210:30;3207:2;;;3253:1;3250;3243:12;3207:2;3289:92;3373:7;3364:6;3353:9;3349:22;3289:92;:::i;:::-;3271:110;;;;3134:257;3430:2;3456:53;3501:7;3492:6;3481:9;3477:22;3456:53;:::i;:::-;3446:63;;3401:118;3062:464;;;;;:::o;3532:262::-;;3640:2;3628:9;3619:7;3615:23;3611:32;3608:2;;;3656:1;3653;3646:12;3608:2;3699:1;3724:53;3769:7;3760:6;3749:9;3745:22;3724:53;:::i;:::-;3714:63;;3670:117;3598:196;;;;:::o;3800:284::-;;3919:2;3907:9;3898:7;3894:23;3890:32;3887:2;;;3935:1;3932;3925:12;3887:2;3978:1;4003:64;4059:7;4050:6;4039:9;4035:22;4003:64;:::i;:::-;3993:74;;3949:128;3877:207;;;;:::o;4090:179::-;;4180:46;4222:3;4214:6;4180:46;:::i;:::-;4258:4;4253:3;4249:14;4235:28;;4170:99;;;;:::o;4275:108::-;4352:24;4370:5;4352:24;:::i;:::-;4347:3;4340:37;4330:53;;:::o;4389:118::-;4476:24;4494:5;4476:24;:::i;:::-;4471:3;4464:37;4454:53;;:::o;4543:732::-;;4691:54;4739:5;4691:54;:::i;:::-;4761:86;4840:6;4835:3;4761:86;:::i;:::-;4754:93;;4871:56;4921:5;4871:56;:::i;:::-;4950:7;4981:1;4966:284;4991:6;4988:1;4985:13;4966:284;;;5067:6;5061:13;5094:63;5153:3;5138:13;5094:63;:::i;:::-;5087:70;;5180:60;5233:6;5180:60;:::i;:::-;5170:70;;5026:224;5013:1;5010;5006:9;5001:14;;4966:284;;;4970:14;5266:3;5259:10;;4667:608;;;;;;;:::o;5281:109::-;5362:21;5377:5;5362:21;:::i;:::-;5357:3;5350:34;5340:50;;:::o;5396:360::-;;5510:38;5542:5;5510:38;:::i;:::-;5564:70;5627:6;5622:3;5564:70;:::i;:::-;5557:77;;5643:52;5688:6;5683:3;5676:4;5669:5;5665:16;5643:52;:::i;:::-;5720:29;5742:6;5720:29;:::i;:::-;5715:3;5711:39;5704:46;;5486:270;;;;;:::o;5786:304::-;;5905:71;5969:6;5964:3;5905:71;:::i;:::-;5898:78;;5986:43;6022:6;6017:3;6010:5;5986:43;:::i;:::-;6054:29;6076:6;6054:29;:::i;:::-;6049:3;6045:39;6038:46;;5888:202;;;;;:::o;6096:364::-;;6212:39;6245:5;6212:39;:::i;:::-;6267:71;6331:6;6326:3;6267:71;:::i;:::-;6260:78;;6347:52;6392:6;6387:3;6380:4;6373:5;6369:16;6347:52;:::i;:::-;6424:29;6446:6;6424:29;:::i;:::-;6419:3;6415:39;6408:46;;6188:272;;;;;:::o;6466:325::-;;6629:67;6693:2;6688:3;6629:67;:::i;:::-;6622:74;;6726:29;6722:1;6717:3;6713:11;6706:50;6782:2;6777:3;6773:12;6766:19;;6612:179;;;:::o;6797:328::-;;6960:67;7024:2;7019:3;6960:67;:::i;:::-;6953:74;;7057:32;7053:1;7048:3;7044:11;7037:53;7116:2;7111:3;7107:12;7100:19;;6943:182;;;:::o;7131:368::-;;7294:67;7358:2;7353:3;7294:67;:::i;:::-;7287:74;;7391:34;7387:1;7382:3;7378:11;7371:55;7457:6;7452:2;7447:3;7443:12;7436:28;7490:2;7485:3;7481:12;7474:19;;7277:222;;;:::o;7505:327::-;;7668:67;7732:2;7727:3;7668:67;:::i;:::-;7661:74;;7765:31;7761:1;7756:3;7752:11;7745:52;7823:2;7818:3;7814:12;7807:19;;7651:181;;;:::o;7838:118::-;7925:24;7943:5;7925:24;:::i;:::-;7920:3;7913:37;7903:53;;:::o;7962:112::-;8045:22;8061:5;8045:22;:::i;:::-;8040:3;8033:35;8023:51;;:::o;8080:222::-;;8211:2;8200:9;8196:18;8188:26;;8224:71;8292:1;8281:9;8277:17;8268:6;8224:71;:::i;:::-;8178:124;;;;:::o;8308:333::-;;8469:2;8458:9;8454:18;8446:26;;8518:9;8512:4;8508:20;8504:1;8493:9;8489:17;8482:47;8546:88;8629:4;8620:6;8612;8546:88;:::i;:::-;8538:96;;8436:205;;;;;:::o;8647:313::-;;8798:2;8787:9;8783:18;8775:26;;8847:9;8841:4;8837:20;8833:1;8822:9;8818:17;8811:47;8875:78;8948:4;8939:6;8875:78;:::i;:::-;8867:86;;8765:195;;;;:::o;8966:510::-;;9163:2;9152:9;9148:18;9140:26;;9212:9;9206:4;9202:20;9198:1;9187:9;9183:17;9176:47;9240:78;9313:4;9304:6;9240:78;:::i;:::-;9232:86;;9365:9;9359:4;9355:20;9350:2;9339:9;9335:18;9328:48;9393:76;9464:4;9455:6;9393:76;:::i;:::-;9385:84;;9130:346;;;;;:::o;9482:419::-;;9686:2;9675:9;9671:18;9663:26;;9735:9;9729:4;9725:20;9721:1;9710:9;9706:17;9699:47;9763:131;9889:4;9763:131;:::i;:::-;9755:139;;9653:248;;;:::o;9907:419::-;;10111:2;10100:9;10096:18;10088:26;;10160:9;10154:4;10150:20;10146:1;10135:9;10131:17;10124:47;10188:131;10314:4;10188:131;:::i;:::-;10180:139;;10078:248;;;:::o;10332:419::-;;10536:2;10525:9;10521:18;10513:26;;10585:9;10579:4;10575:20;10571:1;10560:9;10556:17;10549:47;10613:131;10739:4;10613:131;:::i;:::-;10605:139;;10503:248;;;:::o;10757:419::-;;10961:2;10950:9;10946:18;10938:26;;11010:9;11004:4;11000:20;10996:1;10985:9;10981:17;10974:47;11038:131;11164:4;11038:131;:::i;:::-;11030:139;;10928:248;;;:::o;11182:332::-;;11341:2;11330:9;11326:18;11318:26;;11354:71;11422:1;11411:9;11407:17;11398:6;11354:71;:::i;:::-;11435:72;11503:2;11492:9;11488:18;11479:6;11435:72;:::i;:::-;11308:206;;;;;:::o;11520:324::-;;11675:2;11664:9;11660:18;11652:26;;11688:67;11752:1;11741:9;11737:17;11728:6;11688:67;:::i;:::-;11765:72;11833:2;11822:9;11818:18;11809:6;11765:72;:::i;:::-;11642:202;;;;;:::o;11850:585::-;;12083:2;12072:9;12068:18;12060:26;;12096:67;12160:1;12149:9;12145:17;12136:6;12096:67;:::i;:::-;12173:72;12241:2;12230:9;12226:18;12217:6;12173:72;:::i;:::-;12292:9;12286:4;12282:20;12277:2;12266:9;12262:18;12255:48;12320:108;12423:4;12414:6;12320:108;:::i;:::-;12312:116;;12050:385;;;;;;:::o;12441:934::-;;12768:3;12757:9;12753:19;12745:27;;12782:67;12846:1;12835:9;12831:17;12822:6;12782:67;:::i;:::-;12896:9;12890:4;12886:20;12881:2;12870:9;12866:18;12859:48;12924:108;13027:4;13018:6;12924:108;:::i;:::-;12916:116;;13079:9;13073:4;13069:20;13064:2;13053:9;13049:18;13042:48;13107:108;13210:4;13201:6;13107:108;:::i;:::-;13099:116;;13225:66;13287:2;13276:9;13272:18;13263:6;13225:66;:::i;:::-;13301:67;13363:3;13352:9;13348:19;13339:6;13301:67;:::i;:::-;12735:640;;;;;;;;:::o;13381:524::-;;;13521:11;13508:25;13621:1;13615:4;13611:12;13600:8;13584:14;13580:29;13576:48;13556:18;13552:73;13542:2;;13639:1;13636;13629:12;13542:2;13674:18;13664:8;13660:33;13652:41;;13726:4;13713:18;13703:28;;13754:18;13746:6;13743:30;13740:2;;;13786:1;13783;13776:12;13740:2;13817;13811:4;13807:13;13799:21;;13874:4;13866:6;13862:17;13846:14;13842:38;13836:4;13832:49;13829:2;;;13894:1;13891;13884:12;13829:2;13472:433;;;;;;:::o;13911:132::-;;14001:3;13993:11;;14031:4;14026:3;14022:14;14014:22;;13983:60;;;:::o;14049:114::-;;14150:5;14144:12;14134:22;;14123:40;;;:::o;14169:98::-;;14254:5;14248:12;14238:22;;14227:40;;;:::o;14273:99::-;;14359:5;14353:12;14343:22;;14332:40;;;:::o;14378:113::-;;14480:4;14475:3;14471:14;14463:22;;14453:38;;;:::o;14497:184::-;;14630:6;14625:3;14618:19;14670:4;14665:3;14661:14;14646:29;;14608:73;;;;:::o;14687:168::-;;14804:6;14799:3;14792:19;14844:4;14839:3;14835:14;14820:29;;14782:73;;;;:::o;14861:169::-;;14979:6;14974:3;14967:19;15019:4;15014:3;15010:14;14995:29;;14957:73;;;;:::o;15036:96::-;;15102:24;15120:5;15102:24;:::i;:::-;15091:35;;15081:51;;;:::o;15138:90::-;;15215:5;15208:13;15201:21;15190:32;;15180:48;;;:::o;15234:126::-;;15311:42;15304:5;15300:54;15289:65;;15279:81;;;:::o;15366:77::-;;15432:5;15421:16;;15411:32;;;:::o;15449:86::-;;15524:4;15517:5;15513:16;15502:27;;15492:43;;;:::o;15541:154::-;15625:6;15620:3;15615;15602:30;15687:1;15678:6;15673:3;15669:16;15662:27;15592:103;;;:::o;15701:307::-;15769:1;15779:113;15793:6;15790:1;15787:13;15779:113;;;15878:1;15873:3;15869:11;15863:18;15859:1;15854:3;15850:11;15843:39;15815:2;15812:1;15808:10;15803:15;;15779:113;;;15910:6;15907:1;15904:13;15901:2;;;15990:1;15981:6;15976:3;15972:16;15965:27;15901:2;15750:258;;;;:::o;16014:102::-;;16106:2;16102:7;16097:2;16090:5;16086:14;16082:28;16072:38;;16062:54;;;:::o;16122:122::-;16195:24;16213:5;16195:24;:::i;:::-;16188:5;16185:35;16175:2;;16234:1;16231;16224:12;16175:2;16165:79;:::o;16250:122::-;16323:24;16341:5;16323:24;:::i;:::-;16316:5;16313:35;16303:2;;16362:1;16359;16352:12;16303:2;16293:79;:::o

Swarm Source

ipfs://05220df7c01b42cf201890c518418ec2f6be268011b168760c4ff83b21f0ce35
Block Transaction Gas Used Reward
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
Block Uncle Number Difficulty Gas Used Reward
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.