ETH Price: $3,408.34 (-1.81%)
Gas: 19 Gwei

Contract

0xad76990f341542855f460824971102FbD5DEFA4d
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Claim Reward184316352023-10-26 3:12:59271 days ago1698289979IN
0xad76990f...bD5DEFA4d
0 ETH0.009972162.51435183
Withdraw183630522023-10-16 12:51:35281 days ago1697460695IN
0xad76990f...bD5DEFA4d
0 ETH0.0011689610.09749651
Withdraw183271352023-10-11 12:14:47286 days ago1697026487IN
0xad76990f...bD5DEFA4d
0 ETH0.000841688.33224352
Claim Reward183271192023-10-11 12:11:35286 days ago1697026295IN
0xad76990f...bD5DEFA4d
0 ETH0.001013079.36152495
Withdraw180530532023-09-03 2:40:47324 days ago1693708847IN
0xad76990f...bD5DEFA4d
0 ETH0.0028594110.65273896
Withdraw179911132023-08-25 10:28:47333 days ago1692959327IN
0xad76990f...bD5DEFA4d
0 ETH0.0019978817.69811057
Withdraw179538982023-08-20 5:32:47338 days ago1692509567IN
0xad76990f...bD5DEFA4d
0 ETH0.0031251311.07732202
Stake178998282023-08-12 15:58:59346 days ago1691855939IN
0xad76990f...bD5DEFA4d
0 ETH0.0016309717.18168805
Stake178998242023-08-12 15:58:11346 days ago1691855891IN
0xad76990f...bD5DEFA4d
0 ETH0.0018648218.62571381
Claim Reward178998212023-08-12 15:57:35346 days ago1691855855IN
0xad76990f...bD5DEFA4d
0 ETH0.0016868818.51336429
Stake178996822023-08-12 15:29:47346 days ago1691854187IN
0xad76990f...bD5DEFA4d
0 ETH0.0020595520.57312285
Stake178979482023-08-12 9:39:11346 days ago1691833151IN
0xad76990f...bD5DEFA4d
0 ETH0.0020187712.19782617
Stake178839852023-08-10 10:47:47348 days ago1691664467IN
0xad76990f...bD5DEFA4d
0 ETH0.0023097414.81295996
Withdraw178618302023-08-07 8:20:59351 days ago1691396459IN
0xad76990f...bD5DEFA4d
0 ETH0.0020591215.83811908
Withdraw178561162023-08-06 13:08:11352 days ago1691327291IN
0xad76990f...bD5DEFA4d
0 ETH0.0017437215.4433467
Withdraw178558122023-08-06 12:07:11352 days ago1691323631IN
0xad76990f...bD5DEFA4d
0 ETH0.0003514813.45998731
Withdraw178557972023-08-06 12:04:11352 days ago1691323451IN
0xad76990f...bD5DEFA4d
0 ETH0.0017599515.65670159
Claim Reward178557742023-08-06 11:59:35352 days ago1691323175IN
0xad76990f...bD5DEFA4d
0 ETH0.003324612.01584415
Stake178527712023-08-06 1:53:47352 days ago1691286827IN
0xad76990f...bD5DEFA4d
0 ETH0.0013100113.08587501
Stake178527652023-08-06 1:52:35352 days ago1691286755IN
0xad76990f...bD5DEFA4d
0 ETH0.0036906113.11174322
Stake178463962023-08-05 4:30:47353 days ago1691209847IN
0xad76990f...bD5DEFA4d
0 ETH0.0039838814.15268836
Stake178387732023-08-04 2:54:35354 days ago1691117675IN
0xad76990f...bD5DEFA4d
0 ETH0.0040521714.39529418
Withdraw178376492023-08-03 23:09:23354 days ago1691104163IN
0xad76990f...bD5DEFA4d
0 ETH0.0016950415.07927289
Stake178342452023-08-03 11:42:59355 days ago1691062979IN
0xad76990f...bD5DEFA4d
0 ETH0.0026914917.26122773
Stake178338992023-08-03 10:33:35355 days ago1691058815IN
0xad76990f...bD5DEFA4d
0 ETH0.0022002714.11093926
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:
AlienStaking

Compiler Version
v0.8.21+commit.d9974bed

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-07-29
*/

//SPDX-License-Identifier: No


pragma solidity ^0.8.17;

//--- Context ---//
abstract contract Context {
    constructor() {
    }

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

    function _msgData() internal view returns (bytes memory) {
        this;
        return msg.data;
    }
}


//--- Pausable ---//
abstract contract Pausable is Context {

    event Paused(address account);

    event Unpaused(address account);

    bool private _paused;

    constructor() {
        _paused = false;
    }

    modifier whenNotPaused() {
        _requireNotPaused();
        _;
    }

    modifier whenPaused() {
        _requirePaused();
        _;
    }

    function paused() public view virtual returns (bool) {
        return _paused;
    }

    function _requireNotPaused() internal view virtual {
        require(!paused(), "Pausable: paused");
    }

    function _requirePaused() internal view virtual {
        require(paused(), "Pausable: not paused");
    }

    function _pause() internal virtual whenNotPaused {
        _paused = true;
        emit Paused(_msgSender());
    }

    function _unpause() internal virtual whenPaused {
        _paused = false;
        emit Unpaused(_msgSender());
    }
}


//--- Ownable ---//
abstract contract Ownable is Context {
    address private _owner;
    address private _multiSig;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    event MultiSigTransferred(address indexed oldMultiSig, address indexed newMultiSig);

    constructor() {
        _setOwner(_msgSender());
        _setMultiSig(_msgSender());
    }

    function multisig() public view virtual returns (address) {
        return _multiSig;
    }

    function owner() public view virtual returns (address) {
        return _owner;
    }

    modifier onlyOwner() {
        require(owner() == _msgSender() || multisig() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    modifier onlyMultiSignature() {
        require(multisig() == _msgSender(), "Ownable: caller is not the multisig");
        _;
    }

    function renounceOwnership() public virtual onlyOwner {
        _setOwner(address(0));
    }

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _setOwner(newOwner);
    }

    function transferMultiSig(address newMultiSig) public virtual onlyMultiSignature {
        require(newMultiSig != address(0), "Ownable: new owner is the zero address");
        _setMultiSig(newMultiSig);
    }

    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }

    function _setMultiSig(address newMultiSig) private {
        address oldMultiSig = _multiSig;
        _multiSig = newMultiSig;
        emit MultiSigTransferred(oldMultiSig, newMultiSig);
    }
}


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


contract AlienStaking is Context, Pausable, Ownable {

    event staking(uint256 amount); 
    event WithdrawFromStaking(uint256 amount);
    event ClaimRewards(uint256 amount);
    mapping (address => uint) public stakeTimestamps;
    uint256 public TokenDedicatiAlloStaking; // Modalità 1: Fixed amount of tokens staked.
    uint256 public safeSeconds = 15;
    uint256 public totalSupply; // amount of all token staked
    bool public isStakingLive = false;
    uint256 private dayzero;
    uint256 private preApproval;
    bool public Initalized = false;
    mapping(address => uint256) private rewardsGiaPagati;
    mapping(address => uint256) public rewards;
    mapping(address => uint256) private quandoStake;
    mapping(address => uint256) private quandoWithdraw;
    mapping(address => uint256) private lastTimeStaked;
    mapping(address => uint256) private holdingXstaking;
    mapping(address => uint256) private lastClaimRewards;

    mapping(address => bool) private AlreadyStaked;
    mapping(address => bool) private FeesExcluded;
    uint256 private interestperDay = 13698630133;
    uint256 public withdrawalLockDuration = 30 days;
    uint256 public taxPercentage = 10;

    constructor (

    ) {
        FeesExcluded[msg.sender] = true;
    }
    
    IERC20 public Token;

    function setToken(address _token) external onlyMultiSignature {
        require(!Initalized);
        Token = IERC20(_token);
        Initalized = true;
    }

    function unPause() external onlyMultiSignature {
        _unpause();
    }

    function ExcludeFromFees(address holder, bool yesno) external onlyOwner {
        FeesExcluded[holder] = yesno;
    }

    function setTokenDedicatiAlloStaking(uint256 amount) external onlyOwner {
        uint256 tempBalance = Token.balanceOf(msg.sender); // 
        require(tempBalance >= amount,"Not enough tokens"); // 
        Token.transferFrom(msg.sender, address(this), amount); // make sure to give enough allowance
        TokenDedicatiAlloStaking += amount;
    }

    function setStakingLive() external onlyOwner {
        require(!isStakingLive,"Staking is already live");
        isStakingLive = true;
    }



    function reset() external onlyMultiSignature {
        uint256 tempBalance = Token.balanceOf(address(this));
        if(tempBalance > 0) {
            Token.transfer(msg.sender, tempBalance);
        }
        interestperDay = 0;
        TokenDedicatiAlloStaking = 0;
        isStakingLive = false;
        _pause();
    }

    function stakeprivate(uint256 amount) private {
        uint256 tempBalance = Token.balanceOf(msg.sender);
        require(isStakingLive,"Staking is not live");
        require(tempBalance >= amount,"Not enough tokens");
        Token.transferFrom(msg.sender, address(this), amount);
        holdingXstaking[msg.sender] += amount;
        totalSupply += amount;
        quandoStake[msg.sender] = block.timestamp; // Quando stake in secondi. https://www.site24x7.com/tools/time-stamp-converter.html
        AlreadyStaked[msg.sender] = true;
    }

    function stake(uint256 amount) external whenNotPaused {
        require(msg.sender != address(0));
        require(isStakingLive,"Staking is not live yet.");

        bool YesNoStaked = AlreadyStaked[msg.sender] == true;
        if(YesNoStaked) {
            if(pend(msg.sender) >= holdingXstaking[msg.sender] / 1000) { revert("Claim Rewards, you have at least 0.1% rewards to claim"); }
        } else {
        }

        stakeprivate(amount);
        stakeTimestamps[msg.sender] = block.timestamp;

    emit staking(amount);

    }
    
    function feesNo() internal view returns(bool) {
        bool FeesNo = FeesExcluded[msg.sender] == true;

        return FeesNo;
    }

function withdraw(uint256 amount) external whenNotPaused {
        require(msg.sender != address(0));
        require(amount > 0, "Amount should be greater than 0");
        require(holdingXstaking[msg.sender] >= amount, "Not enough tokens");

        uint256 lockDuration = block.timestamp - stakeTimestamps[msg.sender];
        if (lockDuration < withdrawalLockDuration) {
            // Apply tax if withdrawn before 3 days
            uint256 taxAmount = (amount * taxPercentage) / 100;
            uint256 netAmount = amount - taxAmount;

            holdingXstaking[msg.sender] -= amount;
            totalSupply -= amount;

            // Transfer the net amount (amount after tax) to the user's wallet
            Token.transfer(msg.sender, netAmount);

            // Transfer the tax amount to the contract's wallet
            Token.transfer(address(0xFF27b3b352853ccf039E4a33A89EDe072759E675), taxAmount);
        } else {
            // No tax if withdrawn after 3 days
            holdingXstaking[msg.sender] -= amount;
            totalSupply -= amount;

            // Transfer the full amount to the user's wallet
            Token.transfer(msg.sender, amount);
        }

        quandoWithdraw[msg.sender] = block.timestamp;
        bool goingToZero = holdingXstaking[msg.sender] == 0;
        if (goingToZero) {
            resetUser();
        }

        emit WithdrawFromStaking(amount);
    }




    function resetUser() private {
            AlreadyStaked[msg.sender] = false;
            rewards[msg.sender] = 0;
            rewardsGiaPagati[msg.sender] = 0;
            lastClaimRewards[msg.sender] = 0;
            quandoStake[msg.sender] = 0;
            holdingXstaking[msg.sender] = 0;
            stakeTimestamps[msg.sender] = 0;
    }

    
    function calculateRewards() private  {
        uint256 interestPerSecond = interestperDay / 86400; uint256 interest =
        (block.timestamp - quandoStake[msg.sender]) * interestPerSecond;
        rewards[msg.sender] = (holdingXstaking[msg.sender] * interest);
        rewards[msg.sender] = checkZeroMath(msg.sender, rewards[msg.sender]);
     
       
    }
    
    function safe() private view whenNotPaused {
        require(block.timestamp > lastClaimRewards[msg.sender] + safeSeconds, "Cannot claim in the sameblock");
    }

    function staked() private view {

        bool YesNoStaked = AlreadyStaked[msg.sender] == true;
        if(YesNoStaked) {
        } else {
            safe();
        }

    }

    function claimReward() public whenNotPaused {
        require(msg.sender != address(0));
        calculateRewards();
        staked();

        require(rewards[msg.sender] > 0, "Can't claim less than zero tokens");

        uint256 yourrewards = rewards[msg.sender];
       

        Token.transfer(msg.sender, yourrewards);
        rewardsGiaPagati[msg.sender] += yourrewards;
        lastClaimRewards[msg.sender] = block.timestamp;
        require(TokenDedicatiAlloStaking > yourrewards,"Token Holders need to be able to get back 100% of the tokens allocated");
        TokenDedicatiAlloStaking -= yourrewards;

        emit ClaimRewards(yourrewards);
    }

    function amountStaked(address holder) external view returns (uint256) {
        return holdingXstaking[holder];
    }

    function rewardsPaid(address holder) external view returns (uint256) {
        return rewardsGiaPagati[holder];
    }

    function whenStaking(address holder) external view returns (uint256) {
        return quandoStake[holder];
    }

    function lastTimeClaim(address holder) external view returns (uint256) {
        return lastClaimRewards[holder];
    }

    function isFeeExcluded(address holder) external view returns (bool) {
        return FeesExcluded[holder];
    }

    function _alreadyStaked(address holder) external view returns (bool) {
        return AlreadyStaked[holder];
    }

    function pend(address account) private view returns (uint256) {
        uint256 interestPerSecond = interestperDay / 86400; uint256 interest =
        
        (block.timestamp - quandoStake[account]) * interestPerSecond;
        uint256 preRewards;
        preRewards = (holdingXstaking[account] * interest);
        preRewards = checkZeroMath(account, preRewards);


        return preRewards;
    }

    function checkZeroMath(address account, uint256 a) internal view returns(uint256) {
        uint256 _return;
        if(((a / 100000000000)) / 100 >= rewardsGiaPagati[account]) {
            _return = ((a / 100000000000)) / 100 - rewardsGiaPagati[account];
        } else {
            _return = 0;
        }
        return _return;
    }
 
    function pendingRewards(address account) external view returns(uint256) {
        return pend(account);
    }


}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"ClaimRewards","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"oldMultiSig","type":"address"},{"indexed":true,"internalType":"address","name":"newMultiSig","type":"address"}],"name":"MultiSigTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"WithdrawFromStaking","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"staking","type":"event"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"yesno","type":"bool"}],"name":"ExcludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"Initalized","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"Token","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TokenDedicatiAlloStaking","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"}],"name":"_alreadyStaked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"}],"name":"amountStaked","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claimReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"}],"name":"isFeeExcluded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isStakingLive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"}],"name":"lastTimeClaim","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"multisig","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"pendingRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"reset","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"rewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"}],"name":"rewardsPaid","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"safeSeconds","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"setStakingLive","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"}],"name":"setToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setTokenDedicatiAlloStaking","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"stake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"stakeTimestamps","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxPercentage","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newMultiSig","type":"address"}],"name":"transferMultiSig","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unPause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"}],"name":"whenStaking","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawalLockDuration","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}]

6080604052600f6004556006805460ff199081169091556009805490911690556403308081f560135562278d00601455600a60155534801561003f575f80fd5b505f805460ff1916905561005233610079565b61005b336100d1565b335f908152601260205260409020805460ff19166001179055610122565b5f80546001600160a01b03838116610100818102610100600160a81b0319851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907fd4f90286c853b31e785ae85d08354a790ca9eba6e6eac5152d619cb54766e120905f90a35050565b6118fa8061012f5f395ff3fe608060405234801561000f575f80fd5b50600436106101e7575f3560e01c806384201bd911610109578063b88a802f1161009e578063d826f88f1161006e578063d826f88f14610457578063ef40a6701461045f578063f2fde38b14610487578063f7b188a51461049a575f80fd5b8063b88a802f14610404578063bca238aa1461040c578063c241267614610437578063c33ac9b71461044a575f80fd5b8063a2df2ba7116100d9578063a2df2ba7146103b7578063a694fc3a146103df578063ae7b6d16146103f2578063afb838e7146103fb575f80fd5b806384201bd91461035d5780638da5cb5b1461037057806399f853a5146103855780639d8f7706146103a4575f80fd5b806338700bfe1161017f57806360c251c11161014f57806360c251c1146102fc5780636c03932f14610305578063700a4a741461032d578063715018a614610355575f80fd5b806338700bfe1461029a5780634783c35b146102a25780634f726a3d146102c75780635c975abb146102f2575f80fd5b80632790eb53116101ba5780632790eb531461024e5780632e1a7d4d1461025757806331d7a2621461026a578063341e7dcc1461027d575f80fd5b80630700037d146101eb578063144fa6d71461021d57806318160ddd146102325780632138b7c11461023b575b5f80fd5b61020a6101f93660046116c7565b600b6020525f908152604090205481565b6040519081526020015b60405180910390f35b61023061022b3660046116c7565b6104a2565b005b61020a60055481565b6102306102493660046116c7565b610513565b61020a60045481565b6102306102653660046116e0565b61056f565b61020a6102783660046116c7565b6108ed565b60065461028a9060ff1681565b6040519015158152602001610214565b6102306108fd565b6001546001600160a01b03165b6040516001600160a01b039091168152602001610214565b61028a6102d53660046116c7565b6001600160a01b03165f9081526011602052604090205460ff1690565b5f5460ff1661028a565b61020a60145481565b61020a6103133660046116c7565b6001600160a01b03165f908152600c602052604090205490565b61020a61033b3660046116c7565b6001600160a01b03165f908152600a602052604090205490565b6102306109a3565b61023061036b3660046116e0565b6109f2565b5f5461010090046001600160a01b03166102af565b61020a6103933660046116c7565b60026020525f908152604090205481565b6102306103b2366004611704565b610b55565b61020a6103c53660046116c7565b6001600160a01b03165f9081526010602052604090205490565b6102306103ed3660046116e0565b610bc3565b61020a60155481565b61020a60035481565b610230610d2c565b61028a61041a3660046116c7565b6001600160a01b03165f9081526012602052604090205460ff1690565b6016546102af906001600160a01b031681565b60095461028a9060ff1681565b610230610f3e565b61020a61046d3660046116c7565b6001600160a01b03165f908152600f602052604090205490565b6102306104953660046116c7565b611069565b6102306110dc565b6001546001600160a01b031633146104d55760405162461bcd60e51b81526004016104cc90611739565b60405180910390fd5b60095460ff16156104e4575f80fd5b601680546001600160a01b0319166001600160a01b03929092169190911790556009805460ff19166001179055565b6001546001600160a01b0316331461053d5760405162461bcd60e51b81526004016104cc90611739565b6001600160a01b0381166105635760405162461bcd60e51b81526004016104cc9061177c565b61056c8161110e565b50565b61057761115f565b33610580575f80fd5b5f81116105cf5760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e742073686f756c642062652067726561746572207468616e20300060448201526064016104cc565b335f908152600f60205260409020548111156105fd5760405162461bcd60e51b81526004016104cc906117c2565b335f908152600260205260408120546106169042611801565b905060145481101561078b575f6064601554846106339190611814565b61063d919061182b565b90505f61064a8285611801565b335f908152600f602052604081208054929350869290919061066d908490611801565b925050819055508360055f8282546106859190611801565b909155505060165460405163a9059cbb60e01b8152336004820152602481018390526001600160a01b039091169063a9059cbb906044016020604051808303815f875af11580156106d8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106fc919061184a565b5060165460405163a9059cbb60e01b815273ff27b3b352853ccf039e4a33a89ede072759e6756004820152602481018490526001600160a01b039091169063a9059cbb906044016020604051808303815f875af115801561075f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610783919061184a565b50505061083a565b335f908152600f6020526040812080548492906107a9908490611801565b925050819055508160055f8282546107c19190611801565b909155505060165460405163a9059cbb60e01b8152336004820152602481018490526001600160a01b039091169063a9059cbb906044016020604051808303815f875af1158015610814573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610838919061184a565b505b335f908152600d60209081526040808320429055600f9091529020541580156108b5576108b5335f908152601160209081526040808320805460ff19169055600b8252808320839055600a825280832083905560108252808320839055600c8252808320839055600f82528083208390556002909152812055565b6040518381527fc483bf0af3b237d0e8f42091db468219edf0d51b24995513b57b9857be7871549060200160405180910390a1505050565b5f6108f7826111a4565b92915050565b5f546001600160a01b036101009091041633148061092557506001546001600160a01b031633145b6109415760405162461bcd60e51b81526004016104cc90611865565b60065460ff16156109945760405162461bcd60e51b815260206004820152601760248201527f5374616b696e6720697320616c7265616479206c69766500000000000000000060448201526064016104cc565b6006805460ff19166001179055565b5f546001600160a01b03610100909104163314806109cb57506001546001600160a01b031633145b6109e75760405162461bcd60e51b81526004016104cc90611865565b6109f05f611225565b565b5f546001600160a01b0361010090910416331480610a1a57506001546001600160a01b031633145b610a365760405162461bcd60e51b81526004016104cc90611865565b6016546040516370a0823160e01b81523360048201525f916001600160a01b0316906370a0823190602401602060405180830381865afa158015610a7c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610aa0919061189a565b905081811015610ac25760405162461bcd60e51b81526004016104cc906117c2565b6016546040516323b872dd60e01b8152336004820152306024820152604481018490526001600160a01b03909116906323b872dd906064016020604051808303815f875af1158015610b16573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b3a919061184a565b508160035f828254610b4c91906118b1565b90915550505050565b5f546001600160a01b0361010090910416331480610b7d57506001546001600160a01b031633145b610b995760405162461bcd60e51b81526004016104cc90611865565b6001600160a01b03919091165f908152601260205260409020805460ff1916911515919091179055565b610bcb61115f565b33610bd4575f80fd5b60065460ff16610c265760405162461bcd60e51b815260206004820152601860248201527f5374616b696e67206973206e6f74206c697665207965742e000000000000000060448201526064016104cc565b335f9081526011602052604090205460ff1615156001148015610cd457335f908152600f6020526040902054610c5f906103e89061182b565b610c68336111a4565b10610cd45760405162461bcd60e51b815260206004820152603660248201527f436c61696d20526577617264732c20796f752068617665206174206c6561737460448201527520302e3125207265776172647320746f20636c61696d60501b60648201526084016104cc565b610cdd8261127d565b335f9081526002602052604090819020429055517f1dbb2a223bf10b333097931146bfc57c2b39e7c0615d1b275c61bb2eb417f65890610d209084815260200190565b60405180910390a15050565b610d3461115f565b33610d3d575f80fd5b610d45611430565b610d4d6114b5565b335f908152600b6020526040902054610db25760405162461bcd60e51b815260206004820152602160248201527f43616e277420636c61696d206c657373207468616e207a65726f20746f6b656e6044820152607360f81b60648201526084016104cc565b335f818152600b60205260409081902054601654915163a9059cbb60e01b8152600481019390935260248301819052916001600160a01b039091169063a9059cbb906044016020604051808303815f875af1158015610e13573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e37919061184a565b50335f908152600a602052604081208054839290610e569084906118b1565b9091555050335f9081526010602052604090204290556003548110610ef25760405162461bcd60e51b815260206004820152604660248201527f546f6b656e20486f6c64657273206e65656420746f2062652061626c6520746f60448201527f20676574206261636b2031303025206f662074686520746f6b656e7320616c6c6064820152651bd8d85d195960d21b608482015260a4016104cc565b8060035f828254610f039190611801565b90915550506040518181527fbacfa9662d479c707dae707c358323f0c7711ef382007957dc9935e629da36b29060200160405180910390a150565b6001546001600160a01b03163314610f685760405162461bcd60e51b81526004016104cc90611739565b6016546040516370a0823160e01b81523060048201525f916001600160a01b0316906370a0823190602401602060405180830381865afa158015610fae573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fd2919061189a565b9050801561104e5760165460405163a9059cbb60e01b8152336004820152602481018390526001600160a01b039091169063a9059cbb906044016020604051808303815f875af1158015611028573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061104c919061184a565b505b5f60138190556003556006805460ff1916905561056c6114d9565b5f546001600160a01b036101009091041633148061109157506001546001600160a01b031633145b6110ad5760405162461bcd60e51b81526004016104cc90611865565b6001600160a01b0381166110d35760405162461bcd60e51b81526004016104cc9061177c565b61056c81611225565b6001546001600160a01b031633146111065760405162461bcd60e51b81526004016104cc90611739565b6109f0611532565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907fd4f90286c853b31e785ae85d08354a790ca9eba6e6eac5152d619cb54766e120905f90a35050565b5f5460ff16156109f05760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b60448201526064016104cc565b5f80620151806013546111b7919061182b565b6001600160a01b0384165f908152600c60205260408120549192509082906111df9042611801565b6111e99190611814565b6001600160a01b0385165f908152600f602052604081205491925090611210908390611814565b905061121c858261156a565b95945050505050565b5f80546001600160a01b03838116610100818102610100600160a81b0319851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b6016546040516370a0823160e01b81523360048201525f916001600160a01b0316906370a0823190602401602060405180830381865afa1580156112c3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112e7919061189a565b60065490915060ff166113325760405162461bcd60e51b81526020600482015260136024820152725374616b696e67206973206e6f74206c69766560681b60448201526064016104cc565b818110156113525760405162461bcd60e51b81526004016104cc906117c2565b6016546040516323b872dd60e01b8152336004820152306024820152604481018490526001600160a01b03909116906323b872dd906064016020604051808303815f875af11580156113a6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113ca919061184a565b50335f908152600f6020526040812080548492906113e99084906118b1565b925050819055508160055f82825461140191906118b1565b9091555050335f908152600c6020908152604080832042905560119091529020805460ff191660011790555050565b5f62015180601354611442919061182b565b335f908152600c60205260408120549192509082906114619042611801565b61146b9190611814565b335f908152600f6020526040902054909150611488908290611814565b335f818152600b602052604090208290556114a29161156a565b335f908152600b60205260409020555050565b335f9081526011602052604090205460ff1615156001148061056c5761056c6115f2565b6114e161115f565b5f805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586115153390565b6040516001600160a01b03909116815260200160405180910390a1565b61153a611664565b5f805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa33611515565b6001600160a01b0382165f908152600a60205260408120548190606461159564174876e8008661182b565b61159f919061182b565b106115e8576001600160a01b0384165f908152600a602052604090205460646115cd64174876e8008661182b565b6115d7919061182b565b6115e19190611801565b90506115eb565b505f5b9392505050565b6115fa61115f565b600454335f9081526010602052604090205461161691906118b1565b42116109f05760405162461bcd60e51b815260206004820152601d60248201527f43616e6e6f7420636c61696d20696e207468652073616d65626c6f636b00000060448201526064016104cc565b5f5460ff166109f05760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b60448201526064016104cc565b80356001600160a01b03811681146116c2575f80fd5b919050565b5f602082840312156116d7575f80fd5b6115eb826116ac565b5f602082840312156116f0575f80fd5b5035919050565b801515811461056c575f80fd5b5f8060408385031215611715575f80fd5b61171e836116ac565b9150602083013561172e816116f7565b809150509250929050565b60208082526023908201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206d756c746960408201526273696760e81b606082015260800190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b6020808252601190820152704e6f7420656e6f75676820746f6b656e7360781b604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b818103818111156108f7576108f76117ed565b80820281158282048414176108f7576108f76117ed565b5f8261184557634e487b7160e01b5f52601260045260245ffd5b500490565b5f6020828403121561185a575f80fd5b81516115eb816116f7565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b5f602082840312156118aa575f80fd5b5051919050565b808201808211156108f7576108f76117ed56fea2646970667358221220d4b42bc3f884f894048413ca5176b3560cf98a7bacc55474ef53cf278053c60464736f6c63430008150033

Deployed Bytecode

0x608060405234801561000f575f80fd5b50600436106101e7575f3560e01c806384201bd911610109578063b88a802f1161009e578063d826f88f1161006e578063d826f88f14610457578063ef40a6701461045f578063f2fde38b14610487578063f7b188a51461049a575f80fd5b8063b88a802f14610404578063bca238aa1461040c578063c241267614610437578063c33ac9b71461044a575f80fd5b8063a2df2ba7116100d9578063a2df2ba7146103b7578063a694fc3a146103df578063ae7b6d16146103f2578063afb838e7146103fb575f80fd5b806384201bd91461035d5780638da5cb5b1461037057806399f853a5146103855780639d8f7706146103a4575f80fd5b806338700bfe1161017f57806360c251c11161014f57806360c251c1146102fc5780636c03932f14610305578063700a4a741461032d578063715018a614610355575f80fd5b806338700bfe1461029a5780634783c35b146102a25780634f726a3d146102c75780635c975abb146102f2575f80fd5b80632790eb53116101ba5780632790eb531461024e5780632e1a7d4d1461025757806331d7a2621461026a578063341e7dcc1461027d575f80fd5b80630700037d146101eb578063144fa6d71461021d57806318160ddd146102325780632138b7c11461023b575b5f80fd5b61020a6101f93660046116c7565b600b6020525f908152604090205481565b6040519081526020015b60405180910390f35b61023061022b3660046116c7565b6104a2565b005b61020a60055481565b6102306102493660046116c7565b610513565b61020a60045481565b6102306102653660046116e0565b61056f565b61020a6102783660046116c7565b6108ed565b60065461028a9060ff1681565b6040519015158152602001610214565b6102306108fd565b6001546001600160a01b03165b6040516001600160a01b039091168152602001610214565b61028a6102d53660046116c7565b6001600160a01b03165f9081526011602052604090205460ff1690565b5f5460ff1661028a565b61020a60145481565b61020a6103133660046116c7565b6001600160a01b03165f908152600c602052604090205490565b61020a61033b3660046116c7565b6001600160a01b03165f908152600a602052604090205490565b6102306109a3565b61023061036b3660046116e0565b6109f2565b5f5461010090046001600160a01b03166102af565b61020a6103933660046116c7565b60026020525f908152604090205481565b6102306103b2366004611704565b610b55565b61020a6103c53660046116c7565b6001600160a01b03165f9081526010602052604090205490565b6102306103ed3660046116e0565b610bc3565b61020a60155481565b61020a60035481565b610230610d2c565b61028a61041a3660046116c7565b6001600160a01b03165f9081526012602052604090205460ff1690565b6016546102af906001600160a01b031681565b60095461028a9060ff1681565b610230610f3e565b61020a61046d3660046116c7565b6001600160a01b03165f908152600f602052604090205490565b6102306104953660046116c7565b611069565b6102306110dc565b6001546001600160a01b031633146104d55760405162461bcd60e51b81526004016104cc90611739565b60405180910390fd5b60095460ff16156104e4575f80fd5b601680546001600160a01b0319166001600160a01b03929092169190911790556009805460ff19166001179055565b6001546001600160a01b0316331461053d5760405162461bcd60e51b81526004016104cc90611739565b6001600160a01b0381166105635760405162461bcd60e51b81526004016104cc9061177c565b61056c8161110e565b50565b61057761115f565b33610580575f80fd5b5f81116105cf5760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e742073686f756c642062652067726561746572207468616e20300060448201526064016104cc565b335f908152600f60205260409020548111156105fd5760405162461bcd60e51b81526004016104cc906117c2565b335f908152600260205260408120546106169042611801565b905060145481101561078b575f6064601554846106339190611814565b61063d919061182b565b90505f61064a8285611801565b335f908152600f602052604081208054929350869290919061066d908490611801565b925050819055508360055f8282546106859190611801565b909155505060165460405163a9059cbb60e01b8152336004820152602481018390526001600160a01b039091169063a9059cbb906044016020604051808303815f875af11580156106d8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106fc919061184a565b5060165460405163a9059cbb60e01b815273ff27b3b352853ccf039e4a33a89ede072759e6756004820152602481018490526001600160a01b039091169063a9059cbb906044016020604051808303815f875af115801561075f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610783919061184a565b50505061083a565b335f908152600f6020526040812080548492906107a9908490611801565b925050819055508160055f8282546107c19190611801565b909155505060165460405163a9059cbb60e01b8152336004820152602481018490526001600160a01b039091169063a9059cbb906044016020604051808303815f875af1158015610814573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610838919061184a565b505b335f908152600d60209081526040808320429055600f9091529020541580156108b5576108b5335f908152601160209081526040808320805460ff19169055600b8252808320839055600a825280832083905560108252808320839055600c8252808320839055600f82528083208390556002909152812055565b6040518381527fc483bf0af3b237d0e8f42091db468219edf0d51b24995513b57b9857be7871549060200160405180910390a1505050565b5f6108f7826111a4565b92915050565b5f546001600160a01b036101009091041633148061092557506001546001600160a01b031633145b6109415760405162461bcd60e51b81526004016104cc90611865565b60065460ff16156109945760405162461bcd60e51b815260206004820152601760248201527f5374616b696e6720697320616c7265616479206c69766500000000000000000060448201526064016104cc565b6006805460ff19166001179055565b5f546001600160a01b03610100909104163314806109cb57506001546001600160a01b031633145b6109e75760405162461bcd60e51b81526004016104cc90611865565b6109f05f611225565b565b5f546001600160a01b0361010090910416331480610a1a57506001546001600160a01b031633145b610a365760405162461bcd60e51b81526004016104cc90611865565b6016546040516370a0823160e01b81523360048201525f916001600160a01b0316906370a0823190602401602060405180830381865afa158015610a7c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610aa0919061189a565b905081811015610ac25760405162461bcd60e51b81526004016104cc906117c2565b6016546040516323b872dd60e01b8152336004820152306024820152604481018490526001600160a01b03909116906323b872dd906064016020604051808303815f875af1158015610b16573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b3a919061184a565b508160035f828254610b4c91906118b1565b90915550505050565b5f546001600160a01b0361010090910416331480610b7d57506001546001600160a01b031633145b610b995760405162461bcd60e51b81526004016104cc90611865565b6001600160a01b03919091165f908152601260205260409020805460ff1916911515919091179055565b610bcb61115f565b33610bd4575f80fd5b60065460ff16610c265760405162461bcd60e51b815260206004820152601860248201527f5374616b696e67206973206e6f74206c697665207965742e000000000000000060448201526064016104cc565b335f9081526011602052604090205460ff1615156001148015610cd457335f908152600f6020526040902054610c5f906103e89061182b565b610c68336111a4565b10610cd45760405162461bcd60e51b815260206004820152603660248201527f436c61696d20526577617264732c20796f752068617665206174206c6561737460448201527520302e3125207265776172647320746f20636c61696d60501b60648201526084016104cc565b610cdd8261127d565b335f9081526002602052604090819020429055517f1dbb2a223bf10b333097931146bfc57c2b39e7c0615d1b275c61bb2eb417f65890610d209084815260200190565b60405180910390a15050565b610d3461115f565b33610d3d575f80fd5b610d45611430565b610d4d6114b5565b335f908152600b6020526040902054610db25760405162461bcd60e51b815260206004820152602160248201527f43616e277420636c61696d206c657373207468616e207a65726f20746f6b656e6044820152607360f81b60648201526084016104cc565b335f818152600b60205260409081902054601654915163a9059cbb60e01b8152600481019390935260248301819052916001600160a01b039091169063a9059cbb906044016020604051808303815f875af1158015610e13573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e37919061184a565b50335f908152600a602052604081208054839290610e569084906118b1565b9091555050335f9081526010602052604090204290556003548110610ef25760405162461bcd60e51b815260206004820152604660248201527f546f6b656e20486f6c64657273206e65656420746f2062652061626c6520746f60448201527f20676574206261636b2031303025206f662074686520746f6b656e7320616c6c6064820152651bd8d85d195960d21b608482015260a4016104cc565b8060035f828254610f039190611801565b90915550506040518181527fbacfa9662d479c707dae707c358323f0c7711ef382007957dc9935e629da36b29060200160405180910390a150565b6001546001600160a01b03163314610f685760405162461bcd60e51b81526004016104cc90611739565b6016546040516370a0823160e01b81523060048201525f916001600160a01b0316906370a0823190602401602060405180830381865afa158015610fae573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fd2919061189a565b9050801561104e5760165460405163a9059cbb60e01b8152336004820152602481018390526001600160a01b039091169063a9059cbb906044016020604051808303815f875af1158015611028573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061104c919061184a565b505b5f60138190556003556006805460ff1916905561056c6114d9565b5f546001600160a01b036101009091041633148061109157506001546001600160a01b031633145b6110ad5760405162461bcd60e51b81526004016104cc90611865565b6001600160a01b0381166110d35760405162461bcd60e51b81526004016104cc9061177c565b61056c81611225565b6001546001600160a01b031633146111065760405162461bcd60e51b81526004016104cc90611739565b6109f0611532565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907fd4f90286c853b31e785ae85d08354a790ca9eba6e6eac5152d619cb54766e120905f90a35050565b5f5460ff16156109f05760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b60448201526064016104cc565b5f80620151806013546111b7919061182b565b6001600160a01b0384165f908152600c60205260408120549192509082906111df9042611801565b6111e99190611814565b6001600160a01b0385165f908152600f602052604081205491925090611210908390611814565b905061121c858261156a565b95945050505050565b5f80546001600160a01b03838116610100818102610100600160a81b0319851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b6016546040516370a0823160e01b81523360048201525f916001600160a01b0316906370a0823190602401602060405180830381865afa1580156112c3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112e7919061189a565b60065490915060ff166113325760405162461bcd60e51b81526020600482015260136024820152725374616b696e67206973206e6f74206c69766560681b60448201526064016104cc565b818110156113525760405162461bcd60e51b81526004016104cc906117c2565b6016546040516323b872dd60e01b8152336004820152306024820152604481018490526001600160a01b03909116906323b872dd906064016020604051808303815f875af11580156113a6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113ca919061184a565b50335f908152600f6020526040812080548492906113e99084906118b1565b925050819055508160055f82825461140191906118b1565b9091555050335f908152600c6020908152604080832042905560119091529020805460ff191660011790555050565b5f62015180601354611442919061182b565b335f908152600c60205260408120549192509082906114619042611801565b61146b9190611814565b335f908152600f6020526040902054909150611488908290611814565b335f818152600b602052604090208290556114a29161156a565b335f908152600b60205260409020555050565b335f9081526011602052604090205460ff1615156001148061056c5761056c6115f2565b6114e161115f565b5f805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586115153390565b6040516001600160a01b03909116815260200160405180910390a1565b61153a611664565b5f805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa33611515565b6001600160a01b0382165f908152600a60205260408120548190606461159564174876e8008661182b565b61159f919061182b565b106115e8576001600160a01b0384165f908152600a602052604090205460646115cd64174876e8008661182b565b6115d7919061182b565b6115e19190611801565b90506115eb565b505f5b9392505050565b6115fa61115f565b600454335f9081526010602052604090205461161691906118b1565b42116109f05760405162461bcd60e51b815260206004820152601d60248201527f43616e6e6f7420636c61696d20696e207468652073616d65626c6f636b00000060448201526064016104cc565b5f5460ff166109f05760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b60448201526064016104cc565b80356001600160a01b03811681146116c2575f80fd5b919050565b5f602082840312156116d7575f80fd5b6115eb826116ac565b5f602082840312156116f0575f80fd5b5035919050565b801515811461056c575f80fd5b5f8060408385031215611715575f80fd5b61171e836116ac565b9150602083013561172e816116f7565b809150509250929050565b60208082526023908201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206d756c746960408201526273696760e81b606082015260800190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b6020808252601190820152704e6f7420656e6f75676820746f6b656e7360781b604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b818103818111156108f7576108f76117ed565b80820281158282048414176108f7576108f76117ed565b5f8261184557634e487b7160e01b5f52601260045260245ffd5b500490565b5f6020828403121561185a575f80fd5b81516115eb816116f7565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b5f602082840312156118aa575f80fd5b5051919050565b808201808211156108f7576108f76117ed56fea2646970667358221220d4b42bc3f884f894048413ca5176b3560cf98a7bacc55474ef53cf278053c60464736f6c63430008150033

Deployed Bytecode Sourcemap

3878:8739:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4514:42;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;529:25:1;;;517:2;502:18;4514:42:0;;;;;;;;5215:162;;;;;;:::i;:::-;;:::i;:::-;;4251:26;;;;;;2560:212;;;;;;:::i;:::-;;:::i;4213:31::-;;;;;;7719:1450;;;;;;:::i;:::-;;:::i;12499:111::-;;;;;;:::i;:::-;;:::i;4314:33::-;;;;;;;;;;;;915:14:1;;908:22;890:41;;878:2;863:18;4314:33:0;750:187:1;5960:144:0;;;:::i;1761:93::-;1837:9;;-1:-1:-1;;;;;1837:9:0;1761:93;;;-1:-1:-1;;;;;1106:32:1;;;1088:51;;1076:2;1061:18;1761:93:0;942:203:1;11601:116:0;;;;;;:::i;:::-;-1:-1:-1;;;;;11688:21:0;11664:4;11688:21;;;:13;:21;;;;;;;;;11601:116;769:86;816:4;840:7;;;769:86;;5006:47;;;;;;11228:114;;;;;;:::i;:::-;-1:-1:-1;;;;;11315:19:0;11288:7;11315:19;;;:11;:19;;;;;;;11228:114;11101:119;;;;;;:::i;:::-;-1:-1:-1;;;;;11188:24:0;11161:7;11188:24;;;:16;:24;;;;;;;11101:119;2258:94;;;:::i;5596:356::-;;;;;;:::i;:::-;;:::i;1862:87::-;1908:7;1935:6;;;;-1:-1:-1;;;;;1935:6:0;1862:87;;4065:48;;;;;;:::i;:::-;;;;;;;;;;;;;;5469:119;;;;;;:::i;:::-;;:::i;11350:121::-;;;;;;:::i;:::-;-1:-1:-1;;;;;11439:24:0;11412:7;11439:24;;;:16;:24;;;;;;;11350:121;7017:549;;;;;;:::i;:::-;;:::i;5060:33::-;;;;;;4120:39;;;;;;10290:676;;;:::i;11479:114::-;;;;;;:::i;:::-;-1:-1:-1;;;;;11565:20:0;11541:4;11565:20;;;:12;:20;;;;;;;;;11479:114;5187:19;;;;;-1:-1:-1;;;;;5187:19:0;;;4418:30;;;;;;;;;6116:331;;;:::i;10974:119::-;;;;;;:::i;:::-;-1:-1:-1;;;;;11062:23:0;11035:7;11062:23;;;:15;:23;;;;;;;10974:119;2360:192;;;;;;:::i;:::-;;:::i;5385:76::-;;;:::i;5215:162::-;1837:9;;-1:-1:-1;;;;;1837:9:0;235:10;2164:26;2156:74;;;;-1:-1:-1;;;2156:74:0;;;;;;;:::i;:::-;;;;;;;;;5297:10:::1;::::0;::::1;;5296:11;5288:20;;;::::0;::::1;;5319:5;:22:::0;;-1:-1:-1;;;;;;5319:22:0::1;-1:-1:-1::0;;;;;5319:22:0;;;::::1;::::0;;;::::1;::::0;;5352:10:::1;:17:::0;;-1:-1:-1;;5352:17:0::1;-1:-1:-1::0;5352:17:0::1;::::0;;5215:162::o;2560:212::-;1837:9;;-1:-1:-1;;;;;1837:9:0;235:10;2164:26;2156:74;;;;-1:-1:-1;;;2156:74:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;2660:25:0;::::1;2652:76;;;;-1:-1:-1::0;;;2652:76:0::1;;;;;;;:::i;:::-;2739:25;2752:11;2739:12;:25::i;:::-;2560:212:::0;:::o;7719:1450::-;645:19;:17;:19::i;:::-;7795:10:::1;7787:33;;;::::0;::::1;;7848:1;7839:6;:10;7831:54;;;::::0;-1:-1:-1;;;7831:54:0;;2828:2:1;7831:54:0::1;::::0;::::1;2810:21:1::0;2867:2;2847:18;;;2840:30;2906:33;2886:18;;;2879:61;2957:18;;7831:54:0::1;2626:355:1::0;7831:54:0::1;7920:10;7904:27;::::0;;;:15:::1;:27;::::0;;;;;:37;-1:-1:-1;7904:37:0::1;7896:67;;;;-1:-1:-1::0;;;7896:67:0::1;;;;;;;:::i;:::-;8033:10;7976:20;8017:27:::0;;;:15:::1;:27;::::0;;;;;7999:45:::1;::::0;:15:::1;:45;:::i;:::-;7976:68;;8074:22;;8059:12;:37;8055:878;;;8166:17;8213:3;8196:13;;8187:6;:22;;;;:::i;:::-;8186:30;;;;:::i;:::-;8166:50:::0;-1:-1:-1;8231:17:0::1;8251:18;8166:50:::0;8251:6;:18:::1;:::i;:::-;8302:10;8286:27;::::0;;;:15:::1;:27;::::0;;;;:37;;8231:38;;-1:-1:-1;8317:6:0;;8286:27;;;:37:::1;::::0;8317:6;;8286:37:::1;:::i;:::-;;;;;;;;8353:6;8338:11;;:21;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;8456:5:0::1;::::0;:37:::1;::::0;-1:-1:-1;;;8456:37:0;;8471:10:::1;8456:37;::::0;::::1;4166:51:1::0;4233:18;;;4226:34;;;-1:-1:-1;;;;;8456:5:0;;::::1;::::0;:14:::1;::::0;4139:18:1;;8456:37:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;8575:5:0::1;::::0;:78:::1;::::0;-1:-1:-1;;;8575:78:0;;8598:42:::1;8575:78;::::0;::::1;4166:51:1::0;4233:18;;;4226:34;;;-1:-1:-1;;;;;8575:5:0;;::::1;::::0;:14:::1;::::0;4139:18:1;;8575:78:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;8098:567;;8055:878;;;8751:10;8735:27;::::0;;;:15:::1;:27;::::0;;;;:37;;8766:6;;8735:27;:37:::1;::::0;8766:6;;8735:37:::1;:::i;:::-;;;;;;;;8802:6;8787:11;;:21;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;8887:5:0::1;::::0;:34:::1;::::0;-1:-1:-1;;;8887:34:0;;8902:10:::1;8887:34;::::0;::::1;4166:51:1::0;4233:18;;;4226:34;;;-1:-1:-1;;;;;8887:5:0;;::::1;::::0;:14:::1;::::0;4139:18:1;;8887:34:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;8055:878;8960:10;8945:26;::::0;;;:14:::1;:26;::::0;;;;;;;8974:15:::1;8945:44:::0;;9019:15:::1;:27:::0;;;;;;:32;9062:55;::::1;;;9094:11;9241:10:::0;9255:5;9227:25;;;:13;:25;;;;;;;;:33;;-1:-1:-1;;9227:33:0;;;9275:7;:19;;;;;:23;;;9313:16;:28;;;;;:32;;;9360:16;:28;;;;;:32;;;9407:11;:23;;;;;:27;;;9449:15;:27;;;;;:31;;;9495:15;:27;;;;;:31;9183:351;9094:11:::1;9134:27;::::0;529:25:1;;;9134:27:0::1;::::0;517:2:1;502:18;9134:27:0::1;;;;;;;7776:1393;;7719:1450:::0;:::o;12499:111::-;12562:7;12589:13;12594:7;12589:4;:13::i;:::-;12582:20;12499:111;-1:-1:-1;;12499:111:0:o;5960:144::-;1908:7;1935:6;-1:-1:-1;;;;;1935:6:0;;;;;235:10;1997:23;;:53;;-1:-1:-1;1837:9:0;;-1:-1:-1;;;;;1837:9:0;235:10;2024:26;1997:53;1989:98;;;;-1:-1:-1;;;1989:98:0;;;;;;;:::i;:::-;6025:13:::1;::::0;::::1;;6024:14;6016:49;;;::::0;-1:-1:-1;;;6016:49:0;;5084:2:1;6016:49:0::1;::::0;::::1;5066:21:1::0;5123:2;5103:18;;;5096:30;5162:25;5142:18;;;5135:53;5205:18;;6016:49:0::1;4882:347:1::0;6016:49:0::1;6076:13;:20:::0;;-1:-1:-1;;6076:20:0::1;6092:4;6076:20;::::0;;5960:144::o;2258:94::-;1908:7;1935:6;-1:-1:-1;;;;;1935:6:0;;;;;235:10;1997:23;;:53;;-1:-1:-1;1837:9:0;;-1:-1:-1;;;;;1837:9:0;235:10;2024:26;1997:53;1989:98;;;;-1:-1:-1;;;1989:98:0;;;;;;;:::i;:::-;2323:21:::1;2341:1;2323:9;:21::i;:::-;2258:94::o:0;5596:356::-;1908:7;1935:6;-1:-1:-1;;;;;1935:6:0;;;;;235:10;1997:23;;:53;;-1:-1:-1;1837:9:0;;-1:-1:-1;;;;;1837:9:0;235:10;2024:26;1997:53;1989:98;;;;-1:-1:-1;;;1989:98:0;;;;;;;:::i;:::-;5701:5:::1;::::0;:27:::1;::::0;-1:-1:-1;;;5701:27:0;;5717:10:::1;5701:27;::::0;::::1;1088:51:1::0;5679:19:0::1;::::0;-1:-1:-1;;;;;5701:5:0::1;::::0;:15:::1;::::0;1061:18:1;;5701:27:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5679:49;;5766:6;5751:11;:21;;5743:50;;;;-1:-1:-1::0;;;5743:50:0::1;;;;;;;:::i;:::-;5808:5;::::0;:53:::1;::::0;-1:-1:-1;;;5808:53:0;;5827:10:::1;5808:53;::::0;::::1;5663:34:1::0;5847:4:0::1;5713:18:1::0;;;5706:43;5765:18;;;5758:34;;;-1:-1:-1;;;;;5808:5:0;;::::1;::::0;:18:::1;::::0;5598::1;;5808:53:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;5938:6;5910:24;;:34;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;;;5596:356:0:o;5469:119::-;1908:7;1935:6;-1:-1:-1;;;;;1935:6:0;;;;;235:10;1997:23;;:53;;-1:-1:-1;1837:9:0;;-1:-1:-1;;;;;1837:9:0;235:10;2024:26;1997:53;1989:98;;;;-1:-1:-1;;;1989:98:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;5552:20:0;;;::::1;;::::0;;;:12:::1;:20;::::0;;;;:28;;-1:-1:-1;;5552:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;5469:119::o;7017:549::-;645:19;:17;:19::i;:::-;7090:10:::1;7082:33;;;::::0;::::1;;7134:13;::::0;::::1;;7126:49;;;::::0;-1:-1:-1;;;7126:49:0;;6135:2:1;7126:49:0::1;::::0;::::1;6117:21:1::0;6174:2;6154:18;;;6147:30;6213:26;6193:18;;;6186:54;6257:18;;7126:49:0::1;5933:348:1::0;7126:49:0::1;7221:10;7188:16;7207:25:::0;;;:13:::1;:25;::::0;;;;;::::1;;:33;;:25:::0;:33:::1;7251:188:::0;::::1;;;7321:10;7305:27;::::0;;;:15:::1;:27;::::0;;;;;:34:::1;::::0;7335:4:::1;::::0;7305:34:::1;:::i;:::-;7285:16;7290:10;7285:4;:16::i;:::-;:54;7282:128;;7343:64;::::0;-1:-1:-1;;;7343:64:0;;6488:2:1;7343:64:0::1;::::0;::::1;6470:21:1::0;6527:2;6507:18;;;6500:30;6566:34;6546:18;;;6539:62;-1:-1:-1;;;6617:18:1;;;6610:52;6679:19;;7343:64:0::1;6286:418:1::0;7282:128:0::1;7451:20;7464:6;7451:12;:20::i;:::-;7498:10;7482:27;::::0;;;:15:::1;:27;::::0;;;;;;7512:15:::1;7482:45:::0;;7541:15;::::1;::::0;::::1;::::0;7549:6;529:25:1;;517:2;502:18;;383:177;7541:15:0::1;;;;;;;;7071:495;7017:549:::0;:::o;10290:676::-;645:19;:17;:19::i;:::-;10353:10:::1;10345:33;;;::::0;::::1;;10389:18;:16;:18::i;:::-;10418:8;:6;:8::i;:::-;10455:10;10469:1;10447:19:::0;;;:7:::1;:19;::::0;;;;;10439:69:::1;;;::::0;-1:-1:-1;;;10439:69:0;;6911:2:1;10439:69:0::1;::::0;::::1;6893:21:1::0;6950:2;6930:18;;;6923:30;6989:34;6969:18;;;6962:62;-1:-1:-1;;;7040:18:1;;;7033:31;7081:19;;10439:69:0::1;6709:397:1::0;10439:69:0::1;10551:10;10521:19;10543::::0;;;:7:::1;:19;::::0;;;;;;;10584:5:::1;::::0;:39;;-1:-1:-1;;;10584:39:0;;::::1;::::0;::::1;4166:51:1::0;;;;4233:18;;;4226:34;;;10543:19:0;-1:-1:-1;;;;;10584:5:0;;::::1;::::0;:14:::1;::::0;4139:18:1;;10584:39:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;10651:10:0::1;10634:28;::::0;;;:16:::1;:28;::::0;;;;:43;;10666:11;;10634:28;:43:::1;::::0;10666:11;;10634:43:::1;:::i;:::-;::::0;;;-1:-1:-1;;10705:10:0::1;10688:28;::::0;;;:16:::1;:28;::::0;;;;10719:15:::1;10688:46:::0;;10753:24:::1;::::0;:38;-1:-1:-1;10745:120:0::1;;;::::0;-1:-1:-1;;;10745:120:0;;7313:2:1;10745:120:0::1;::::0;::::1;7295:21:1::0;7352:2;7332:18;;;7325:30;7391:34;7371:18;;;7364:62;7462:34;7442:18;;;7435:62;-1:-1:-1;;;7513:19:1;;;7506:37;7560:19;;10745:120:0::1;7111:474:1::0;10745:120:0::1;10904:11;10876:24;;:39;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;10933:25:0::1;::::0;529::1;;;10933::0::1;::::0;517:2:1;502:18;10933:25:0::1;;;;;;;10334:632;10290:676::o:0;6116:331::-;1837:9;;-1:-1:-1;;;;;1837:9:0;235:10;2164:26;2156:74;;;;-1:-1:-1;;;2156:74:0;;;;;;;:::i;:::-;6194:5:::1;::::0;:30:::1;::::0;-1:-1:-1;;;6194:30:0;;6218:4:::1;6194:30;::::0;::::1;1088:51:1::0;6172:19:0::1;::::0;-1:-1:-1;;;;;6194:5:0::1;::::0;:15:::1;::::0;1061:18:1;;6194:30:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6172:52:::0;-1:-1:-1;6238:15:0;;6235:86:::1;;6270:5;::::0;:39:::1;::::0;-1:-1:-1;;;6270:39:0;;6285:10:::1;6270:39;::::0;::::1;4166:51:1::0;4233:18;;;4226:34;;;-1:-1:-1;;;;;6270:5:0;;::::1;::::0;:14:::1;::::0;4139:18:1;;6270:39:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;6235:86;6348:1;6331:14;:18:::0;;;6360:24:::1;:28:::0;6399:13:::1;:21:::0;;-1:-1:-1;;6399:21:0::1;::::0;;6431:8:::1;:6;:8::i;2360:192::-:0;1908:7;1935:6;-1:-1:-1;;;;;1935:6:0;;;;;235:10;1997:23;;:53;;-1:-1:-1;1837:9:0;;-1:-1:-1;;;;;1837:9:0;235:10;2024:26;1997:53;1989:98;;;;-1:-1:-1;;;1989:98:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;2449:22:0;::::1;2441:73;;;;-1:-1:-1::0;;;2441:73:0::1;;;;;;;:::i;:::-;2525:19;2535:8;2525:9;:19::i;5385:76::-:0;1837:9;;-1:-1:-1;;;;;1837:9:0;235:10;2164:26;2156:74;;;;-1:-1:-1;;;2156:74:0;;;;;;;:::i;:::-;5443:10:::1;:8;:10::i;2961:196::-:0;3045:9;;;-1:-1:-1;;;;;3065:23:0;;;-1:-1:-1;;;;;;3065:23:0;;;;;;;3104:45;;3045:9;;;3065:23;3045:9;;3104:45;;3023:19;;3104:45;3012:145;2961:196;:::o;863:108::-;816:4;840:7;;;933:9;925:38;;;;-1:-1:-1;;;925:38:0;;7792:2:1;925:38:0;;;7774:21:1;7831:2;7811:18;;;7804:30;-1:-1:-1;;;7850:18:1;;;7843:46;7906:18;;925:38:0;7590:340:1;11725:411:0;11778:7;11798:25;11843:5;11826:14;;:22;;;;:::i;:::-;-1:-1:-1;;;;;11907:20:0;;11850:16;11907:20;;;:11;:20;;;;;;11798:50;;-1:-1:-1;11850:16:0;11798:50;;11889:38;;:15;:38;:::i;:::-;11888:60;;;;:::i;:::-;-1:-1:-1;;;;;12002:24:0;;11959:18;12002:24;;;:15;:24;;;;;;11850:98;;-1:-1:-1;11959:18:0;12002:35;;11850:98;;12002:35;:::i;:::-;11988:50;;12062:34;12076:7;12085:10;12062:13;:34::i;:::-;12049:47;11725:411;-1:-1:-1;;;;;11725:411:0:o;2780:173::-;2836:16;2855:6;;-1:-1:-1;;;;;2872:17:0;;;2855:6;2872:17;;;-1:-1:-1;;;;;;2872:17:0;;;;;2905:40;;2855:6;;;;;;;2872:17;;2855:6;;2905:40;;;2825:128;2780:173;:::o;6455:554::-;6534:5;;:27;;-1:-1:-1;;;6534:27:0;;6550:10;6534:27;;;1088:51:1;6512:19:0;;-1:-1:-1;;;;;6534:5:0;;:15;;1061:18:1;;6534:27:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6580:13;;6512:49;;-1:-1:-1;6580:13:0;;6572:44;;;;-1:-1:-1;;;6572:44:0;;8137:2:1;6572:44:0;;;8119:21:1;8176:2;8156:18;;;8149:30;-1:-1:-1;;;8195:18:1;;;8188:49;8254:18;;6572:44:0;7935:343:1;6572:44:0;6650:6;6635:11;:21;;6627:50;;;;-1:-1:-1;;;6627:50:0;;;;;;;:::i;:::-;6688:5;;:53;;-1:-1:-1;;;6688:53:0;;6707:10;6688:53;;;5663:34:1;6727:4:0;5713:18:1;;;5706:43;5765:18;;;5758:34;;;-1:-1:-1;;;;;6688:5:0;;;;:18;;5598::1;;6688:53:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;6768:10:0;6752:27;;;;:15;:27;;;;;:37;;6783:6;;6752:27;:37;;6783:6;;6752:37;:::i;:::-;;;;;;;;6815:6;6800:11;;:21;;;;;;;:::i;:::-;;;;-1:-1:-1;;6844:10:0;6832:23;;;;:11;:23;;;;;;;;6858:15;6832:41;;6969:13;:25;;;;;:32;;-1:-1:-1;;6969:32:0;6997:4;6969:32;;;-1:-1:-1;;6455:554:0:o;9548:367::-;9596:25;9641:5;9624:14;;:22;;;;:::i;:::-;9707:10;9648:16;9695:23;;;:11;:23;;;;;;9596:50;;-1:-1:-1;9648:16:0;9596:50;;9677:41;;:15;:41;:::i;:::-;9676:63;;;;:::i;:::-;9789:10;9773:27;;;;:15;:27;;;;;;9648:91;;-1:-1:-1;9773:38:0;;9648:91;;9773:38;:::i;:::-;9758:10;9750:19;;;;:7;:19;;;;;:62;;;9845:46;;:13;:46::i;:::-;9831:10;9823:19;;;;:7;:19;;;;;:68;-1:-1:-1;;9548:367:0:o;10099:183::-;10176:10;10143:16;10162:25;;;:13;:25;;;;;;;;:33;;:25;:33;;10206:67;;10255:6;:4;:6::i;1095:118::-;645:19;:17;:19::i;:::-;1155:7:::1;:14:::0;;-1:-1:-1;;1155:14:0::1;1165:4;1155:14;::::0;;1185:20:::1;1192:12;235:10:::0;;147:107;1192:12:::1;1185:20;::::0;-1:-1:-1;;;;;1106:32:1;;;1088:51;;1076:2;1061:18;1185:20:0::1;;;;;;;1095:118::o:0;1221:120::-;725:16;:14;:16::i;:::-;1290:5:::1;1280:15:::0;;-1:-1:-1;;1280:15:0::1;::::0;;1311:22:::1;235:10:::0;1320:12:::1;147:107:::0;12144:346;-1:-1:-1;;;;;12296:25:0;;12217:7;12296:25;;;:16;:25;;;;;;12217:7;;12289:3;12268:16;12272:12;12268:1;:16;:::i;:::-;12266:26;;;;:::i;:::-;:55;12263:195;;-1:-1:-1;;;;;12377:25:0;;;;;;:16;:25;;;;;;12371:3;12350:16;12354:12;12350:1;:16;:::i;:::-;12348:26;;;;:::i;:::-;:54;;;;:::i;:::-;12338:64;;12263:195;;;-1:-1:-1;12445:1:0;12263:195;12475:7;12144:346;-1:-1:-1;;;12144:346:0:o;9927:164::-;645:19;:17;:19::i;:::-;10038:11:::1;::::0;10024:10:::1;10007:28;::::0;;;:16:::1;:28;::::0;;;;;:42:::1;::::0;10038:11;10007:42:::1;:::i;:::-;9989:15;:60;9981:102;;;::::0;-1:-1:-1;;;9981:102:0;;8701:2:1;9981:102:0::1;::::0;::::1;8683:21:1::0;8740:2;8720:18;;;8713:30;8779:31;8759:18;;;8752:59;8828:18;;9981:102:0::1;8499:353:1::0;979:108:0;816:4;840:7;;;1038:41;;;;-1:-1:-1;;;1038:41:0;;9059:2:1;1038:41:0;;;9041:21:1;9098:2;9078:18;;;9071:30;-1:-1:-1;;;9117:18:1;;;9110:50;9177:18;;1038:41:0;8857:344:1;14:173;82:20;;-1:-1:-1;;;;;131:31:1;;121:42;;111:70;;177:1;174;167:12;111:70;14:173;;;:::o;192:186::-;251:6;304:2;292:9;283:7;279:23;275:32;272:52;;;320:1;317;310:12;272:52;343:29;362:9;343:29;:::i;565:180::-;624:6;677:2;665:9;656:7;652:23;648:32;645:52;;;693:1;690;683:12;645:52;-1:-1:-1;716:23:1;;565:180;-1:-1:-1;565:180:1:o;1150:118::-;1236:5;1229:13;1222:21;1215:5;1212:32;1202:60;;1258:1;1255;1248:12;1273:315;1338:6;1346;1399:2;1387:9;1378:7;1374:23;1370:32;1367:52;;;1415:1;1412;1405:12;1367:52;1438:29;1457:9;1438:29;:::i;:::-;1428:39;;1517:2;1506:9;1502:18;1489:32;1530:28;1552:5;1530:28;:::i;:::-;1577:5;1567:15;;;1273:315;;;;;:::o;1815:399::-;2017:2;1999:21;;;2056:2;2036:18;;;2029:30;2095:34;2090:2;2075:18;;2068:62;-1:-1:-1;;;2161:2:1;2146:18;;2139:33;2204:3;2189:19;;1815:399::o;2219:402::-;2421:2;2403:21;;;2460:2;2440:18;;;2433:30;2499:34;2494:2;2479:18;;2472:62;-1:-1:-1;;;2565:2:1;2550:18;;2543:36;2611:3;2596:19;;2219:402::o;2986:341::-;3188:2;3170:21;;;3227:2;3207:18;;;3200:30;-1:-1:-1;;;3261:2:1;3246:18;;3239:47;3318:2;3303:18;;2986:341::o;3332:127::-;3393:10;3388:3;3384:20;3381:1;3374:31;3424:4;3421:1;3414:15;3448:4;3445:1;3438:15;3464:128;3531:9;;;3552:11;;;3549:37;;;3566:18;;:::i;3597:168::-;3670:9;;;3701;;3718:15;;;3712:22;;3698:37;3688:71;;3739:18;;:::i;3770:217::-;3810:1;3836;3826:132;;3880:10;3875:3;3871:20;3868:1;3861:31;3915:4;3912:1;3905:15;3943:4;3940:1;3933:15;3826:132;-1:-1:-1;3972:9:1;;3770:217::o;4271:245::-;4338:6;4391:2;4379:9;4370:7;4366:23;4362:32;4359:52;;;4407:1;4404;4397:12;4359:52;4439:9;4433:16;4458:28;4480:5;4458:28;:::i;4521:356::-;4723:2;4705:21;;;4742:18;;;4735:30;4801:34;4796:2;4781:18;;4774:62;4868:2;4853:18;;4521:356::o;5234:184::-;5304:6;5357:2;5345:9;5336:7;5332:23;5328:32;5325:52;;;5373:1;5370;5363:12;5325:52;-1:-1:-1;5396:16:1;;5234:184;-1:-1:-1;5234:184:1:o;5803:125::-;5868:9;;;5889:10;;;5886:36;;;5902:18;;:::i

Swarm Source

ipfs://d4b42bc3f884f894048413ca5176b3560cf98a7bacc55474ef53cf278053c604

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.