ETH Price: $1,588.28 (-1.99%)
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Stake Start222066152025-04-06 1:32:5914 days ago1743903179IN
0xFF448ed6...865Aea029
0 ETH0.000147370.47515845
Stake End222066092025-04-06 1:31:4714 days ago1743903107IN
0xFF448ed6...865Aea029
0 ETH0.000189690.41700749
Stake Start221705602025-04-01 0:45:2319 days ago1743468323IN
0xFF448ed6...865Aea029
0 ETH0.000936253.01851935
Stake End221705482025-04-01 0:42:4719 days ago1743468167IN
0xFF448ed6...865Aea029
0 ETH0.001174752.91565791
Stake Start221685782025-03-31 18:07:3520 days ago1743444455IN
0xFF448ed6...865Aea029
0 ETH0.001057353.37819694
Stake End221685722025-03-31 18:06:1120 days ago1743444371IN
0xFF448ed6...865Aea029
0 ETH0.00165143.44065863
Stake Start221014682025-03-22 9:16:5929 days ago1742635019IN
0xFF448ed6...865Aea029
0 ETH0.000146860.47348702
Stake Start220168972025-03-10 13:53:3541 days ago1741614815IN
0xFF448ed6...865Aea029
0 ETH0.001563784.70410291
Stake End219922142025-03-07 3:06:5944 days ago1741316819IN
0xFF448ed6...865Aea029
0 ETH0.000310080.65
Stake Start219849112025-03-06 2:37:2345 days ago1741228643IN
0xFF448ed6...865Aea029
0 ETH0.000965363.08453962
Stake End219849042025-03-06 2:35:5945 days ago1741228559IN
0xFF448ed6...865Aea029
0 ETH0.001490293.10491566
Stake Start219490902025-03-01 2:40:3550 days ago1740796835IN
0xFF448ed6...865Aea029
0 ETH0.001027693.36527954
Stake End219490802025-03-01 2:38:3550 days ago1740796715IN
0xFF448ed6...865Aea029
0 ETH0.001300093.37009844
Stake Start219420722025-02-28 3:11:4751 days ago1740712307IN
0xFF448ed6...865Aea029
0 ETH0.0032437810.36376735
Stake End219420682025-02-28 3:10:5951 days ago1740712259IN
0xFF448ed6...865Aea029
0 ETH0.0051493711.25013078
Stake End218339582025-02-13 0:22:3566 days ago1739406155IN
0xFF448ed6...865Aea029
0 ETH0.000590443.2416469
Stake Start217722102025-02-04 9:21:4775 days ago1738660907IN
0xFF448ed6...865Aea029
0 ETH0.000570431.83909821
Stake End217722012025-02-04 9:19:5975 days ago1738660799IN
0xFF448ed6...865Aea029
0 ETH0.000917571.85644161
Stake Start217644122025-02-03 7:12:2376 days ago1738566743IN
0xFF448ed6...865Aea029
0 ETH0.0040685913
Stake End217644072025-02-03 7:11:2376 days ago1738566683IN
0xFF448ed6...865Aea029
0 ETH0.0076050115.84446463
Stake Start217196602025-01-28 1:11:4782 days ago1738026707IN
0xFF448ed6...865Aea029
0 ETH0.001837695.871353
Stake End217196452025-01-28 1:08:4782 days ago1738026527IN
0xFF448ed6...865Aea029
0 ETH0.002899256.33450587
Stake Start217034702025-01-25 18:59:3585 days ago1737831575IN
0xFF448ed6...865Aea029
0 ETH0.002347557.56862414
Stake End217034532025-01-25 18:56:1185 days ago1737831371IN
0xFF448ed6...865Aea029
0 ETH0.002177995.40600715
Stake Start215409942025-01-03 2:33:11107 days ago1735871591IN
0xFF448ed6...865Aea029
0 ETH0.0033699810.86498461
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
FairHexStaking

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-11-26
*/

//SPDX-License-Identifier: UNLICENSED
/*

FairHEX is a reflection token built on top of HEX

Claim your free FairHEX token

Website : https://fairhex.eth.limo

*/

pragma solidity ^0.8.17;

abstract contract ReentrancyGuard {
    uint256 private constant _NOT_ENTERED = 1;
    uint256 private constant _ENTERED = 2;

    uint256 private _status;

    constructor() {
        _status = _NOT_ENTERED;
    }

    modifier nonReentrant() {
        require(_status != _ENTERED, "ReentrancyGuard: reentrant call");
        _status = _ENTERED;
        _;
        _status = _NOT_ENTERED;
    }
}

contract TOKEN1 {
    function balanceOf(address account) external view returns (uint256) {}
    function transfer(address recipient, uint256 amount) external returns (bool) {}
}

contract TOKEN2 {
    function balanceOf(address account) external view returns (uint256) {}
    function transfer(address recipient, uint256 amount) external returns (bool) {}
    function approve(address spender, uint256 amount) external returns (bool) {}
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool) {}
    function stakeStart(uint256 newStakedHearts, uint256 newStakedDays) external {}
    function stakeEnd(uint256 stakeIndex, uint40 stakeIdParam) external {}
    function stakeGoodAccounting(address stakerAddr, uint256 stakeIndex, uint40 stakeIdParam) external {}
    function stakeCount(address stakerAddr) external view returns (uint256) {}
    function stakeLists(address owner, uint256 stakeIndex) external view returns (uint40, uint72, uint72, uint16, uint16, uint16, bool) {}
    function currentDay() external view returns (uint256) {}
}

contract TOKEN3 {
    function balanceOf(address account) external view returns (uint256) {}
    function transfer(address recipient, uint256 amount) external returns (bool) {}
    function mintNative(uint256 stakeIndex, uint40 stakeId) external returns (uint256) {}
}

contract UniSwapV2LiteRouter {
    function swapExactTokensForTokens(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts) {}
}

contract FairHexStaking is ReentrancyGuard {
    modifier onlyCustodian() {
        require(msg.sender == custodian);
        _;
    }

    event onStakeStart(
        address indexed customerAddress,
        uint256 uniqueID,
        uint256 timestamp
    );

    event onStakeEnd(
        address indexed customerAddress,
        uint256 uniqueID,
        uint256 returnAmount,
        uint256 fairHexAmount,
        uint256 timestamp
    );

    uint256 public totalStakeBalance = 0;
    bool public finalizeAddress = false;
    bool public normalStaking = false;
    address public custodian = address(0x12414A2144b6048010c1b0fe67f25072E06DC0B1);

    address private fairHexAddress = address(0x0);
    address private hexAddress = address(0x2b591e99afE9f32eAA6214f7B7629768c40Eeb39);
    address private hedronAddress = address(0x3819f64f282bf135d62168C1e513280dAF905e06);
    address private routerAddress = address(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
    TOKEN1 fairHexToken = TOKEN1(fairHexAddress);
    TOKEN2 hexToken = TOKEN2(hexAddress);
    TOKEN3 hedronToken=  TOKEN3(hedronAddress);
    UniSwapV2LiteRouter private router = UniSwapV2LiteRouter(routerAddress);

    struct StakeStore {
      uint40 stakeID;
      uint256 hexAmount;
      uint72 stakeShares;
      uint16 lockedDay;
      uint16 stakedDays;
      uint16 unlockedDay;
      bool started;
      bool ended;
      uint256 bonusMultiplier;
      bool mintState;
    }

    uint256 public totalMinted = 0;
    uint256 public currentBonusMultiplier = 40;
    uint256 public minimumHex = 100000000000;
    mapping(address => mapping(uint256 => StakeStore)) public stakeLists;
    mapping(address => bool) public hexStaking;
    mapping(address => bool) public allowHedron;

    constructor() ReentrancyGuard() {
        hexToken.approve(routerAddress, type(uint256).max);
    }

    function checkAndTransferHEX(uint256 _amount) private {
        require(hexToken.transferFrom(msg.sender, address(this), _amount) == true, "transfer must succeed");
    }

    function updateTotalStakeBalanceAndBonusMultiplier(bool start, uint256 _amount) private {
        if (start == true) {
          totalStakeBalance += _amount;
        } else {
          totalStakeBalance -= _amount;
        }

        if (totalStakeBalance >= 20000000000000000 ) {
          currentBonusMultiplier = 20;
        } else {
          currentBonusMultiplier = 40 - (totalStakeBalance / 1000000000000000);
        }
    }

    function stakeStart(uint256 _amount, uint256 _days) nonReentrant external {
        require(_amount >= minimumHex && _amount <= 4722366482869645213695);
        require(hexToken.stakeCount(address(this)) < type(uint256).max);

        checkAndTransferHEX(_amount);

        bool _mintState;

        if (totalMinted < 5000000e18) {
          require(_days == 7 || _days == 15 || _days == 30);
          uint256 _mintAmount;

          if (_days == 7) {
            _mintAmount = _amount * 1e10 / 514;
          } else if (_days == 15) {
            _mintAmount = _amount * 1e10 / 240;
          } else if (_days == 30) {
            _mintAmount = _amount * 1e10 / 120;
          }
          
          _mintState = true;

          if ((totalMinted + _mintAmount) <= 5000000e18) {
            totalMinted += _mintAmount;
          } else {
            _mintAmount = 5000000e18 - totalMinted;
            totalMinted = 5000000e18;
          }

          fairHexToken.transfer(msg.sender, _mintAmount);
        }

        hexToken.stakeStart(_amount, _days);
        updateTotalStakeBalanceAndBonusMultiplier(true, _amount);

        uint256 _stakeIndex;
        uint40 _stakeID;
        uint72 _stakeShares;
        uint16 _lockedDay;
        uint16 _stakedDays;

        _stakeIndex = hexToken.stakeCount(address(this));
        _stakeIndex -= 1;
        (_stakeID,,_stakeShares,_lockedDay,_stakedDays,,) = hexToken.stakeLists(address(this), _stakeIndex);

        uint256 _uniqueID =  uint256(keccak256(abi.encodePacked(_stakeID, _stakeShares)));
        require(stakeLists[msg.sender][_uniqueID].started == false);
        stakeLists[msg.sender][_uniqueID].started = true;

        stakeLists[msg.sender][_uniqueID] = StakeStore(_stakeID, _amount, _stakeShares, _lockedDay, _stakedDays, uint16(0), true, false, currentBonusMultiplier, _mintState);

        emit onStakeStart(msg.sender, _uniqueID, block.timestamp);
    }

    function _stakeSecurityCheck(address _stakerAddress, uint256 _stakeIndex, uint40 _stakeIdParam, uint256 _uniqueID) private view returns (uint16) {
        uint40 _stakeID;
        uint72 _stakedHearts;
        uint72 _stakeShares;
        uint16 _lockedDay;
        uint16 _stakedDays;
        uint16 _unlockedDay;

        (_stakeID,_stakedHearts,_stakeShares,_lockedDay,_stakedDays,_unlockedDay,) = hexToken.stakeLists(address(this), _stakeIndex);
        require(stakeLists[_stakerAddress][_uniqueID].started == true && stakeLists[_stakerAddress][_uniqueID].ended == false);
        require(stakeLists[_stakerAddress][_uniqueID].stakeID == _stakeIdParam && _stakeIdParam == _stakeID);
        require(stakeLists[_stakerAddress][_uniqueID].hexAmount == uint256(_stakedHearts));
        require(stakeLists[_stakerAddress][_uniqueID].stakeShares == _stakeShares);
        require(stakeLists[_stakerAddress][_uniqueID].lockedDay == _lockedDay);
        require(stakeLists[_stakerAddress][_uniqueID].stakedDays == _stakedDays);

        return _unlockedDay;
    }

    function _stakeEnd(address _stakerAddress, uint256 _stakeIndex, uint40 _stakeIdParam, uint256 _uniqueID, uint256 _amountOutMin) private {
        uint16 _unlockedDay = _stakeSecurityCheck(_stakerAddress, _stakeIndex, _stakeIdParam, _uniqueID);
        uint16 _currentDay = uint16(hexToken.currentDay());

        if (_unlockedDay == 0) {
          stakeLists[_stakerAddress][_uniqueID].unlockedDay = _currentDay;
        } else {
          stakeLists[_stakerAddress][_uniqueID].unlockedDay = _unlockedDay;
        }

        uint256 _balance = hexToken.balanceOf(address(this));

        if (allowHedron[_stakerAddress] == true && _currentDay >= stakeLists[_stakerAddress][_uniqueID].lockedDay) {
            hedronToken.mintNative(_stakeIndex, _stakeIdParam);
            hedronToken.transfer(_stakerAddress, hedronToken.balanceOf(address(this)));
        }

        hexToken.stakeEnd(_stakeIndex, _stakeIdParam);
        stakeLists[_stakerAddress][_uniqueID].ended = true;

        uint256 _amount = hexToken.balanceOf(address(this)) - _balance;
        uint256 _stakedAmount = stakeLists[_stakerAddress][_uniqueID].hexAmount;
        uint256 _bonusDividend;

        if (stakeLists[_stakerAddress][_uniqueID].mintState && _currentDay < (stakeLists[_stakerAddress][_uniqueID].lockedDay + stakeLists[_stakerAddress][_uniqueID].stakedDays)) {
          require(false, "minters cannot end pending or early stakes");
        } else if (_currentDay < stakeLists[_stakerAddress][_uniqueID].lockedDay) {
          uint256 _pendingStakefee = _amount / 100;
          swapAndReceive(address(this), _pendingStakefee, _amountOutMin);
          _amount -=  _pendingStakefee;
          hexToken.transfer(_stakerAddress, _amount);
        } else if (_amount <= _stakedAmount || hexStaking[_stakerAddress] == true) {
          hexToken.transfer(_stakerAddress, _amount);
        } else if (_amount > _stakedAmount) {
          uint256 _bonusAmount;
          uint256 _difference = _amount - _stakedAmount;
          hexToken.transfer(_stakerAddress, _stakedAmount);
          _bonusDividend = swapAndReceive(_stakerAddress, _difference, _amountOutMin);
          _bonusAmount = _bonusDividend * stakeLists[_stakerAddress][_uniqueID].bonusMultiplier / 100;

          if (_bonusAmount > 0) {
            if (fairHexToken.balanceOf(address(this)) >= _bonusAmount) {
              fairHexToken.transfer(_stakerAddress, _bonusAmount);
            } else {
              fairHexToken.transfer(_stakerAddress, fairHexToken.balanceOf(address(this)));
            }
          }
        }

        updateTotalStakeBalanceAndBonusMultiplier(false, _stakedAmount);

        emit onStakeEnd(_stakerAddress, _uniqueID, _amount, _bonusDividend, block.timestamp);
    }

    function stakeEnd(uint256 _stakeIndex, uint40 _stakeIdParam, uint256 _uniqueID, uint256 _amountOutMin) nonReentrant external {
        _stakeEnd(msg.sender, _stakeIndex, _stakeIdParam, _uniqueID, _amountOutMin);
    }

    function swapAndReceive(address _receiver, uint256 _hex, uint256 _amountOutMin) private returns (uint256) {
        address[] memory path = new address[](2);
        path[0] = hexAddress;
        path[1] = fairHexAddress;
        uint[] memory _amounts = router.swapExactTokensForTokens(_hex, _amountOutMin, path, address(this), block.timestamp);

        if (_amounts[1] > 0) {
          fairHexToken.transfer(_receiver, _amounts[1]);
        }

        return _amounts[1];
    }

    function revertToHexStaking() onlyCustodian external {
        normalStaking = true;
    }

    function toggleHexStaking() external {
        require (normalStaking == true);

        if (hexStaking[msg.sender] == false) {
          hexStaking[msg.sender] = true;
        } else {
          hexStaking[msg.sender] = false;
        }
    }

    function toggleHedron() external {
        if (allowHedron[msg.sender] == false) {
          allowHedron[msg.sender] = true;
        } else {
          allowHedron[msg.sender] = false;
        }
    }

    function reApproveContractForUniswap() external {
        hexToken.approve(routerAddress, type(uint256).max);
    }

    function setTokenAddress(address _proposedAddress) onlyCustodian external {
        require(finalizeAddress == false);
        fairHexAddress = _proposedAddress;
        fairHexToken = TOKEN1(fairHexAddress);
    }

    function finalizeTokenAddress() onlyCustodian external {
        finalizeAddress = true;
    }
}

/*

THE CONTRACT, SUPPORTING WEBSITES, AND ALL OTHER INTERFACES (THE SOFTWARE) IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.

BY INTERACTING WITH THE SOFTWARE YOU ARE ASSERTING THAT YOU BEAR ALL THE RISKS ASSOCIATED WITH DOING SO. AN INFINITE NUMBER OF UNPREDICTABLE THINGS MAY GO WRONG WHICH COULD POTENTIALLY RESULT IN CRITICAL FAILURE AND FINANCIAL LOSS. BY INTERACTING WITH THE SOFTWARE YOU ARE ASSERTING THAT YOU AGREE THERE IS NO RECOURSE AVAILABLE AND YOU WILL NOT SEEK IT.

INTERACTING WITH THE SOFTWARE SHALL NOT BE CONSIDERED AN INVESTMENT OR A COMMON ENTERPRISE. INSTEAD, INTERACTING WITH THE SOFTWARE IS EQUIVALENT TO CARPOOLING WITH FRIENDS TO SAVE ON GAS AND EXPERIENCE THE BENEFITS OF THE H.O.V. LANE.

YOU SHALL HAVE NO EXPECTATION OF PROFIT OR ANY TYPE OF GAIN FROM THE WORK OF OTHER PEOPLE.

*/

Contract Security Audit

Contract ABI

API
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"customerAddress","type":"address"},{"indexed":false,"internalType":"uint256","name":"uniqueID","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"returnAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"fairHexAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"onStakeEnd","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"customerAddress","type":"address"},{"indexed":false,"internalType":"uint256","name":"uniqueID","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"onStakeStart","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"allowHedron","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentBonusMultiplier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"custodian","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"finalizeAddress","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"finalizeTokenAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"hexStaking","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minimumHex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"normalStaking","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"reApproveContractForUniswap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"revertToHexStaking","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_proposedAddress","type":"address"}],"name":"setTokenAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_stakeIndex","type":"uint256"},{"internalType":"uint40","name":"_stakeIdParam","type":"uint40"},{"internalType":"uint256","name":"_uniqueID","type":"uint256"},{"internalType":"uint256","name":"_amountOutMin","type":"uint256"}],"name":"stakeEnd","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"stakeLists","outputs":[{"internalType":"uint40","name":"stakeID","type":"uint40"},{"internalType":"uint256","name":"hexAmount","type":"uint256"},{"internalType":"uint72","name":"stakeShares","type":"uint72"},{"internalType":"uint16","name":"lockedDay","type":"uint16"},{"internalType":"uint16","name":"stakedDays","type":"uint16"},{"internalType":"uint16","name":"unlockedDay","type":"uint16"},{"internalType":"bool","name":"started","type":"bool"},{"internalType":"bool","name":"ended","type":"bool"},{"internalType":"uint256","name":"bonusMultiplier","type":"uint256"},{"internalType":"bool","name":"mintState","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"uint256","name":"_days","type":"uint256"}],"name":"stakeStart","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"toggleHedron","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"toggleHexStaking","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalMinted","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalStakeBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}]

608060405260006001819055600280546001600160b01b0319167512414a2144b6048010c1b0fe67f25072e06dc0b10000179055600380546001600160a01b031990811690915560048054732b591e99afe9f32eaa6214f7b7629768c40eeb39908316811790915560058054733819f64f282bf135d62168c1e513280daf905e06908416811790915560068054737a250d5630b4cf539739df2c5dacb4c659f2488d908516811790915560078054851690556008805485169093179092556009805484169091179055600a8054909216179055600b556028600c5564174876e800600d55348015620000f057600080fd5b50600160005560085460065460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af11580156200014d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200017391906200017a565b50620001a5565b6000602082840312156200018d57600080fd5b815180151581146200019e57600080fd5b9392505050565b61207880620001b56000396000f3fe608060405234801561001057600080fd5b50600436106101165760003560e01c80638ff2e70b116100a2578063dbc9ae0311610071578063dbc9ae03146102fa578063f09c899414610303578063f783b5621461030b578063f8d9752714610313578063fd115c2b1461033657600080fd5b80638ff2e70b146102cd5780639474715d146102d55780639abc186a146102e8578063a2309ff8146102f157600080fd5b8063375b74c3116100e9578063375b74c31461025257806352a438b81461028357806352e9f1f714610296578063615be711146102b3578063657438b4146102bb57600080fd5b8063202a3bcf1461011b5780632607443b1461012557806326a4e8d21461022857806334949cc11461023b575b600080fd5b610123610359565b005b6101b7610133366004611c7e565b600e6020908152600092835260408084209091529082529020805460018201546002830154600384015460049094015464ffffffffff9093169391926001600160481b0382169261ffff600160481b8404811693600160581b8104821693600160681b82049092169260ff600160781b8304811693600160801b909304811692168a565b6040805164ffffffffff909b168b5260208b01999099526001600160481b039097169789019790975261ffff94851660608901529284166080880152921660a086015290151560c0850152151560e08401526101008301919091521515610120820152610140015b60405180910390f35b610123610236366004611ca8565b6103a9565b61024460015481565b60405190815260200161021f565b60025461026b906201000090046001600160a01b031681565b6040516001600160a01b03909116815260200161021f565b610123610291366004611cca565b610402565b6002546102a39060ff1681565b604051901515815260200161021f565b610123610aff565b6002546102a390610100900460ff1681565b610123610b7d565b6101236102e3366004611cff565b610be7565b610244600c5481565b610244600b5481565b610244600d5481565b610123610c56565b610123610c82565b6102a3610321366004611ca8565b600f6020526000908152604090205460ff1681565b6102a3610344366004611ca8565b60106020526000908152604090205460ff1681565b3360009081526010602052604081205460ff161515900361039057336000908152601060205260409020805460ff19166001179055565b336000908152601060205260409020805460ff19169055565b6002546201000090046001600160a01b031633146103c657600080fd5b60025460ff16156103d657600080fd5b600380546001600160a01b039092166001600160a01b0319928316811790915560078054909216179055565b6002600054036104595760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b6002600055600d54821080159061047757506001600160481b038211155b61048057600080fd5b60085460405163033060d960e41b8152306004820152600019916001600160a01b0316906333060d9090602401602060405180830381865afa1580156104ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104ee9190611d3c565b106104f857600080fd5b61050182610cb0565b60006a0422ca8b0a00a425000000600b541015610689578160071480610527575081600f145b80610532575081601e145b61053b57600080fd5b60008260070361056857610202610557856402540be400611d6b565b6105619190611d88565b90506105a7565b82600f036105815760f0610557856402540be400611d6b565b82601e036105a757607861059a856402540be400611d6b565b6105a49190611d88565b90505b600191506a0422ca8b0a00a42500000081600b546105c59190611daa565b116105e75780600b60008282546105dc9190611daa565b909155506106119050565b600b546105ff906a0422ca8b0a00a425000000611dbd565b6a0422ca8b0a00a425000000600b5590505b60075460405163a9059cbb60e01b81526001600160a01b039091169063a9059cbb906106439033908590600401611dd0565b6020604051808303816000875af1158015610662573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106869190611df9565b50505b600854604051630a54871760e31b815260048101859052602481018490526001600160a01b03909116906352a438b890604401600060405180830381600087803b1580156106d657600080fd5b505af11580156106ea573d6000803e3d6000fd5b505050506106f9600184610d74565b60085460405163033060d960e41b815230600482015260009182918291829182916001600160a01b0316906333060d9090602401602060405180830381865afa15801561074a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061076e9190611d3c565b945061077b600186611dbd565b600854604051632607443b60e01b81529196506001600160a01b031690632607443b906107ae9030908990600401611dd0565b60e060405180830381865afa1580156107cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107ef9190611e3d565b50506040516001600160d81b031960d887901b1660208201526001600160b81b031960b885901b16602582015294985091965094509250600091602e01905060408051808303601f190181529181528151602092830120336000908152600e8452828120828252909352912060020154909150600160781b900460ff161561087657600080fd5b6001600e6000336001600160a01b03166001600160a01b031681526020019081526020016000206000838152602001908152602001600020600201600f6101000a81548160ff0219169083151502179055506040518061014001604052808664ffffffffff1681526020018a8152602001856001600160481b031681526020018461ffff1681526020018361ffff168152602001600061ffff168152602001600115158152602001600015158152602001600c548152602001881515815250600e6000336001600160a01b03166001600160a01b03168152602001908152602001600020600083815260200190815260200160002060008201518160000160006101000a81548164ffffffffff021916908364ffffffffff1602179055506020820151816001015560408201518160020160006101000a8154816001600160481b0302191690836001600160481b0316021790555060608201518160020160096101000a81548161ffff021916908361ffff160217905550608082015181600201600b6101000a81548161ffff021916908361ffff16021790555060a082015181600201600d6101000a81548161ffff021916908361ffff16021790555060c082015181600201600f6101000a81548160ff02191690831515021790555060e08201518160020160106101000a81548160ff02191690831515021790555061010082015181600301556101208201518160040160006101000a81548160ff021916908315150217905550905050336001600160a01b03167ffcb8123dad95f24c74ef07cb7e9635f8bfabd8882383ff341ce8999eb7aa38608242604051610ae7929190918252602082015260400190565b60405180910390a25050600160005550505050505050565b60085460065460405163095ea7b360e01b81526001600160a01b039283169263095ea7b392610b379291169060001990600401611dd0565b6020604051808303816000875af1158015610b56573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b7a9190611df9565b50565b60025460ff610100909104161515600114610b9757600080fd5b336000908152600f602052604081205460ff1615159003610bce57336000908152600f60205260409020805460ff19166001179055565b336000908152600f60205260409020805460ff19169055565b600260005403610c395760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610450565b6002600055610c4b3385858585610df3565b505060016000555050565b6002546201000090046001600160a01b03163314610c7357600080fd5b6002805460ff19166001179055565b6002546201000090046001600160a01b03163314610c9f57600080fd5b6002805461ff001916610100179055565b6008546040516323b872dd60e01b8152336004820152306024820152604481018390526001600160a01b03909116906323b872dd906064016020604051808303816000875af1158015610d07573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d2b9190611df9565b1515600114610b7a5760405162461bcd60e51b81526020600482015260156024820152741d1c985b9cd9995c881b5d5cdd081cdd58d8d95959605a1b6044820152606401610450565b811515600103610d9b578060016000828254610d909190611daa565b90915550610db39050565b8060016000828254610dad9190611dbd565b90915550505b66470de4df82000060015410610dcc576014600c555050565b66038d7ea4c68000600154610de19190611d88565b610dec906028611dbd565b600c555050565b6000610e01868686866117f7565b90506000600860009054906101000a90046001600160a01b03166001600160a01b0316635c9302c96040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e58573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e7c9190611d3c565b90508161ffff16600003610ecd576001600160a01b0387166000908152600e602090815260408083208784529091529020600201805461ffff60681b1916600160681b61ffff841602179055610f0c565b6001600160a01b0387166000908152600e602090815260408083208784529091529020600201805461ffff60681b1916600160681b61ffff8516021790555b6008546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015610f55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f799190611d3c565b6001600160a01b03891660009081526010602052604090205490915060ff1615156001148015610fde57506001600160a01b0388166000908152600e6020908152604080832088845290915290206002015461ffff600160481b909104811690831610155b1561113857600954604051633e04ae6960e21b81526004810189905264ffffffffff881660248201526001600160a01b039091169063f812b9a4906044016020604051808303816000875af115801561103b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061105f9190611d3c565b506009546040516370a0823160e01b81523060048201526001600160a01b039091169063a9059cbb908a9083906370a0823190602401602060405180830381865afa1580156110b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110d69190611d3c565b6040518363ffffffff1660e01b81526004016110f3929190611dd0565b6020604051808303816000875af1158015611112573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111369190611df9565b505b600854604051631a1804d160e11b81526004810189905264ffffffffff881660248201526001600160a01b039091169063343009a290604401600060405180830381600087803b15801561118b57600080fd5b505af115801561119f573d6000803e3d6000fd5b505050506001600160a01b038881166000908152600e60209081526040808320898452909152808220600201805460ff60801b1916600160801b17905560085490516370a0823160e01b8152306004820152919284929116906370a0823190602401602060405180830381865afa15801561121e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112429190611d3c565b61124c9190611dbd565b6001600160a01b038a166000908152600e602090815260408083208a8452909152812060018101546004909101549293509160ff1680156112d857506001600160a01b038b166000908152600e602090815260408083208b84529091529020600201546112cd9061ffff600160581b8204811691600160481b900416611ec5565b61ffff168561ffff16105b156113385760405162461bcd60e51b815260206004820152602a60248201527f6d696e746572732063616e6e6f7420656e642070656e64696e67206f72206561604482015269726c79207374616b657360b01b6064820152608401610450565b6001600160a01b038b166000908152600e602090815260408083208b845290915290206002015461ffff600160481b90910481169086161015611417576000611382606485611d88565b905061138f30828a611a7a565b5061139a8185611dbd565b60085460405163a9059cbb60e01b81529195506001600160a01b03169063a9059cbb906113cd908f908890600401611dd0565b6020604051808303816000875af11580156113ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114109190611df9565b505061178d565b818311158061144357506001600160a01b038b166000908152600f602052604090205460ff1615156001145b156114c35760085460405163a9059cbb60e01b81526001600160a01b039091169063a9059cbb9061147a908e908790600401611dd0565b6020604051808303816000875af1158015611499573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114bd9190611df9565b5061178d565b8183111561178d576000806114d88486611dbd565b9050600860009054906101000a90046001600160a01b03166001600160a01b031663a9059cbb8e866040518363ffffffff1660e01b815260040161151d929190611dd0565b6020604051808303816000875af115801561153c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115609190611df9565b5061156c8d828b611a7a565b6001600160a01b038e166000908152600e602090815260408083208e84529091529020600301549093506064906115a39085611d6b565b6115ad9190611d88565b9150811561178a576007546040516370a0823160e01b815230600482015283916001600160a01b0316906370a0823190602401602060405180830381865afa1580156115fd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116219190611d3c565b106116b257600760009054906101000a90046001600160a01b03166001600160a01b031663a9059cbb8e846040518363ffffffff1660e01b8152600401611669929190611dd0565b6020604051808303816000875af1158015611688573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116ac9190611df9565b5061178a565b6007546040516370a0823160e01b81523060048201526001600160a01b039091169063a9059cbb908f9083906370a0823190602401602060405180830381865afa158015611704573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117289190611d3c565b6040518363ffffffff1660e01b8152600401611745929190611dd0565b6020604051808303816000875af1158015611764573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117889190611df9565b505b50505b611798600083610d74565b60408051898152602081018590529081018290524260608201526001600160a01b038c16907f3cfedd205f4a938d3e671ceda6c16675f20d3c7aa1bf7190f572afd767dba2489060800160405180910390a25050505050505050505050565b600854604051632607443b60e01b81526000918291829182918291829182916001600160a01b031690632607443b906118369030908e90600401611dd0565b60e060405180830381865afa158015611853573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118779190611e3d565b50809650819750829850839950849a50859b50505050505050600e60008c6001600160a01b03166001600160a01b031681526020019081526020016000206000898152602001908152602001600020600201600f9054906101000a900460ff1615156001151514801561191857506001600160a01b038b166000908152600e602090815260408083208b8452909152902060020154600160801b900460ff16155b61192157600080fd5b6001600160a01b038b166000908152600e602090815260408083208b845290915290205464ffffffffff8a8116911614801561196a57508564ffffffffff168964ffffffffff16145b61197357600080fd5b6001600160a01b038b166000908152600e602090815260408083208b84529091529020600101546001600160481b038616146119ae57600080fd5b6001600160a01b038b166000908152600e602090815260408083208b84529091529020600201546001600160481b038581169116146119ec57600080fd5b6001600160a01b038b166000908152600e602090815260408083208b845290915290206002015461ffff848116600160481b9092041614611a2c57600080fd5b6001600160a01b038b166000908152600e602090815260408083208b845290915290206002015461ffff838116600160581b9092041614611a6c57600080fd5b9a9950505050505050505050565b60408051600280825260608201835260009283929190602083019080368337505060045482519293506001600160a01b031691839150600090611abf57611abf611efd565b6001600160a01b039283166020918202929092010152600354825191169082906001908110611af057611af0611efd565b6001600160a01b039283166020918202929092010152600a546040516338ed173960e01b815260009291909116906338ed173990611b3a9088908890879030904290600401611f13565b6000604051808303816000875af1158015611b59573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611b819190810190611f84565b9050600081600181518110611b9857611b98611efd565b60200260200101511115611c3c5760075481516001600160a01b039091169063a9059cbb90889084906001908110611bd257611bd2611efd565b60200260200101516040518363ffffffff1660e01b8152600401611bf7929190611dd0565b6020604051808303816000875af1158015611c16573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c3a9190611df9565b505b80600181518110611c4f57611c4f611efd565b6020026020010151925050509392505050565b80356001600160a01b0381168114611c7957600080fd5b919050565b60008060408385031215611c9157600080fd5b611c9a83611c62565b946020939093013593505050565b600060208284031215611cba57600080fd5b611cc382611c62565b9392505050565b60008060408385031215611cdd57600080fd5b50508035926020909101359150565b64ffffffffff81168114610b7a57600080fd5b60008060008060808587031215611d1557600080fd5b843593506020850135611d2781611cec565b93969395505050506040820135916060013590565b600060208284031215611d4e57600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417611d8257611d82611d55565b92915050565b600082611da557634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115611d8257611d82611d55565b81810381811115611d8257611d82611d55565b6001600160a01b03929092168252602082015260400190565b80518015158114611c7957600080fd5b600060208284031215611e0b57600080fd5b611cc382611de9565b80516001600160481b0381168114611c7957600080fd5b805161ffff81168114611c7957600080fd5b600080600080600080600060e0888a031215611e5857600080fd5b8751611e6381611cec565b9650611e7160208901611e14565b9550611e7f60408901611e14565b9450611e8d60608901611e2b565b9350611e9b60808901611e2b565b9250611ea960a08901611e2b565b9150611eb760c08901611de9565b905092959891949750929550565b61ffff818116838216019080821115611ee057611ee0611d55565b5092915050565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611f635784516001600160a01b031683529383019391830191600101611f3e565b50506001600160a01b03969096166060850152505050608001529392505050565b60006020808385031215611f9757600080fd5b825167ffffffffffffffff80821115611faf57600080fd5b818501915085601f830112611fc357600080fd5b815181811115611fd557611fd5611ee7565b8060051b604051601f19603f83011681018181108582111715611ffa57611ffa611ee7565b60405291825284820192508381018501918883111561201857600080fd5b938501935b828510156120365784518452938501939285019261201d565b9897505050505050505056fea2646970667358221220fb063bd9330bdbd2786340b5d7d2bd05c60440e2e9fc4d4dc131e38aeb1124fa64736f6c63430008110033

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101165760003560e01c80638ff2e70b116100a2578063dbc9ae0311610071578063dbc9ae03146102fa578063f09c899414610303578063f783b5621461030b578063f8d9752714610313578063fd115c2b1461033657600080fd5b80638ff2e70b146102cd5780639474715d146102d55780639abc186a146102e8578063a2309ff8146102f157600080fd5b8063375b74c3116100e9578063375b74c31461025257806352a438b81461028357806352e9f1f714610296578063615be711146102b3578063657438b4146102bb57600080fd5b8063202a3bcf1461011b5780632607443b1461012557806326a4e8d21461022857806334949cc11461023b575b600080fd5b610123610359565b005b6101b7610133366004611c7e565b600e6020908152600092835260408084209091529082529020805460018201546002830154600384015460049094015464ffffffffff9093169391926001600160481b0382169261ffff600160481b8404811693600160581b8104821693600160681b82049092169260ff600160781b8304811693600160801b909304811692168a565b6040805164ffffffffff909b168b5260208b01999099526001600160481b039097169789019790975261ffff94851660608901529284166080880152921660a086015290151560c0850152151560e08401526101008301919091521515610120820152610140015b60405180910390f35b610123610236366004611ca8565b6103a9565b61024460015481565b60405190815260200161021f565b60025461026b906201000090046001600160a01b031681565b6040516001600160a01b03909116815260200161021f565b610123610291366004611cca565b610402565b6002546102a39060ff1681565b604051901515815260200161021f565b610123610aff565b6002546102a390610100900460ff1681565b610123610b7d565b6101236102e3366004611cff565b610be7565b610244600c5481565b610244600b5481565b610244600d5481565b610123610c56565b610123610c82565b6102a3610321366004611ca8565b600f6020526000908152604090205460ff1681565b6102a3610344366004611ca8565b60106020526000908152604090205460ff1681565b3360009081526010602052604081205460ff161515900361039057336000908152601060205260409020805460ff19166001179055565b336000908152601060205260409020805460ff19169055565b6002546201000090046001600160a01b031633146103c657600080fd5b60025460ff16156103d657600080fd5b600380546001600160a01b039092166001600160a01b0319928316811790915560078054909216179055565b6002600054036104595760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b6002600055600d54821080159061047757506001600160481b038211155b61048057600080fd5b60085460405163033060d960e41b8152306004820152600019916001600160a01b0316906333060d9090602401602060405180830381865afa1580156104ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104ee9190611d3c565b106104f857600080fd5b61050182610cb0565b60006a0422ca8b0a00a425000000600b541015610689578160071480610527575081600f145b80610532575081601e145b61053b57600080fd5b60008260070361056857610202610557856402540be400611d6b565b6105619190611d88565b90506105a7565b82600f036105815760f0610557856402540be400611d6b565b82601e036105a757607861059a856402540be400611d6b565b6105a49190611d88565b90505b600191506a0422ca8b0a00a42500000081600b546105c59190611daa565b116105e75780600b60008282546105dc9190611daa565b909155506106119050565b600b546105ff906a0422ca8b0a00a425000000611dbd565b6a0422ca8b0a00a425000000600b5590505b60075460405163a9059cbb60e01b81526001600160a01b039091169063a9059cbb906106439033908590600401611dd0565b6020604051808303816000875af1158015610662573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106869190611df9565b50505b600854604051630a54871760e31b815260048101859052602481018490526001600160a01b03909116906352a438b890604401600060405180830381600087803b1580156106d657600080fd5b505af11580156106ea573d6000803e3d6000fd5b505050506106f9600184610d74565b60085460405163033060d960e41b815230600482015260009182918291829182916001600160a01b0316906333060d9090602401602060405180830381865afa15801561074a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061076e9190611d3c565b945061077b600186611dbd565b600854604051632607443b60e01b81529196506001600160a01b031690632607443b906107ae9030908990600401611dd0565b60e060405180830381865afa1580156107cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107ef9190611e3d565b50506040516001600160d81b031960d887901b1660208201526001600160b81b031960b885901b16602582015294985091965094509250600091602e01905060408051808303601f190181529181528151602092830120336000908152600e8452828120828252909352912060020154909150600160781b900460ff161561087657600080fd5b6001600e6000336001600160a01b03166001600160a01b031681526020019081526020016000206000838152602001908152602001600020600201600f6101000a81548160ff0219169083151502179055506040518061014001604052808664ffffffffff1681526020018a8152602001856001600160481b031681526020018461ffff1681526020018361ffff168152602001600061ffff168152602001600115158152602001600015158152602001600c548152602001881515815250600e6000336001600160a01b03166001600160a01b03168152602001908152602001600020600083815260200190815260200160002060008201518160000160006101000a81548164ffffffffff021916908364ffffffffff1602179055506020820151816001015560408201518160020160006101000a8154816001600160481b0302191690836001600160481b0316021790555060608201518160020160096101000a81548161ffff021916908361ffff160217905550608082015181600201600b6101000a81548161ffff021916908361ffff16021790555060a082015181600201600d6101000a81548161ffff021916908361ffff16021790555060c082015181600201600f6101000a81548160ff02191690831515021790555060e08201518160020160106101000a81548160ff02191690831515021790555061010082015181600301556101208201518160040160006101000a81548160ff021916908315150217905550905050336001600160a01b03167ffcb8123dad95f24c74ef07cb7e9635f8bfabd8882383ff341ce8999eb7aa38608242604051610ae7929190918252602082015260400190565b60405180910390a25050600160005550505050505050565b60085460065460405163095ea7b360e01b81526001600160a01b039283169263095ea7b392610b379291169060001990600401611dd0565b6020604051808303816000875af1158015610b56573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b7a9190611df9565b50565b60025460ff610100909104161515600114610b9757600080fd5b336000908152600f602052604081205460ff1615159003610bce57336000908152600f60205260409020805460ff19166001179055565b336000908152600f60205260409020805460ff19169055565b600260005403610c395760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610450565b6002600055610c4b3385858585610df3565b505060016000555050565b6002546201000090046001600160a01b03163314610c7357600080fd5b6002805460ff19166001179055565b6002546201000090046001600160a01b03163314610c9f57600080fd5b6002805461ff001916610100179055565b6008546040516323b872dd60e01b8152336004820152306024820152604481018390526001600160a01b03909116906323b872dd906064016020604051808303816000875af1158015610d07573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d2b9190611df9565b1515600114610b7a5760405162461bcd60e51b81526020600482015260156024820152741d1c985b9cd9995c881b5d5cdd081cdd58d8d95959605a1b6044820152606401610450565b811515600103610d9b578060016000828254610d909190611daa565b90915550610db39050565b8060016000828254610dad9190611dbd565b90915550505b66470de4df82000060015410610dcc576014600c555050565b66038d7ea4c68000600154610de19190611d88565b610dec906028611dbd565b600c555050565b6000610e01868686866117f7565b90506000600860009054906101000a90046001600160a01b03166001600160a01b0316635c9302c96040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e58573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e7c9190611d3c565b90508161ffff16600003610ecd576001600160a01b0387166000908152600e602090815260408083208784529091529020600201805461ffff60681b1916600160681b61ffff841602179055610f0c565b6001600160a01b0387166000908152600e602090815260408083208784529091529020600201805461ffff60681b1916600160681b61ffff8516021790555b6008546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015610f55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f799190611d3c565b6001600160a01b03891660009081526010602052604090205490915060ff1615156001148015610fde57506001600160a01b0388166000908152600e6020908152604080832088845290915290206002015461ffff600160481b909104811690831610155b1561113857600954604051633e04ae6960e21b81526004810189905264ffffffffff881660248201526001600160a01b039091169063f812b9a4906044016020604051808303816000875af115801561103b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061105f9190611d3c565b506009546040516370a0823160e01b81523060048201526001600160a01b039091169063a9059cbb908a9083906370a0823190602401602060405180830381865afa1580156110b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110d69190611d3c565b6040518363ffffffff1660e01b81526004016110f3929190611dd0565b6020604051808303816000875af1158015611112573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111369190611df9565b505b600854604051631a1804d160e11b81526004810189905264ffffffffff881660248201526001600160a01b039091169063343009a290604401600060405180830381600087803b15801561118b57600080fd5b505af115801561119f573d6000803e3d6000fd5b505050506001600160a01b038881166000908152600e60209081526040808320898452909152808220600201805460ff60801b1916600160801b17905560085490516370a0823160e01b8152306004820152919284929116906370a0823190602401602060405180830381865afa15801561121e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112429190611d3c565b61124c9190611dbd565b6001600160a01b038a166000908152600e602090815260408083208a8452909152812060018101546004909101549293509160ff1680156112d857506001600160a01b038b166000908152600e602090815260408083208b84529091529020600201546112cd9061ffff600160581b8204811691600160481b900416611ec5565b61ffff168561ffff16105b156113385760405162461bcd60e51b815260206004820152602a60248201527f6d696e746572732063616e6e6f7420656e642070656e64696e67206f72206561604482015269726c79207374616b657360b01b6064820152608401610450565b6001600160a01b038b166000908152600e602090815260408083208b845290915290206002015461ffff600160481b90910481169086161015611417576000611382606485611d88565b905061138f30828a611a7a565b5061139a8185611dbd565b60085460405163a9059cbb60e01b81529195506001600160a01b03169063a9059cbb906113cd908f908890600401611dd0565b6020604051808303816000875af11580156113ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114109190611df9565b505061178d565b818311158061144357506001600160a01b038b166000908152600f602052604090205460ff1615156001145b156114c35760085460405163a9059cbb60e01b81526001600160a01b039091169063a9059cbb9061147a908e908790600401611dd0565b6020604051808303816000875af1158015611499573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114bd9190611df9565b5061178d565b8183111561178d576000806114d88486611dbd565b9050600860009054906101000a90046001600160a01b03166001600160a01b031663a9059cbb8e866040518363ffffffff1660e01b815260040161151d929190611dd0565b6020604051808303816000875af115801561153c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115609190611df9565b5061156c8d828b611a7a565b6001600160a01b038e166000908152600e602090815260408083208e84529091529020600301549093506064906115a39085611d6b565b6115ad9190611d88565b9150811561178a576007546040516370a0823160e01b815230600482015283916001600160a01b0316906370a0823190602401602060405180830381865afa1580156115fd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116219190611d3c565b106116b257600760009054906101000a90046001600160a01b03166001600160a01b031663a9059cbb8e846040518363ffffffff1660e01b8152600401611669929190611dd0565b6020604051808303816000875af1158015611688573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116ac9190611df9565b5061178a565b6007546040516370a0823160e01b81523060048201526001600160a01b039091169063a9059cbb908f9083906370a0823190602401602060405180830381865afa158015611704573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117289190611d3c565b6040518363ffffffff1660e01b8152600401611745929190611dd0565b6020604051808303816000875af1158015611764573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117889190611df9565b505b50505b611798600083610d74565b60408051898152602081018590529081018290524260608201526001600160a01b038c16907f3cfedd205f4a938d3e671ceda6c16675f20d3c7aa1bf7190f572afd767dba2489060800160405180910390a25050505050505050505050565b600854604051632607443b60e01b81526000918291829182918291829182916001600160a01b031690632607443b906118369030908e90600401611dd0565b60e060405180830381865afa158015611853573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118779190611e3d565b50809650819750829850839950849a50859b50505050505050600e60008c6001600160a01b03166001600160a01b031681526020019081526020016000206000898152602001908152602001600020600201600f9054906101000a900460ff1615156001151514801561191857506001600160a01b038b166000908152600e602090815260408083208b8452909152902060020154600160801b900460ff16155b61192157600080fd5b6001600160a01b038b166000908152600e602090815260408083208b845290915290205464ffffffffff8a8116911614801561196a57508564ffffffffff168964ffffffffff16145b61197357600080fd5b6001600160a01b038b166000908152600e602090815260408083208b84529091529020600101546001600160481b038616146119ae57600080fd5b6001600160a01b038b166000908152600e602090815260408083208b84529091529020600201546001600160481b038581169116146119ec57600080fd5b6001600160a01b038b166000908152600e602090815260408083208b845290915290206002015461ffff848116600160481b9092041614611a2c57600080fd5b6001600160a01b038b166000908152600e602090815260408083208b845290915290206002015461ffff838116600160581b9092041614611a6c57600080fd5b9a9950505050505050505050565b60408051600280825260608201835260009283929190602083019080368337505060045482519293506001600160a01b031691839150600090611abf57611abf611efd565b6001600160a01b039283166020918202929092010152600354825191169082906001908110611af057611af0611efd565b6001600160a01b039283166020918202929092010152600a546040516338ed173960e01b815260009291909116906338ed173990611b3a9088908890879030904290600401611f13565b6000604051808303816000875af1158015611b59573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611b819190810190611f84565b9050600081600181518110611b9857611b98611efd565b60200260200101511115611c3c5760075481516001600160a01b039091169063a9059cbb90889084906001908110611bd257611bd2611efd565b60200260200101516040518363ffffffff1660e01b8152600401611bf7929190611dd0565b6020604051808303816000875af1158015611c16573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c3a9190611df9565b505b80600181518110611c4f57611c4f611efd565b6020026020010151925050509392505050565b80356001600160a01b0381168114611c7957600080fd5b919050565b60008060408385031215611c9157600080fd5b611c9a83611c62565b946020939093013593505050565b600060208284031215611cba57600080fd5b611cc382611c62565b9392505050565b60008060408385031215611cdd57600080fd5b50508035926020909101359150565b64ffffffffff81168114610b7a57600080fd5b60008060008060808587031215611d1557600080fd5b843593506020850135611d2781611cec565b93969395505050506040820135916060013590565b600060208284031215611d4e57600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417611d8257611d82611d55565b92915050565b600082611da557634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115611d8257611d82611d55565b81810381811115611d8257611d82611d55565b6001600160a01b03929092168252602082015260400190565b80518015158114611c7957600080fd5b600060208284031215611e0b57600080fd5b611cc382611de9565b80516001600160481b0381168114611c7957600080fd5b805161ffff81168114611c7957600080fd5b600080600080600080600060e0888a031215611e5857600080fd5b8751611e6381611cec565b9650611e7160208901611e14565b9550611e7f60408901611e14565b9450611e8d60608901611e2b565b9350611e9b60808901611e2b565b9250611ea960a08901611e2b565b9150611eb760c08901611de9565b905092959891949750929550565b61ffff818116838216019080821115611ee057611ee0611d55565b5092915050565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611f635784516001600160a01b031683529383019391830191600101611f3e565b50506001600160a01b03969096166060850152505050608001529392505050565b60006020808385031215611f9757600080fd5b825167ffffffffffffffff80821115611faf57600080fd5b818501915085601f830112611fc357600080fd5b815181811115611fd557611fd5611ee7565b8060051b604051601f19603f83011681018181108582111715611ffa57611ffa611ee7565b60405291825284820192508381018501918883111561201857600080fd5b938501935b828510156120365784518452938501939285019261201d565b9897505050505050505056fea2646970667358221220fb063bd9330bdbd2786340b5d7d2bd05c60440e2e9fc4d4dc131e38aeb1124fa64736f6c63430008110033

Deployed Bytecode Sourcemap

2210:10176:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11722:206;;;:::i;:::-;;3849:68;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3849:68:0;;;;-1:-1:-1;;;3849:68:0;;;;;-1:-1:-1;;;3849:68:0;;;;;-1:-1:-1;;;3849:68:0;;;;;;;-1:-1:-1;;;3849:68:0;;;;;-1:-1:-1;;;3849:68:0;;;;;;;;;;;;;852:12:1;840:25;;;822:44;;897:2;882:18;;875:34;;;;-1:-1:-1;;;;;945:33:1;;;925:18;;;918:61;;;;998:6;1040:15;;;1035:2;1020:18;;1013:43;1093:15;;;1087:3;1072:19;;1065:44;1146:15;;1140:3;1125:19;;1118:44;1206:14;;1199:22;1193:3;1178:19;;1171:51;1266:14;1259:22;1253:3;1238:19;;1231:51;1313:3;1298:19;;1291:35;;;;1370:14;1363:22;1357:3;1342:19;;1335:51;809:3;794:19;3849:68:0;;;;;;;;12061:218;;;;;;:::i;:::-;;:::i;2679:36::-;;;;;;;;;1734:25:1;;;1722:2;1707:18;2679:36:0;1588:177:1;2804:78:0;;;;;;;;-1:-1:-1;;;;;2804:78:0;;;;;;-1:-1:-1;;;;;1934:32:1;;;1916:51;;1904:2;1889:18;2804:78:0;1770:203:1;4767:1975:0;;;;;;:::i;:::-;;:::i;2722:35::-;;;;;;;;;;;;2396:14:1;;2389:22;2371:41;;2359:2;2344:18;2722:35:0;2231:187:1;11936:117:0;;;:::i;2764:33::-;;;;;;;;;;;;11463:251;;;:::i;10637:219::-;;;;;;:::i;:::-;;:::i;3753:42::-;;;;;;3716:30;;;;;;3802:40;;;;;;12287:96;;;:::i;11363:92::-;;;:::i;3924:42::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;3973:43;;;;;;:::i;:::-;;;;;;;;;;;;;;;;11722:206;11782:10;11770:23;;;;:11;:23;;;;;;;;:32;;;;11766:155;;11829:10;11817:23;;;;:11;:23;;;;;:30;;-1:-1:-1;;11817:30:0;11843:4;11817:30;;;11722:206::o;11766:155::-;11890:10;11904:5;11878:23;;;:11;:23;;;;;:31;;-1:-1:-1;;11878:31:0;;;11722:206::o;12061:218::-;2318:9;;;;;-1:-1:-1;;;;;2318:9:0;2304:10;:23;2296:32;;;;;;12154:15:::1;::::0;::::1;;:24;12146:33;;;::::0;::::1;;12190:14;:33:::0;;-1:-1:-1;;;;;12190:33:0;;::::1;-1:-1:-1::0;;;;;;12190:33:0;;::::1;::::0;::::1;::::0;;;12234:12:::1;:37:::0;;;;::::1;;::::0;;12061:218::o;4767:1975::-;328:1;476:7;;:19;468:63;;;;-1:-1:-1;;;468:63:0;;3208:2:1;468:63:0;;;3190:21:1;3247:2;3227:18;;;3220:30;3286:33;3266:18;;;3259:61;3337:18;;468:63:0;;;;;;;;;328:1;542:7;:18;4871:10:::1;::::0;4860:21;::::1;::::0;::::1;::::0;:58:::1;;;-1:-1:-1::0;;;;;4885:7:0::1;:33;;4860:58;4852:67;;;::::0;::::1;;4938:8;::::0;:34:::1;::::0;-1:-1:-1;;;4938:34:0;;4966:4:::1;4938:34;::::0;::::1;1916:51:1::0;-1:-1:-1;;4975:17:0;-1:-1:-1;;;;;4938:8:0::1;::::0;:19:::1;::::0;1889:18:1;;4938:34:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:54;4930:63;;;::::0;::::1;;5006:28;5026:7;5006:19;:28::i;:::-;5047:15;5093:10;5079:11;;:24;5075:732;;;5126:5;5135:1;5126:10;:25;;;;5140:5;5149:2;5140:11;5126:25;:40;;;;5155:5;5164:2;5155:11;5126:40;5118:49;;;::::0;::::1;;5180:19;5218:5;5227:1;5218:10:::0;5214:251:::1;;5276:3;5259:14;:7:::0;5269:4:::1;5259:14;:::i;:::-;:20;;;;:::i;:::-;5245:34;;5214:251;;;5303:5;5312:2;5303:11:::0;5299:166:::1;;5362:3;5345:14;:7:::0;5355:4:::1;5345:14;:::i;5299:166::-;5389:5;5398:2;5389:11:::0;5385:80:::1;;5448:3;5431:14;:7:::0;5441:4:::1;5431:14;:::i;:::-;:20;;;;:::i;:::-;5417:34;;5385:80;5502:4;5489:17;;5556:10;5540:11;5526;;:25;;;;:::i;:::-;5525:41;5521:214;;5598:11;5583;;:26;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;5521:214:0::1;::::0;-1:-1:-1;5521:214:0::1;;5671:11;::::0;5658:24:::1;::::0;:10:::1;:24;:::i;:::-;5711:10;5697:11;:24:::0;5644:38;-1:-1:-1;5521:214:0::1;5749:12;::::0;:46:::1;::::0;-1:-1:-1;;;5749:46:0;;-1:-1:-1;;;;;5749:12:0;;::::1;::::0;:21:::1;::::0;:46:::1;::::0;5771:10:::1;::::0;5783:11;;5749:46:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;5105:702;5075:732;5819:8;::::0;:35:::1;::::0;-1:-1:-1;;;5819:35:0;;::::1;::::0;::::1;5174:25:1::0;;;5215:18;;;5208:34;;;-1:-1:-1;;;;;5819:8:0;;::::1;::::0;:19:::1;::::0;5147:18:1;;5819:35:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;5865:56;5907:4;5913:7;5865:41;:56::i;:::-;6093:8;::::0;:34:::1;::::0;-1:-1:-1;;;6093:34:0;;6121:4:::1;6093:34;::::0;::::1;1916:51:1::0;5934:19:0::1;::::0;;;;;;;;;-1:-1:-1;;;;;6093:8:0::1;::::0;:19:::1;::::0;1889:18:1;;6093:34:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6079:48:::0;-1:-1:-1;6138:16:0::1;6153:1;6079:48:::0;6138:16:::1;:::i;:::-;6217:8;::::0;:47:::1;::::0;-1:-1:-1;;;6217:47:0;;6138:16;;-1:-1:-1;;;;;;6217:8:0::1;::::0;:19:::1;::::0;:47:::1;::::0;6245:4:::1;::::0;6138:16;;6217:47:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;6316:40:0::1;::::0;-1:-1:-1;;;;;;6546:3:1;6524:16;;;6520:45;6316:40:0::1;::::0;::::1;6508:58:1::0;-1:-1:-1;;;;;;6621:3:1;6599:16;;;6595:53;6582:11;;;6575:74;6165:99:0;;-1:-1:-1;6165:99:0;;-1:-1:-1;6165:99:0;-1:-1:-1;6165:99:0;-1:-1:-1;6277:17:0::1;::::0;6665:12:1;;;-1:-1:-1;6316:40:0::1;::::0;;;;::::1;-1:-1:-1::0;;6316:40:0;;;;;;6306:51;;6316:40:::1;6306:51:::0;;::::1;::::0;6388:10:::1;6298:60;6377:22:::0;;;:10:::1;:22:::0;;;;;:33;;;;;;;;:41:::1;;::::0;6306:51;;-1:-1:-1;;;;6377:41:0;::::1;;;:50;6369:59;;;::::0;::::1;;6483:4;6439:10;:22;6450:10;-1:-1:-1::0;;;;;6439:22:0::1;-1:-1:-1::0;;;;;6439:22:0::1;;;;;;;;;;;;:33;6462:9;6439:33;;;;;;;;;;;:41;;;:48;;;;;;;;;;;;;;;;;;6536:128;;;;;;;;6547:8;6536:128;;;;;;6557:7;6536:128;;;;6566:12;-1:-1:-1::0;;;;;6536:128:0::1;;;;;6580:10;6536:128;;;;;;6592:11;6536:128;;;;;;6612:1;6536:128;;;;;;6616:4;6536:128;;;;;;6622:5;6536:128;;;;;;6629:22;;6536:128;;;;6653:10;6536:128;;;;::::0;6500:10:::1;:22;6511:10;-1:-1:-1::0;;;;;6500:22:0::1;-1:-1:-1::0;;;;;6500:22:0::1;;;;;;;;;;;;:33;6523:9;6500:33;;;;;;;;;;;:164;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;6500:164:0::1;;;;;-1:-1:-1::0;;;;;6500:164:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6695:10;-1:-1:-1::0;;;;;6682:52:0::1;;6707:9;6718:15;6682:52;;;;;;5174:25:1::0;;;5230:2;5215:18;;5208:34;5162:2;5147:18;;5000:248;6682:52:0::1;;;;;;;;-1:-1:-1::0;;284:1:0;583:7;:22;-1:-1:-1;;;;;;;4767:1975:0:o;11936:117::-;11995:8;;12012:13;;11995:50;;-1:-1:-1;;;11995:50:0;;-1:-1:-1;;;;;11995:8:0;;;;:16;;:50;;12012:13;;;-1:-1:-1;;12027:17:0;11995:50;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;11936:117::o;11463:251::-;11520:13;;;;;;;;:21;;:13;:21;11511:31;;;;;;11570:10;11559:22;;;;:10;:22;;;;;;;;:31;;;;11555:152;;11616:10;11605:22;;;;:10;:22;;;;;:29;;-1:-1:-1;;11605:29:0;11630:4;11605:29;;;11722:206::o;11555:152::-;11676:10;11690:5;11665:22;;;:10;:22;;;;;:30;;-1:-1:-1;;11665:30:0;;;11463:251::o;10637:219::-;328:1;476:7;;:19;468:63;;;;-1:-1:-1;;;468:63:0;;3208:2:1;468:63:0;;;3190:21:1;3247:2;3227:18;;;3220:30;3286:33;3266:18;;;3259:61;3337:18;;468:63:0;3006:355:1;468:63:0;328:1;542:7;:18;10773:75:::1;10783:10;10795:11:::0;10808:13;10823:9;10834:13;10773:9:::1;:75::i;:::-;-1:-1:-1::0;;284:1:0;583:7;:22;-1:-1:-1;;10637:219:0:o;12287:96::-;2318:9;;;;;-1:-1:-1;;;;;2318:9:0;2304:10;:23;2296:32;;;;;;12353:15:::1;:22:::0;;-1:-1:-1;;12353:22:0::1;12371:4;12353:22;::::0;;12287:96::o;11363:92::-;2318:9;;;;;-1:-1:-1;;;;;2318:9:0;2304:10;:23;2296:32;;;;;;11427:13:::1;:20:::0;;-1:-1:-1;;11427:20:0::1;;;::::0;;11363:92::o;4134:172::-;4207:8;;:57;;-1:-1:-1;;;4207:57:0;;4229:10;4207:57;;;6928:34:1;4249:4:0;6978:18:1;;;6971:43;7030:18;;;7023:34;;;-1:-1:-1;;;;;4207:8:0;;;;:21;;6863:18:1;;4207:57:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:65;;4268:4;4207:65;4199:99;;;;-1:-1:-1;;;4199:99:0;;7270:2:1;4199:99:0;;;7252:21:1;7309:2;7289:18;;;7282:30;-1:-1:-1;;;7328:18:1;;;7321:51;7389:18;;4199:99:0;7068:345:1;4314:445:0;4417:13;;;4426:4;4417:13;4413:131;;4466:7;4445:17;;:28;;;;;;;:::i;:::-;;;;-1:-1:-1;4413:131:0;;-1:-1:-1;4413:131:0;;4525:7;4504:17;;:28;;;;;;;:::i;:::-;;;;-1:-1:-1;;4413:131:0;4581:17;4560;;:38;4556:196;;4639:2;4614:22;:27;4314:445;;:::o;4556:196::-;4723:16;4703:17;;:36;;;;:::i;:::-;4697:43;;:2;:43;:::i;:::-;4672:22;:68;4314:445;;:::o;7836:2793::-;7983:19;8005:74;8025:14;8041:11;8054:13;8069:9;8005:19;:74::i;:::-;7983:96;;8090:18;8118:8;;;;;;;;;-1:-1:-1;;;;;8118:8:0;-1:-1:-1;;;;;8118:19:0;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8090:50;;8157:12;:17;;8173:1;8157:17;8153:206;;-1:-1:-1;;;;;8189:26:0;;;;;;:10;:26;;;;;;;;:37;;;;;;;;:49;;:63;;-1:-1:-1;;;;8189:63:0;-1:-1:-1;;;8189:63:0;;;;;;;8153:206;;;-1:-1:-1;;;;;8283:26:0;;;;;;:10;:26;;;;;;;;:37;;;;;;;;:49;;:64;;-1:-1:-1;;;;8283:64:0;-1:-1:-1;;;8283:64:0;;;;;;;8153:206;8390:8;;:33;;-1:-1:-1;;;8390:33:0;;8417:4;8390:33;;;1916:51:1;8371:16:0;;-1:-1:-1;;;;;8390:8:0;;:18;;1889::1;;8390:33:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;8440:27:0;;;;;;:11;:27;;;;;;8371:52;;-1:-1:-1;8440:27:0;;:35;;:27;:35;:101;;;;-1:-1:-1;;;;;;8494:26:0;;;;;;:10;:26;;;;;;;;:37;;;;;;;;:47;;;;-1:-1:-1;;;8494:47:0;;;;;8479:62;;;;;8440:101;8436:273;;;8558:11;;:50;;-1:-1:-1;;;8558:50:0;;;;;7590:25:1;;;7663:12;7651:25;;7631:18;;;7624:53;-1:-1:-1;;;;;8558:11:0;;;;:22;;7563:18:1;;8558:50:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;8623:11:0;;8660:36;;-1:-1:-1;;;8660:36:0;;8690:4;8660:36;;;1916:51:1;-1:-1:-1;;;;;8623:11:0;;;;:20;;8644:14;;8623:11;;8660:21;;1889:18:1;;8660:36:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8623:74;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;8436:273;8721:8;;:45;;-1:-1:-1;;;8721:45:0;;;;;7590:25:1;;;7663:12;7651:25;;7631:18;;;7624:53;-1:-1:-1;;;;;8721:8:0;;;;:17;;7563:18:1;;8721:45:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;8777:26:0;;;;;;;:10;:26;;;;;;;;:37;;;;;;;;;:43;;:50;;-1:-1:-1;;;;8777:50:0;-1:-1:-1;;;8777:50:0;;;8858:8;;:33;;-1:-1:-1;;;8858:33:0;;8885:4;8858:33;;;1916:51:1;8777:26:0;;8894:8;;8858;;;:18;;1889::1;;8858:33:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:44;;;;:::i;:::-;-1:-1:-1;;;;;8937:26:0;;8913:21;8937:26;;;:10;:26;;;;;;;;:37;;;;;;;;:47;;;;9034;;;;;8840:62;;-1:-1:-1;8937:47:0;9034;;:165;;;;-1:-1:-1;;;;;;9150:26:0;;;;;;:10;:26;;;;;;;;:37;;;;;;;;:48;;;9100:98;;9150:48;-1:-1:-1;;;9150:48:0;;;;;-1:-1:-1;;;9100:47:0;;;:98;:::i;:::-;9085:114;;:11;:114;;;9034:165;9030:1419;;;9214:60;;-1:-1:-1;;;9214:60:0;;8063:2:1;9214:60:0;;;8045:21:1;8102:2;8082:18;;;8075:30;8141:34;8121:18;;;8114:62;-1:-1:-1;;;8192:18:1;;;8185:40;8242:19;;9214:60:0;7861:406:1;9030:1419:0;-1:-1:-1;;;;;9310:26:0;;;;;;:10;:26;;;;;;;;:37;;;;;;;;:47;;;;-1:-1:-1;;;9310:47:0;;;;;9296:61;;;;9292:1157;;;9372:24;9399:13;9409:3;9399:7;:13;:::i;:::-;9372:40;;9425:62;9448:4;9455:16;9473:13;9425:14;:62::i;:::-;-1:-1:-1;9500:28:0;9512:16;9500:28;;:::i;:::-;9541:8;;:42;;-1:-1:-1;;;9541:42:0;;9500:28;;-1:-1:-1;;;;;;9541:8:0;;:17;;:42;;9559:14;;9500:28;;9541:42;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;9359:236;9292:1157;;;9616:13;9605:7;:24;;:62;;;-1:-1:-1;;;;;;9633:26:0;;;;;;:10;:26;;;;;;;;:34;;:26;:34;9605:62;9601:848;;;9682:8;;:42;;-1:-1:-1;;;9682:42:0;;-1:-1:-1;;;;;9682:8:0;;;;:17;;:42;;9700:14;;9716:7;;9682:42;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;9601:848;;;9756:13;9746:7;:23;9742:707;;;9784:20;;9839:23;9849:13;9839:7;:23;:::i;:::-;9817:45;;9875:8;;;;;;;;;-1:-1:-1;;;;;9875:8:0;-1:-1:-1;;;;;9875:17:0;;9893:14;9909:13;9875:48;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;9953:58;9968:14;9984:11;9997:13;9953:14;:58::i;:::-;-1:-1:-1;;;;;10056:26:0;;;;;;:10;:26;;;;;;;;:37;;;;;;;;:53;;;9936:75;;-1:-1:-1;10112:3:0;;10039:70;;9936:75;10039:70;:::i;:::-;:76;;;;:::i;:::-;10024:91;-1:-1:-1;10134:16:0;;10130:308;;10171:12;;:37;;-1:-1:-1;;;10171:37:0;;10202:4;10171:37;;;1916:51:1;10212:12:0;;-1:-1:-1;;;;;10171:12:0;;:22;;1889:18:1;;10171:37:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:53;10167:258;;10243:12;;;;;;;;;-1:-1:-1;;;;;10243:12:0;-1:-1:-1;;;;;10243:21:0;;10265:14;10281:12;10243:51;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;10167:258;;;10333:12;;10371:37;;-1:-1:-1;;;10371:37:0;;10402:4;10371:37;;;1916:51:1;-1:-1:-1;;;;;10333:12:0;;;;:21;;10355:14;;10333:12;;10371:22;;1889:18:1;;10371:37:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10333:76;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;10167:258;9771:678;;9742:707;10461:63;10503:5;10510:13;10461:41;:63::i;:::-;10542:79;;;8503:25:1;;;8559:2;8544:18;;8537:34;;;8587:18;;;8580:34;;;10605:15:0;8645:2:1;8630:18;;8623:34;-1:-1:-1;;;;;10542:79:0;;;;;8490:3:1;8475:19;10542:79:0;;;;;;;7972:2657;;;;;;7836:2793;;;;;:::o;6750:1078::-;7159:8;;:47;;-1:-1:-1;;;7159:47:0;;6887:6;;;;;;;;;;;;;;-1:-1:-1;;;;;7159:8:0;;:19;;:47;;7187:4;;7194:11;;7159:47;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7082:124;;;;;;;;;;;;;;;;;;;;;;;;;7225:10;:26;7236:14;-1:-1:-1;;;;;7225:26:0;-1:-1:-1;;;;;7225:26:0;;;;;;;;;;;;:37;7252:9;7225:37;;;;;;;;;;;:45;;;;;;;;;;;;:53;;7274:4;7225:53;;;:109;;;;-1:-1:-1;;;;;;7282:26:0;;;;;;:10;:26;;;;;;;;:37;;;;;;;;:43;;;-1:-1:-1;;;7282:43:0;;;;:52;7225:109;7217:118;;;;;;-1:-1:-1;;;;;7354:26:0;;;;;;:10;:26;;;;;;;;:37;;;;;;;;:45;:62;;;;:45;;:62;:91;;;;;7437:8;7420:25;;:13;:25;;;7354:91;7346:100;;;;;;-1:-1:-1;;;;;7465:26:0;;;;;;:10;:26;;;;;;;;:37;;;;;;;;:47;;;-1:-1:-1;;;;;7516:22:0;;7465:73;7457:82;;;;;;-1:-1:-1;;;;;7558:26:0;;;;;;:10;:26;;;;;;;;:37;;;;;;;;:49;;;-1:-1:-1;;;;;7558:65:0;;;:49;;:65;7550:74;;;;;;-1:-1:-1;;;;;7643:26:0;;;;;;:10;:26;;;;;;;;:37;;;;;;;;:47;;;:61;;;;-1:-1:-1;;;7643:47:0;;;;:61;7635:70;;;;;;-1:-1:-1;;;;;7724:26:0;;;;;;:10;:26;;;;;;;;:37;;;;;;;;:48;;;:63;;;;-1:-1:-1;;;7724:48:0;;;;:63;7716:72;;;;;;7808:12;6750:1078;-1:-1:-1;;;;;;;;;;6750:1078:0:o;10864:491::-;11005:16;;;11019:1;11005:16;;;;;;;;10961:7;;;;11005:16;11019:1;11005:16;;;;;;;;-1:-1:-1;;11042:10:0;;11032:7;;;;-1:-1:-1;;;;;;11042:10:0;;11032:7;;-1:-1:-1;11042:10:0;;11032:7;;;;:::i;:::-;-1:-1:-1;;;;;11032:20:0;;;:7;;;;;;;;;:20;11073:14;;11063:7;;11073:14;;;11063:4;;11073:14;;11063:7;;;;;;:::i;:::-;-1:-1:-1;;;;;11063:24:0;;;:7;;;;;;;;;:24;11123:6;;:90;;-1:-1:-1;;;11123:90:0;;11098:22;;11123:6;;;;;:31;;:90;;11155:4;;11161:13;;11176:4;;11190;;11197:15;;11123:90;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;11123:90:0;;;;;;;;;;;;:::i;:::-;11098:115;;11244:1;11230:8;11239:1;11230:11;;;;;;;;:::i;:::-;;;;;;;:15;11226:91;;;11260:12;;11293:11;;-1:-1:-1;;;;;11260:12:0;;;;:21;;11282:9;;11293:8;;11260:12;;11293:11;;;;;;:::i;:::-;;;;;;;11260:45;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;11226:91;11336:8;11345:1;11336:11;;;;;;;;:::i;:::-;;;;;;;11329:18;;;;10864:491;;;;;:::o;14:173:1:-;82:20;;-1:-1:-1;;;;;131:31:1;;121:42;;111:70;;177:1;174;167:12;111:70;14:173;;;:::o;192:254::-;260:6;268;321:2;309:9;300:7;296:23;292:32;289:52;;;337:1;334;327:12;289:52;360:29;379:9;360:29;:::i;:::-;350:39;436:2;421:18;;;;408:32;;-1:-1:-1;;;192:254:1:o;1397:186::-;1456:6;1509:2;1497:9;1488:7;1484:23;1480:32;1477:52;;;1525:1;1522;1515:12;1477:52;1548:29;1567:9;1548:29;:::i;:::-;1538:39;1397:186;-1:-1:-1;;;1397:186:1:o;1978:248::-;2046:6;2054;2107:2;2095:9;2086:7;2082:23;2078:32;2075:52;;;2123:1;2120;2113:12;2075:52;-1:-1:-1;;2146:23:1;;;2216:2;2201:18;;;2188:32;;-1:-1:-1;1978:248:1:o;2423:123::-;2508:12;2501:5;2497:24;2490:5;2487:35;2477:63;;2536:1;2533;2526:12;2551:450;2636:6;2644;2652;2660;2713:3;2701:9;2692:7;2688:23;2684:33;2681:53;;;2730:1;2727;2720:12;2681:53;2766:9;2753:23;2743:33;;2826:2;2815:9;2811:18;2798:32;2839:30;2863:5;2839:30;:::i;:::-;2551:450;;2888:5;;-1:-1:-1;;;;2940:2:1;2925:18;;2912:32;;2991:2;2976:18;2963:32;;2551:450::o;3366:184::-;3436:6;3489:2;3477:9;3468:7;3464:23;3460:32;3457:52;;;3505:1;3502;3495:12;3457:52;-1:-1:-1;3528:16:1;;3366:184;-1:-1:-1;3366:184:1:o;3555:127::-;3616:10;3611:3;3607:20;3604:1;3597:31;3647:4;3644:1;3637:15;3671:4;3668:1;3661:15;3687:168;3760:9;;;3791;;3808:15;;;3802:22;;3788:37;3778:71;;3829:18;;:::i;:::-;3687:168;;;;:::o;3860:217::-;3900:1;3926;3916:132;;3970:10;3965:3;3961:20;3958:1;3951:31;4005:4;4002:1;3995:15;4033:4;4030:1;4023:15;3916:132;-1:-1:-1;4062:9:1;;3860:217::o;4082:125::-;4147:9;;;4168:10;;;4165:36;;;4181:18;;:::i;4212:128::-;4279:9;;;4300:11;;;4297:37;;;4314:18;;:::i;4345:274::-;-1:-1:-1;;;;;4537:32:1;;;;4519:51;;4601:2;4586:18;;4579:34;4507:2;4492:18;;4345:274::o;4624:164::-;4700:13;;4749;;4742:21;4732:32;;4722:60;;4778:1;4775;4768:12;4793:202;4860:6;4913:2;4901:9;4892:7;4888:23;4884:32;4881:52;;;4929:1;4926;4919:12;4881:52;4952:37;4979:9;4952:37;:::i;5253:177::-;5331:13;;-1:-1:-1;;;;;5373:32:1;;5363:43;;5353:71;;5420:1;5417;5410:12;5435:163;5513:13;;5566:6;5555:18;;5545:29;;5535:57;;5588:1;5585;5578:12;5603:747;5718:6;5726;5734;5742;5750;5758;5766;5819:3;5807:9;5798:7;5794:23;5790:33;5787:53;;;5836:1;5833;5826:12;5787:53;5868:9;5862:16;5887:30;5911:5;5887:30;:::i;:::-;5936:5;-1:-1:-1;5960:48:1;6004:2;5989:18;;5960:48;:::i;:::-;5950:58;;6027:48;6071:2;6060:9;6056:18;6027:48;:::i;:::-;6017:58;;6094:48;6138:2;6127:9;6123:18;6094:48;:::i;:::-;6084:58;;6161:49;6205:3;6194:9;6190:19;6161:49;:::i;:::-;6151:59;;6229:49;6273:3;6262:9;6258:19;6229:49;:::i;:::-;6219:59;;6297:47;6339:3;6328:9;6324:19;6297:47;:::i;:::-;6287:57;;5603:747;;;;;;;;;;:::o;7688:168::-;7755:6;7781:10;;;7793;;;7777:27;;7816:11;;;7813:37;;;7830:18;;:::i;:::-;7813:37;7688:168;;;;:::o;8668:127::-;8729:10;8724:3;8720:20;8717:1;8710:31;8760:4;8757:1;8750:15;8784:4;8781:1;8774:15;8800:127;8861:10;8856:3;8852:20;8849:1;8842:31;8892:4;8889:1;8882:15;8916:4;8913:1;8906:15;8932:972;9186:4;9234:3;9223:9;9219:19;9265:6;9254:9;9247:25;9291:2;9329:6;9324:2;9313:9;9309:18;9302:34;9372:3;9367:2;9356:9;9352:18;9345:31;9396:6;9431;9425:13;9462:6;9454;9447:22;9500:3;9489:9;9485:19;9478:26;;9539:2;9531:6;9527:15;9513:29;;9560:1;9570:195;9584:6;9581:1;9578:13;9570:195;;;9649:13;;-1:-1:-1;;;;;9645:39:1;9633:52;;9740:15;;;;9705:12;;;;9681:1;9599:9;9570:195;;;-1:-1:-1;;;;;;;9821:32:1;;;;9816:2;9801:18;;9794:60;-1:-1:-1;;;9885:3:1;9870:19;9863:35;9782:3;8932:972;-1:-1:-1;;;8932:972:1:o;9909:1105::-;10004:6;10035:2;10078;10066:9;10057:7;10053:23;10049:32;10046:52;;;10094:1;10091;10084:12;10046:52;10127:9;10121:16;10156:18;10197:2;10189:6;10186:14;10183:34;;;10213:1;10210;10203:12;10183:34;10251:6;10240:9;10236:22;10226:32;;10296:7;10289:4;10285:2;10281:13;10277:27;10267:55;;10318:1;10315;10308:12;10267:55;10347:2;10341:9;10369:2;10365;10362:10;10359:36;;;10375:18;;:::i;:::-;10421:2;10418:1;10414:10;10453:2;10447:9;10516:2;10512:7;10507:2;10503;10499:11;10495:25;10487:6;10483:38;10571:6;10559:10;10556:22;10551:2;10539:10;10536:18;10533:46;10530:72;;;10582:18;;:::i;:::-;10618:2;10611:22;10668:18;;;10702:15;;;;-1:-1:-1;10744:11:1;;;10740:20;;;10772:19;;;10769:39;;;10804:1;10801;10794:12;10769:39;10828:11;;;;10848:135;10864:6;10859:3;10856:15;10848:135;;;10930:10;;10918:23;;10881:12;;;;10961;;;;10848:135;;;11002:6;9909:1105;-1:-1:-1;;;;;;;;9909:1105:1:o

Swarm Source

ipfs://fb063bd9330bdbd2786340b5d7d2bd05c60440e2e9fc4d4dc131e38aeb1124fa

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]

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