ETH Price: $3,390.55 (+4.37%)
Gas: 2 Gwei

Contract

0xe9527B06CF2A64A9320546D58A71F0667A7A0edE
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Approve182902412023-10-06 8:22:11297 days ago1696580531IN
0xe9527B06...67A7A0edE
0 ETH0.000282966.09256722
Approve181982232023-09-23 11:28:11309 days ago1695468491IN
0xe9527B06...67A7A0edE
0 ETH0.0005100610.96785595
Approve178018602023-07-29 23:05:35365 days ago1690671935IN
0xe9527B06...67A7A0edE
0 ETH0.0010295222.2933294
Approve176525112023-07-09 0:10:23386 days ago1688861423IN
0xe9527B06...67A7A0edE
0 ETH0.0006472813.93663294
Approve176371402023-07-06 20:20:59388 days ago1688674859IN
0xe9527B06...67A7A0edE
0 ETH0.0011442724.63715245
Approve176315282023-07-06 1:26:23389 days ago1688606783IN
0xe9527B06...67A7A0edE
0 ETH0.0027577959.30112144
Approve176287402023-07-05 16:02:11389 days ago1688572931IN
0xe9527B06...67A7A0edE
0 ETH0.003015464.92410511
Approve176286492023-07-05 15:43:47389 days ago1688571827IN
0xe9527B06...67A7A0edE
0 ETH0.002364650.91197949
Approve176285322023-07-05 15:20:23389 days ago1688570423IN
0xe9527B06...67A7A0edE
0 ETH0.0025880155.96803863
Approve176284792023-07-05 15:09:23389 days ago1688569763IN
0xe9527B06...67A7A0edE
0 ETH0.0026101856.52074222
Approve176283612023-07-05 14:45:47389 days ago1688568347IN
0xe9527B06...67A7A0edE
0 ETH0.0025573554.99088169
Approve176283442023-07-05 14:42:23389 days ago1688568143IN
0xe9527B06...67A7A0edE
0 ETH0.0024345752.64976646
Approve176283282023-07-05 14:39:11389 days ago1688567951IN
0xe9527B06...67A7A0edE
0 ETH0.0026699257.81436568
Approve176282492023-07-05 14:23:11389 days ago1688566991IN
0xe9527B06...67A7A0edE
0 ETH0.0024594952.95501056
Update Halving R...176282002023-07-05 14:12:59389 days ago1688566379IN
0xe9527B06...67A7A0edE
0 ETH0.0016386857.19854
Approve176281542023-07-05 14:03:35389 days ago1688565815IN
0xe9527B06...67A7A0edE
0 ETH0.0025629355.18220522
Approve176281212023-07-05 13:56:59389 days ago1688565419IN
0xe9527B06...67A7A0edE
0 ETH0.0024118951.93010965
Approve176280242023-07-05 13:37:23389 days ago1688564243IN
0xe9527B06...67A7A0edE
0 ETH0.001453649.98456595
Approve176277772023-07-05 12:47:35389 days ago1688561255IN
0xe9527B06...67A7A0edE
0 ETH0.0025353754.82967739
Approve176277012023-07-05 12:32:23389 days ago1688560343IN
0xe9527B06...67A7A0edE
0 ETH0.0025183254.15164338
Approve176276932023-07-05 12:30:47389 days ago1688560247IN
0xe9527B06...67A7A0edE
0 ETH0.0025034353.83157888
Approve176276922023-07-05 12:30:35389 days ago1688560235IN
0xe9527B06...67A7A0edE
0 ETH0.0024341352.40900231
Approve176276802023-07-05 12:28:11389 days ago1688560091IN
0xe9527B06...67A7A0edE
0 ETH0.0024677953.43736585
Manual Block Rew...176276332023-07-05 12:18:47389 days ago1688559527IN
0xe9527B06...67A7A0edE
0 ETH0.00432951.68593366
Update Halving R...176276172023-07-05 12:15:35389 days ago1688559335IN
0xe9527B06...67A7A0edE
0 ETH0.0014178649.47014151
View all transactions

Latest 1 internal transaction

Advanced mode:
Parent Transaction Hash Block From To
176266922023-07-05 9:08:35390 days ago1688548115
0xe9527B06...67A7A0edE
1 ETH
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Satoshi20

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

/*
 * Satoshi P2P e-cash paper
 *
 * Satoshi Nakamoto
 * [email protected]
 * www.bitcoin.org
 *
 * Abstract:
 *
 * A purely decentralized implementation of an Ethereum contract, inspired by 
 * Bitcoin's peer-to-peer electronic cash system, enables the direct transfer 
 * of tokens from one party to another without a third-party intermediary. 
 * Cryptographic methods provide part of the solution, but primary advantages 
 * are lost if a trusted authority is still needed to manage token supply and 
 * prevent over-spending.
 *
 * We propose a solution to the token supply management using a 
 * contract-level automated feature. The contract manages the token supply by 
 * calculating the rewards from a block and applying the "BlockReward" event, 
 * forming a record that cannot be altered without redoing the reward event. 
 * The reward event not only serves as evidence of the sequence of operations, 
 * but also as evidence of the largest pool of token holders. As long as a 
 * majority of token holders are not cooperating to disrupt the contract, 
 * they'll validate the longest chain of events and outpace potential adversaries.
 *
 * The contract itself requires minimal structure. Transactions are executed 
 * on a first-come-first-serve basis, and addresses can interact with the 
 * contract at will, accepting the outcome of the longest chain of events as 
 * proof of what happened in their absence. In addition, the contract 
 * periodically contributes tokens to the Satoshi Contribution, effectively 
 * removing them from the circulating supply. This contributes to the scarcity 
 * and potentially the value of the token over time, reflecting the spirit of 
 * Satoshi Nakamoto's vision in the context of an Ethereum contract.
 * 
 * https://twitter.com/0xSatoshiETH
 * https://t.me/SATS20_ETH
*/

pragma solidity 0.8.19;

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

interface InterfaceLP {
    function sync() external;
    function mint(address to) external returns (uint liquidity);
}

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

    constructor(
        string memory _tokenName,
        string memory _tokenSymbol,
        uint8 _tokenDecimals
    ) {
        _name = _tokenName;
        _symbol = _tokenSymbol;
        _decimals = _tokenDecimals;
    }

    function name() public view returns (string memory) {
        return _name;
    }

    function symbol() public view returns (string memory) {
        return _symbol;
    }

    function decimals() public view returns (uint8) {
        return _decimals;
    }
}

interface IDEXRouter {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
}

interface IDEXFactory {
    function createPair(address tokenA, address tokenB)
    external
    returns (address pair);
}

contract Ownable {
    address private _owner;

    event OwnershipRenounced(address indexed previousOwner);

    event OwnershipTransferred(
        address indexed previousOwner,
        address indexed newOwner
    );

    constructor() {
        _owner = msg.sender;
    }

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

    modifier onlyOwner() {
        require(msg.sender == _owner, "Not owner");
        _;
    }

    function renounceOwnership() public onlyOwner {
        emit OwnershipRenounced(_owner);
        _owner = address(0);
    }

    function transferOwnership(address newOwner) public onlyOwner {
        _transferOwnership(newOwner);
    }

    function _transferOwnership(address newOwner) internal {
        require(newOwner != address(0));
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

interface IWETH {
    function deposit() external payable;
}

contract Satoshi20 is ERC20Detailed, Ownable {

    uint256 public halvingRateNumerator = 810101010;
    uint256 public halvingRateDenominator = 100000000000;

    uint256 public blockRewardInterval = 30 minutes;
    uint256 public nextBlockReward;
    bool public autoBlockReward = true;

    uint256 public maxTxnAmount;
    uint256 public maxWallet;

    uint256 public percentForSatoshi = 50;
    bool public satoshiEnabled = true;
    uint256 public satoshiFrequency = 4 hours;
    uint256 public nextSatoshi;

    uint256 private constant DECIMALS = 18;
    uint256 private constant INITIAL_COINS_SUPPLY = 21_000_000 * 10**DECIMALS;
    uint256 private constant TOTAL_UNITS = type(uint256).max - (type(uint256).max % INITIAL_COINS_SUPPLY);
    uint256 private constant MIN_SUPPLY = 21 * 10**DECIMALS;

    event BlockReward(uint256 indexed time, uint256 totalSupply);
    event RemovedLimits();
    event SatoshiContribution(uint256 indexed amount);

    IWETH public immutable weth;

    IDEXRouter public immutable router;
    address public immutable pair;
    address public satoshi;
    
    bool public limitsInEffect = true;
    bool public lpAdded = false;
    
    uint256 private _totalSupply;
    uint256 private _unitsPerCoin;

    mapping(address => uint256) private _unitBalances;
    mapping(address => mapping(address => uint256)) private _allowedCoins;

    modifier validRecipient(address to) {
        require(to != address(0x0));
        _;
    }

    constructor() ERC20Detailed(block.chainid==1 ? "SATOSHI 2.0" : "SAT", block.chainid==1 ? "SATS2.0" : "SAT", 18) {
        address dexAddress;
        if(block.chainid == 1){
            dexAddress = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;
        } else if(block.chainid == 5){
            dexAddress = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;
        } else if (block.chainid == 97){
            dexAddress = 0xD99D1c33F9fC3444f8101754aBC46c52416550D1;
        } else {
            revert("Chain not configured");
        }

        router = IDEXRouter(dexAddress);

        _totalSupply = INITIAL_COINS_SUPPLY;
        _unitBalances[address(this)] = TOTAL_UNITS;
        _unitsPerCoin = TOTAL_UNITS/(_totalSupply);

        maxTxnAmount = _totalSupply * 1 / 100;
        maxWallet = _totalSupply * 1 / 100;

        weth = IWETH(router.WETH());
        pair = IDEXFactory(router.factory()).createPair(address(this), router.WETH());

        satoshi = msg.sender;

        emit Transfer(address(0x0), address(this), balanceOf(address(this)));
    }

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

    function totalSupply() external view override returns (uint256) {
        return _totalSupply;
    }

    function allowance(address owner_, address spender) external view override returns (uint256){
        return _allowedCoins[owner_][spender];
    }

    function balanceOf(address who) public view override returns (uint256) {
        return _unitBalances[who]/(_unitsPerCoin);
    }

    function transfer(address recipient, uint256 amount) public override validRecipient(recipient) returns (bool) {
        _transferFrom(_msgSender(), recipient, amount);
        return true;
    }

    function approve(address spender, uint256 coins) public override returns (bool) {
        _allowedCoins[_msgSender()][spender] = coins;
        emit Approval(_msgSender(), spender, coins);
        return true;
    }

    function transferFrom(address sender, address recipient, uint256 amount) public override validRecipient(recipient) returns (bool) {
        require(amount <= _allowedCoins[sender][_msgSender()], "Transfer amount exceeds allowance");
        _allowedCoins[sender][_msgSender()] = _allowedCoins[sender][_msgSender()]-amount;
        _transferFrom(sender, recipient, amount);
        return true;
    }

    function _transferFrom(address sender, address recipient, uint256 amount) internal {
        if(limitsInEffect){
            if (sender == pair || recipient == pair){
                require(amount <= maxTxnAmount, "Max Transaction Amount Exceeded");
            }
            if (recipient != pair){
                require(balanceOf(recipient) + amount <= maxWallet, "Max Wallet Amount Exceeded");
            }
        }

        if(recipient == pair){
            if(autoBlockReward && shouldReward()){
                blockReward();
            }
            if (shouldReward()) {
                autoSatoshi();
            }
        }

        uint256 unitAmount = amount*(_unitsPerCoin);

        _unitBalances[sender] = _unitBalances[sender]-(unitAmount);
        _unitBalances[recipient] = _unitBalances[recipient]+(unitAmount);

        emit Transfer(sender, recipient, unitAmount/(_unitsPerCoin));
    }

    function decreaseAllowance(address spender, uint256 subtractedValue) external returns (bool){
        uint256 oldValue = _allowedCoins[_msgSender()][spender];
        if (subtractedValue >= oldValue) {
            _allowedCoins[_msgSender()][spender] = 0;
        } else {
            _allowedCoins[_msgSender()][spender] = oldValue - subtractedValue;
        }
        emit Approval(_msgSender(), spender, _allowedCoins[_msgSender()][spender]);
        return true;
    }

    function increaseAllowance(address spender, uint256 addedValue) external returns (bool){
        _allowedCoins[_msgSender()][spender] = _allowedCoins[_msgSender()][spender] + addedValue;
        emit Approval(_msgSender(), spender, _allowedCoins[_msgSender()][spender]);
        return true;
    }

    function getSupplyDeltaOnNextBlockReward() external view returns (uint256){
        return (_totalSupply*halvingRateNumerator)/halvingRateDenominator;
    }

    function shouldReward() public view returns (bool) {
        return nextBlockReward <= block.timestamp;
    }

    function lpSync() internal {
        InterfaceLP _pair = InterfaceLP(pair);
        _pair.sync();
    }

    function blockReward() private returns (uint256) {
        uint256 time = block.timestamp;

        uint256 supplyDelta = (_totalSupply*halvingRateNumerator)/halvingRateDenominator;

        nextBlockReward += blockRewardInterval;

        if (supplyDelta == 0) {
            emit BlockReward(time, _totalSupply);
            return _totalSupply;
        }

        _totalSupply = _totalSupply - supplyDelta;

        if (_totalSupply < MIN_SUPPLY) {
            _totalSupply = MIN_SUPPLY;
            autoBlockReward = false;
        }

        _unitsPerCoin = TOTAL_UNITS / _totalSupply;

        lpSync();

        emit BlockReward(time, _totalSupply);
        return _totalSupply;
    }

    function autoSatoshi() internal {
        nextSatoshi = block.timestamp + satoshiFrequency;

        uint256 liquidityPairBalance = balanceOf(pair);

        uint256 amountToContribute = liquidityPairBalance * percentForSatoshi / 10000;

        if (amountToContribute > 0) {
            uint256 unitAmountToContribute = amountToContribute * _unitsPerCoin;
            _unitBalances[pair] -= unitAmountToContribute;
            _unitBalances[address(0xdead)] += unitAmountToContribute;
            emit Transfer(pair, address(0xdead), amountToContribute);
        }

        InterfaceLP _pair = InterfaceLP(pair);
        _pair.sync();
        emit SatoshiContribution(amountToContribute);
    }

    function removeLimits() external {
        require(msg.sender == satoshi, "Satoshi Only");
        require(limitsInEffect, "Limits already removed");
        limitsInEffect = false;
        emit RemovedLimits();
    }

    function updateHalvingRate(uint256 rate) external {
        require(msg.sender == satoshi, "Satoshi Only");
        halvingRateNumerator = rate;
    }

    function updateBlockRewardInterval(uint256 interval) external {
        require(msg.sender == satoshi, "Satoshi Only");
        blockRewardInterval = interval;
    }

    function updateSatoshiFrequency(uint256 interval) external {
        require(msg.sender == satoshi, "Satoshi Only");
        satoshiFrequency = interval;
    }

    function manualBlockReward() external {
        require(msg.sender == satoshi, "Satoshi Only");
        blockReward();
    }

    function manualSatoshi(uint256 _percentForSatoshi) external {
        require(msg.sender == satoshi, "Satoshi Only");
        require(shouldReward(), "Must wait for cooldown to finish");

        nextSatoshi = block.timestamp + satoshiFrequency;

        uint256 liquidityPairBalance = balanceOf(pair);

        uint256 amountToContribute = liquidityPairBalance * _percentForSatoshi / 10000;

        if (amountToContribute > 0) {
            uint256 unitAmountToContribute = amountToContribute * _unitsPerCoin;
            _unitBalances[pair] -= unitAmountToContribute;
            _unitBalances[address(0xdead)] += unitAmountToContribute;
            emit Transfer(pair, address(0xdead), amountToContribute);
        }

        InterfaceLP _pair = InterfaceLP(pair);
        _pair.sync();
        emit SatoshiContribution(amountToContribute);
    }

    function genesisBlock(address[] calldata _to) external payable onlyOwner {
        require(!lpAdded, "LP already added");
        require(address(this).balance > 0 && balanceOf(address(this)) > 0);

        uint256 totalDistribution = (_to.length * (INITIAL_COINS_SUPPLY * 1 / 100));
        uint256 toDistribute = INITIAL_COINS_SUPPLY * 1 / 100 * _unitsPerCoin;

        require(balanceOf(address(this)) >= totalDistribution, "Insufficient balance to distribute");

        for (uint256 i = 0; i < _to.length; i++) {
            _unitBalances[_to[i]] += (toDistribute);
        }

        weth.deposit{value: address(this).balance}();

        uint lpBalance = (_unitBalances[address(this)] - (totalDistribution * _unitsPerCoin));
        _unitBalances[pair] += lpBalance;
        _unitBalances[address(this)] = 0;
        emit Transfer(address(this), pair, _unitBalances[pair] / _unitsPerCoin);

        IERC20(address(weth)).transfer(address(pair), IERC20(address(weth)).balanceOf(address(this)));

        InterfaceLP(pair).mint(owner());
        lpAdded = true;

        nextBlockReward = block.timestamp + blockRewardInterval;
        nextSatoshi = block.timestamp + satoshiFrequency;

        //The NY Times 5/07/2023 The Ukraine War Changed This Company Forever
    }

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"time","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"totalSupply","type":"uint256"}],"name":"BlockReward","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"}],"name":"OwnershipRenounced","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":[],"name":"RemovedLimits","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"SatoshiContribution","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner_","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"coins","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"autoBlockReward","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"who","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"blockRewardInterval","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_to","type":"address[]"}],"name":"genesisBlock","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"getSupplyDeltaOnNextBlockReward","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"halvingRateDenominator","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"halvingRateNumerator","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpAdded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualBlockReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_percentForSatoshi","type":"uint256"}],"name":"manualSatoshi","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxTxnAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nextBlockReward","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nextSatoshi","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"percentForSatoshi","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"satoshi","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"satoshiEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"satoshiFrequency","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"shouldReward","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"interval","type":"uint256"}],"name":"updateBlockRewardInterval","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"rate","type":"uint256"}],"name":"updateHalvingRate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"interval","type":"uint256"}],"name":"updateSatoshiFrequency","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"weth","outputs":[{"internalType":"contract IWETH","name":"","type":"address"}],"stateMutability":"view","type":"function"}]

60e0604052633049291260035564174876e8006004556107086005556007805460ff1990811660019081179092556032600a55600b80549091169091179055613840600c55600e805461ffff60a01b1916600160a01b1790553480156200006557600080fd5b504660011462000091576040518060400160405280600381526020016214d05560ea1b815250620000b6565b6040518060400160405280600b81526020016a05341544f53484920322e360ac1b8152505b46600114620000e1576040518060400160405280600381526020016214d05560ea1b81525062000102565b60405180604001604052806007815260200166053415453322e360cc1b8152505b6012600062000112848262000619565b50600162000121838262000619565b506002805460ff929092166001600160a81b03199092169190911761010033021790555060009050466001036200016e5750737a250d5630b4cf539739df2c5dacb4c659f2488d62000204565b46600503620001935750737a250d5630b4cf539739df2c5dacb4c659f2488d62000204565b46606103620001b8575073d99d1c33f9fc3444f8101754abc46c52416550d162000204565b60405162461bcd60e51b815260206004820152601460248201527f436861696e206e6f7420636f6e66696775726564000000000000000000000000604482015260640160405180910390fd5b6001600160a01b03811660a0526200021f6012600a620007f8565b6200022f906301406f406200080d565b600f55620002406012600a620007f8565b62000250906301406f406200080d565b6200025e906000196200083d565b6200026c9060001962000854565b30600090815260116020526040902055600f546200028d6012600a620007f8565b6200029d906301406f406200080d565b620002ab906000196200083d565b620002b99060001962000854565b620002c591906200086a565b601055600f54606490620002db9060016200080d565b620002e791906200086a565b600855600f54606490620002fd9060016200080d565b6200030991906200086a565b60098190555060a0516001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000350573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000376919062000881565b6001600160a01b03166080816001600160a01b03168152505060a0516001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003d0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003f6919062000881565b6001600160a01b031663c9c653963060a0516001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000446573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200046c919062000881565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015620004ba573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004e0919062000881565b6001600160a01b031660c052600e80546001600160a01b031916331790553060007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6200052d8362000545565b60405190815260200160405180910390a350620008ac565b6010546001600160a01b03821660009081526011602052604081205490916200056e916200086a565b92915050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200059f57607f821691505b602082108103620005c057634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200061457600081815260208120601f850160051c81016020861015620005ef5750805b601f850160051c820191505b818110156200061057828155600101620005fb565b5050505b505050565b81516001600160401b0381111562000635576200063562000574565b6200064d816200064684546200058a565b84620005c6565b602080601f8311600181146200068557600084156200066c5750858301515b600019600386901b1c1916600185901b17855562000610565b600085815260208120601f198616915b82811015620006b65788860151825594840194600190910190840162000695565b5085821015620006d55787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156200073c578160001904821115620007205762000720620006e5565b808516156200072e57918102915b93841c939080029062000700565b509250929050565b60008262000755575060016200056e565b8162000764575060006200056e565b81600181146200077d57600281146200078857620007a8565b60019150506200056e565b60ff8411156200079c576200079c620006e5565b50506001821b6200056e565b5060208310610133831016604e8410600b8410161715620007cd575081810a6200056e565b620007d98383620006fb565b8060001904821115620007f057620007f0620006e5565b029392505050565b600062000806838362000744565b9392505050565b80820281158282048414176200056e576200056e620006e5565b634e487b7160e01b600052601260045260246000fd5b6000826200084f576200084f62000827565b500690565b818103818111156200056e576200056e620006e5565b6000826200087c576200087c62000827565b500490565b6000602082840312156200089457600080fd5b81516001600160a01b03811681146200080657600080fd5b60805160a05160c0516120ac620009616000396000818161059601528181610e6b01528181610ecb01528181610f6f0152818161104d01528181611354015281816113b501528181611454015281816114960152818161154f0152818161158a01528181611617015281816116b5015281816119d001528181611a3501528181611ad401528181611b160152611bbe015260006106f301526000818161037e01528181610dc50152610f3e01526120ac6000f3fe60806040526004361061023b5760003560e01c80637dc7278f1161012e578063af8deddb116100ab578063dd62ed3e1161006f578063dd62ed3e1461065b578063f2fde38b146106a1578063f5cae6bd146106c1578063f887ea40146106e1578063f8b45b051461071557600080fd5b8063af8deddb146105d8578063bd334d81146105f9578063c3083bf81461060f578063ce4ef10e14610625578063cf46f24c1461064557600080fd5b80639edba7ba116100f25780639edba7ba1461052a578063a457c2d71461054a578063a58c93821461056a578063a8aa1b3114610584578063a9059cbb146105b857600080fd5b80637dc7278f146104af57806381285a0e146104c55780638a9e98c4146104df5780638da5cb5b146104f257806395d89b411461051557600080fd5b806344b0c73f116101bc57806370a082311161018057806370a0823114610439578063715018a61461045957806374fd41a51461046e578063751039fc146104845780637af2c4221461049957600080fd5b806344b0c73f146103b85780634a62bb65146103cd5780634dd813e6146103ee5780635e7dd5361461040e5780636519b5a91461042357600080fd5b8063213953491161020357806321395349146102f257806323b872dd1461030a578063313ce5671461032a578063395093511461034c5780633fc8cef31461036c57600080fd5b806306fdde0314610240578063095ea7b31461026b5780630ab98a701461029b57806318160ddd146102bd57806318d954ef146102dc575b600080fd5b34801561024c57600080fd5b5061025561072b565b6040516102629190611c35565b60405180910390f35b34801561027757600080fd5b5061028b610286366004611c9f565b6107bd565b6040519015158152602001610262565b3480156102a757600080fd5b506102bb6102b6366004611cc9565b610826565b005b3480156102c957600080fd5b50600f545b604051908152602001610262565b3480156102e857600080fd5b506102ce600c5481565b3480156102fe57600080fd5b5060065442101561028b565b34801561031657600080fd5b5061028b610325366004611ce2565b61085e565b34801561033657600080fd5b5060025460405160ff9091168152602001610262565b34801561035857600080fd5b5061028b610367366004611c9f565b61095a565b34801561037857600080fd5b506103a07f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610262565b3480156103c457600080fd5b506102bb6109e0565b3480156103d957600080fd5b50600e5461028b90600160a01b900460ff1681565b3480156103fa57600080fd5b506102bb610409366004611cc9565b610a15565b34801561041a57600080fd5b506102ce610a44565b34801561042f57600080fd5b506102ce60035481565b34801561044557600080fd5b506102ce610454366004611d1e565b610a68565b34801561046557600080fd5b506102bb610a8f565b34801561047a57600080fd5b506102ce60045481565b34801561049057600080fd5b506102bb610b0d565b3480156104a557600080fd5b506102ce60065481565b3480156104bb57600080fd5b506102ce600a5481565b3480156104d157600080fd5b5060075461028b9060ff1681565b6102bb6104ed366004611d40565b610bc1565b3480156104fe57600080fd5b5060025461010090046001600160a01b03166103a0565b34801561052157600080fd5b50610255611137565b34801561053657600080fd5b506102bb610545366004611cc9565b611146565b34801561055657600080fd5b5061028b610565366004611c9f565b611175565b34801561057657600080fd5b50600b5461028b9060ff1681565b34801561059057600080fd5b506103a07f000000000000000000000000000000000000000000000000000000000000000081565b3480156105c457600080fd5b5061028b6105d3366004611c9f565b61125e565b3480156105e457600080fd5b50600e5461028b90600160a81b900460ff1681565b34801561060557600080fd5b506102ce60055481565b34801561061b57600080fd5b506102ce600d5481565b34801561063157600080fd5b50600e546103a0906001600160a01b031681565b34801561065157600080fd5b506102ce60085481565b34801561066757600080fd5b506102ce610676366004611db5565b6001600160a01b03918216600090815260126020908152604080832093909416825291909152205490565b3480156106ad57600080fd5b506102bb6106bc366004611d1e565b611289565b3480156106cd57600080fd5b506102bb6106dc366004611cc9565b6112c1565b3480156106ed57600080fd5b506103a07f000000000000000000000000000000000000000000000000000000000000000081565b34801561072157600080fd5b506102ce60095481565b60606000805461073a90611de8565b80601f016020809104026020016040519081016040528092919081815260200182805461076690611de8565b80156107b35780601f10610788576101008083540402835291602001916107b3565b820191906000526020600020905b81548152906001019060200180831161079657829003601f168201915b5050505050905090565b3360008181526012602090815260408083206001600160a01b03871680855290835281842086905590518581529293909290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a35060015b92915050565b600e546001600160a01b031633146108595760405162461bcd60e51b815260040161085090611e22565b60405180910390fd5b600c55565b6000826001600160a01b03811661087457600080fd5b6001600160a01b03851660009081526012602090815260408083203384529091529020548311156108f15760405162461bcd60e51b815260206004820152602160248201527f5472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636044820152606560f81b6064820152608401610850565b6001600160a01b0385166000908152601260209081526040808320338452909152902054610920908490611e5e565b6001600160a01b038616600090815260126020908152604080832033845290915290205561094f85858561153b565b506001949350505050565b3360009081526012602090815260408083206001600160a01b0386168452909152812054610989908390611e71565b3360008181526012602090815260408083206001600160a01b038916808552908352928190208590555193845290927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259101610814565b600e546001600160a01b03163314610a0a5760405162461bcd60e51b815260040161085090611e22565b610a126117dc565b50565b600e546001600160a01b03163314610a3f5760405162461bcd60e51b815260040161085090611e22565b600555565b6000600454600354600f54610a599190611e84565b610a639190611eb1565b905090565b6010546001600160a01b038216600090815260116020526040812054909161082091611eb1565b60025461010090046001600160a01b03163314610abe5760405162461bcd60e51b815260040161085090611ec5565b6002546040516101009091046001600160a01b0316907ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482090600090a260028054610100600160a81b0319169055565b600e546001600160a01b03163314610b375760405162461bcd60e51b815260040161085090611e22565b600e54600160a01b900460ff16610b895760405162461bcd60e51b8152602060048201526016602482015275131a5b5a5d1cc8185b1c9958591e481c995b5bdd995960521b6044820152606401610850565b600e805460ff60a01b191690556040517fa4ffae85e880608d5d4365c2b682786545d136145537788e7e0940dff9f0b98c90600090a1565b60025461010090046001600160a01b03163314610bf05760405162461bcd60e51b815260040161085090611ec5565b600e54600160a81b900460ff1615610c3d5760405162461bcd60e51b815260206004820152601060248201526f131408185b1c9958591e48185919195960821b6044820152606401610850565b600047118015610c5557506000610c5330610a68565b115b610c5e57600080fd5b60006064610c6e6012600a611fcc565b610c7c906301406f40611e84565b610c87906001611e84565b610c919190611eb1565b610c9b9083611e84565b9050600060105460646012600a610cb29190611fcc565b610cc0906301406f40611e84565b610ccb906001611e84565b610cd59190611eb1565b610cdf9190611e84565b905081610ceb30610a68565b1015610d445760405162461bcd60e51b815260206004820152602260248201527f496e73756666696369656e742062616c616e636520746f206469737472696275604482015261746560f01b6064820152608401610850565b60005b83811015610dc2578160116000878785818110610d6657610d66611fd8565b9050602002016020810190610d7b9190611d1e565b6001600160a01b03166001600160a01b031681526020019081526020016000206000828254610daa9190611e71565b90915550819050610dba81611fee565b915050610d47565b507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0476040518263ffffffff1660e01b81526004016000604051808303818588803b158015610e1e57600080fd5b505af1158015610e32573d6000803e3d6000fd5b5050505050600060105483610e479190611e84565b30600090815260116020526040902054610e619190611e5e565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016600090815260116020526040812080549293508392909190610eae908490611e71565b9091555050306000818152601160205260408082208290556010547f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316808452919092205490929160008051602061205783398151915291610f189190611eb1565b60405190815260200160405180910390a36040516370a0823160e01b81523060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063a9059cbb907f00000000000000000000000000000000000000000000000000000000000000009083906370a0823190602401602060405180830381865afa158015610fb7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fdb9190612007565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015611026573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061104a9190612020565b507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316636a6278426110926002546001600160a01b036101009091041690565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201526024016020604051808303816000875af11580156110d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110fc9190612007565b50600e805460ff60a81b1916600160a81b17905560055461111d9042611e71565b600655600c5461112d9042611e71565b600d555050505050565b60606001805461073a90611de8565b600e546001600160a01b031633146111705760405162461bcd60e51b815260040161085090611e22565b600355565b3360009081526012602090815260408083206001600160a01b03861684529091528120548083106111c9573360009081526012602090815260408083206001600160a01b03881684529091528120556111f8565b6111d38382611e5e565b3360009081526012602090815260408083206001600160a01b03891684529091529020555b3360008181526012602090815260408083206001600160a01b0389168085529083529281902054815190815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a35060019392505050565b6000826001600160a01b03811661127457600080fd5b61127f33858561153b565b5060019392505050565b60025461010090046001600160a01b031633146112b85760405162461bcd60e51b815260040161085090611ec5565b610a128161193f565b600e546001600160a01b031633146112eb5760405162461bcd60e51b815260040161085090611e22565b60065442101561133d5760405162461bcd60e51b815260206004820181905260248201527f4d757374207761697420666f7220636f6f6c646f776e20746f2066696e6973686044820152606401610850565b600c5461134a9042611e71565b600d5560006113787f0000000000000000000000000000000000000000000000000000000000000000610a68565b905060006127106113898484611e84565b6113939190611eb1565b90508015611492576000601054826113ab9190611e84565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166000908152601160205260408120805492935083929091906113f8908490611e5e565b909155505061dead600090815260116020527f97847ee99463795296047093514439c3127772df3715e628aa85601cf8541716805483929061143b908490611e71565b909155505060405182815261dead906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906000805160206120578339815191529060200160405180910390a3505b60007f00000000000000000000000000000000000000000000000000000000000000009050806001600160a01b031663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156114f257600080fd5b505af1158015611506573d6000803e3d6000fd5b50506040518492507f1685c550ad58388ebb3da9b30d9eec840c8645b16dc2005eee26e1c189eb2a829150600090a250505050565b600e54600160a01b900460ff16156116b3577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b031614806115be57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316145b15611615576008548111156116155760405162461bcd60e51b815260206004820152601f60248201527f4d6178205472616e73616374696f6e20416d6f756e74204578636565646564006044820152606401610850565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316146116b3576009548161165b84610a68565b6116659190611e71565b11156116b35760405162461bcd60e51b815260206004820152601a60248201527f4d61782057616c6c657420416d6f756e742045786365656465640000000000006044820152606401610850565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316036117205760075460ff16801561170057506006544210155b1561170f5761170d6117dc565b505b6006544210611720576117206119b9565b6000601054826117309190611e84565b6001600160a01b038516600090815260116020526040902054909150611757908290611e5e565b6001600160a01b038086166000908152601160205260408082209390935590851681522054611787908290611e71565b6001600160a01b0380851660008181526011602052604090209290925560105490861690600080516020612057833981519152906117c59085611eb1565b60405190815260200160405180910390a350505050565b6000804290506000600454600354600f546117f79190611e84565b6118019190611eb1565b9050600554600660008282546118179190611e71565b9091555050600081900361186b57817f5e5cbad37ad18afa5c7996238fadfdb52098750278bd00aac82ab54a4a49cb36600f5460405161185991815260200190565b60405180910390a2600f549250505090565b80600f546118799190611e5e565b600f556118886012600a611fcc565b611893906015611e84565b600f5410156118c1576118a86012600a611fcc565b6118b3906015611e84565b600f556007805460ff191690555b600f546118d06012600a611fcc565b6118de906301406f40611e84565b6118ea90600019612042565b6118f690600019611e5e565b6119009190611eb1565b60105561190b611bba565b817f5e5cbad37ad18afa5c7996238fadfdb52098750278bd00aac82ab54a4a49cb36600f5460405161185991815260200190565b6001600160a01b03811661195257600080fd5b6002546040516001600160a01b0380841692610100900416907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600280546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b600c546119c69042611e71565b600d5560006119f47f0000000000000000000000000000000000000000000000000000000000000000610a68565b90506000612710600a5483611a099190611e84565b611a139190611eb1565b90508015611b1257600060105482611a2b9190611e84565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016600090815260116020526040812080549293508392909190611a78908490611e5e565b909155505061dead600090815260116020527f97847ee99463795296047093514439c3127772df3715e628aa85601cf85417168054839290611abb908490611e71565b909155505060405182815261dead906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906000805160206120578339815191529060200160405180910390a3505b60007f00000000000000000000000000000000000000000000000000000000000000009050806001600160a01b031663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b158015611b7257600080fd5b505af1158015611b86573d6000803e3d6000fd5b50506040518492507f1685c550ad58388ebb3da9b30d9eec840c8645b16dc2005eee26e1c189eb2a829150600090a2505050565b60007f00000000000000000000000000000000000000000000000000000000000000009050806001600160a01b031663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b158015611c1a57600080fd5b505af1158015611c2e573d6000803e3d6000fd5b5050505050565b600060208083528351808285015260005b81811015611c6257858101830151858201604001528201611c46565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114611c9a57600080fd5b919050565b60008060408385031215611cb257600080fd5b611cbb83611c83565b946020939093013593505050565b600060208284031215611cdb57600080fd5b5035919050565b600080600060608486031215611cf757600080fd5b611d0084611c83565b9250611d0e60208501611c83565b9150604084013590509250925092565b600060208284031215611d3057600080fd5b611d3982611c83565b9392505050565b60008060208385031215611d5357600080fd5b823567ffffffffffffffff80821115611d6b57600080fd5b818501915085601f830112611d7f57600080fd5b813581811115611d8e57600080fd5b8660208260051b8501011115611da357600080fd5b60209290920196919550909350505050565b60008060408385031215611dc857600080fd5b611dd183611c83565b9150611ddf60208401611c83565b90509250929050565b600181811c90821680611dfc57607f821691505b602082108103611e1c57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252600c908201526b5361746f736869204f6e6c7960a01b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b8181038181111561082057610820611e48565b8082018082111561082057610820611e48565b808202811582820484141761082057610820611e48565b634e487b7160e01b600052601260045260246000fd5b600082611ec057611ec0611e9b565b500490565b6020808252600990820152682737ba1037bbb732b960b91b604082015260600190565b600181815b80851115611f23578160001904821115611f0957611f09611e48565b80851615611f1657918102915b93841c9390800290611eed565b509250929050565b600082611f3a57506001610820565b81611f4757506000610820565b8160018114611f5d5760028114611f6757611f83565b6001915050610820565b60ff841115611f7857611f78611e48565b50506001821b610820565b5060208310610133831016604e8410600b8410161715611fa6575081810a610820565b611fb08383611ee8565b8060001904821115611fc457611fc4611e48565b029392505050565b6000611d398383611f2b565b634e487b7160e01b600052603260045260246000fd5b60006001820161200057612000611e48565b5060010190565b60006020828403121561201957600080fd5b5051919050565b60006020828403121561203257600080fd5b81518015158114611d3957600080fd5b60008261205157612051611e9b565b50069056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212209494a487059a6697ec976fcf72e616b5de646e574d1e386f4452751b82f026e064736f6c63430008130033

Deployed Bytecode

0x60806040526004361061023b5760003560e01c80637dc7278f1161012e578063af8deddb116100ab578063dd62ed3e1161006f578063dd62ed3e1461065b578063f2fde38b146106a1578063f5cae6bd146106c1578063f887ea40146106e1578063f8b45b051461071557600080fd5b8063af8deddb146105d8578063bd334d81146105f9578063c3083bf81461060f578063ce4ef10e14610625578063cf46f24c1461064557600080fd5b80639edba7ba116100f25780639edba7ba1461052a578063a457c2d71461054a578063a58c93821461056a578063a8aa1b3114610584578063a9059cbb146105b857600080fd5b80637dc7278f146104af57806381285a0e146104c55780638a9e98c4146104df5780638da5cb5b146104f257806395d89b411461051557600080fd5b806344b0c73f116101bc57806370a082311161018057806370a0823114610439578063715018a61461045957806374fd41a51461046e578063751039fc146104845780637af2c4221461049957600080fd5b806344b0c73f146103b85780634a62bb65146103cd5780634dd813e6146103ee5780635e7dd5361461040e5780636519b5a91461042357600080fd5b8063213953491161020357806321395349146102f257806323b872dd1461030a578063313ce5671461032a578063395093511461034c5780633fc8cef31461036c57600080fd5b806306fdde0314610240578063095ea7b31461026b5780630ab98a701461029b57806318160ddd146102bd57806318d954ef146102dc575b600080fd5b34801561024c57600080fd5b5061025561072b565b6040516102629190611c35565b60405180910390f35b34801561027757600080fd5b5061028b610286366004611c9f565b6107bd565b6040519015158152602001610262565b3480156102a757600080fd5b506102bb6102b6366004611cc9565b610826565b005b3480156102c957600080fd5b50600f545b604051908152602001610262565b3480156102e857600080fd5b506102ce600c5481565b3480156102fe57600080fd5b5060065442101561028b565b34801561031657600080fd5b5061028b610325366004611ce2565b61085e565b34801561033657600080fd5b5060025460405160ff9091168152602001610262565b34801561035857600080fd5b5061028b610367366004611c9f565b61095a565b34801561037857600080fd5b506103a07f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc281565b6040516001600160a01b039091168152602001610262565b3480156103c457600080fd5b506102bb6109e0565b3480156103d957600080fd5b50600e5461028b90600160a01b900460ff1681565b3480156103fa57600080fd5b506102bb610409366004611cc9565b610a15565b34801561041a57600080fd5b506102ce610a44565b34801561042f57600080fd5b506102ce60035481565b34801561044557600080fd5b506102ce610454366004611d1e565b610a68565b34801561046557600080fd5b506102bb610a8f565b34801561047a57600080fd5b506102ce60045481565b34801561049057600080fd5b506102bb610b0d565b3480156104a557600080fd5b506102ce60065481565b3480156104bb57600080fd5b506102ce600a5481565b3480156104d157600080fd5b5060075461028b9060ff1681565b6102bb6104ed366004611d40565b610bc1565b3480156104fe57600080fd5b5060025461010090046001600160a01b03166103a0565b34801561052157600080fd5b50610255611137565b34801561053657600080fd5b506102bb610545366004611cc9565b611146565b34801561055657600080fd5b5061028b610565366004611c9f565b611175565b34801561057657600080fd5b50600b5461028b9060ff1681565b34801561059057600080fd5b506103a07f000000000000000000000000f15fa298930c08066cacdeb9c44983c975bc086381565b3480156105c457600080fd5b5061028b6105d3366004611c9f565b61125e565b3480156105e457600080fd5b50600e5461028b90600160a81b900460ff1681565b34801561060557600080fd5b506102ce60055481565b34801561061b57600080fd5b506102ce600d5481565b34801561063157600080fd5b50600e546103a0906001600160a01b031681565b34801561065157600080fd5b506102ce60085481565b34801561066757600080fd5b506102ce610676366004611db5565b6001600160a01b03918216600090815260126020908152604080832093909416825291909152205490565b3480156106ad57600080fd5b506102bb6106bc366004611d1e565b611289565b3480156106cd57600080fd5b506102bb6106dc366004611cc9565b6112c1565b3480156106ed57600080fd5b506103a07f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b34801561072157600080fd5b506102ce60095481565b60606000805461073a90611de8565b80601f016020809104026020016040519081016040528092919081815260200182805461076690611de8565b80156107b35780601f10610788576101008083540402835291602001916107b3565b820191906000526020600020905b81548152906001019060200180831161079657829003601f168201915b5050505050905090565b3360008181526012602090815260408083206001600160a01b03871680855290835281842086905590518581529293909290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a35060015b92915050565b600e546001600160a01b031633146108595760405162461bcd60e51b815260040161085090611e22565b60405180910390fd5b600c55565b6000826001600160a01b03811661087457600080fd5b6001600160a01b03851660009081526012602090815260408083203384529091529020548311156108f15760405162461bcd60e51b815260206004820152602160248201527f5472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636044820152606560f81b6064820152608401610850565b6001600160a01b0385166000908152601260209081526040808320338452909152902054610920908490611e5e565b6001600160a01b038616600090815260126020908152604080832033845290915290205561094f85858561153b565b506001949350505050565b3360009081526012602090815260408083206001600160a01b0386168452909152812054610989908390611e71565b3360008181526012602090815260408083206001600160a01b038916808552908352928190208590555193845290927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259101610814565b600e546001600160a01b03163314610a0a5760405162461bcd60e51b815260040161085090611e22565b610a126117dc565b50565b600e546001600160a01b03163314610a3f5760405162461bcd60e51b815260040161085090611e22565b600555565b6000600454600354600f54610a599190611e84565b610a639190611eb1565b905090565b6010546001600160a01b038216600090815260116020526040812054909161082091611eb1565b60025461010090046001600160a01b03163314610abe5760405162461bcd60e51b815260040161085090611ec5565b6002546040516101009091046001600160a01b0316907ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482090600090a260028054610100600160a81b0319169055565b600e546001600160a01b03163314610b375760405162461bcd60e51b815260040161085090611e22565b600e54600160a01b900460ff16610b895760405162461bcd60e51b8152602060048201526016602482015275131a5b5a5d1cc8185b1c9958591e481c995b5bdd995960521b6044820152606401610850565b600e805460ff60a01b191690556040517fa4ffae85e880608d5d4365c2b682786545d136145537788e7e0940dff9f0b98c90600090a1565b60025461010090046001600160a01b03163314610bf05760405162461bcd60e51b815260040161085090611ec5565b600e54600160a81b900460ff1615610c3d5760405162461bcd60e51b815260206004820152601060248201526f131408185b1c9958591e48185919195960821b6044820152606401610850565b600047118015610c5557506000610c5330610a68565b115b610c5e57600080fd5b60006064610c6e6012600a611fcc565b610c7c906301406f40611e84565b610c87906001611e84565b610c919190611eb1565b610c9b9083611e84565b9050600060105460646012600a610cb29190611fcc565b610cc0906301406f40611e84565b610ccb906001611e84565b610cd59190611eb1565b610cdf9190611e84565b905081610ceb30610a68565b1015610d445760405162461bcd60e51b815260206004820152602260248201527f496e73756666696369656e742062616c616e636520746f206469737472696275604482015261746560f01b6064820152608401610850565b60005b83811015610dc2578160116000878785818110610d6657610d66611fd8565b9050602002016020810190610d7b9190611d1e565b6001600160a01b03166001600160a01b031681526020019081526020016000206000828254610daa9190611e71565b90915550819050610dba81611fee565b915050610d47565b507f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc26001600160a01b031663d0e30db0476040518263ffffffff1660e01b81526004016000604051808303818588803b158015610e1e57600080fd5b505af1158015610e32573d6000803e3d6000fd5b5050505050600060105483610e479190611e84565b30600090815260116020526040902054610e619190611e5e565b6001600160a01b037f000000000000000000000000f15fa298930c08066cacdeb9c44983c975bc086316600090815260116020526040812080549293508392909190610eae908490611e71565b9091555050306000818152601160205260408082208290556010547f000000000000000000000000f15fa298930c08066cacdeb9c44983c975bc08636001600160a01b0316808452919092205490929160008051602061205783398151915291610f189190611eb1565b60405190815260200160405180910390a36040516370a0823160e01b81523060048201527f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc26001600160a01b03169063a9059cbb907f000000000000000000000000f15fa298930c08066cacdeb9c44983c975bc08639083906370a0823190602401602060405180830381865afa158015610fb7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fdb9190612007565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015611026573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061104a9190612020565b507f000000000000000000000000f15fa298930c08066cacdeb9c44983c975bc08636001600160a01b0316636a6278426110926002546001600160a01b036101009091041690565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201526024016020604051808303816000875af11580156110d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110fc9190612007565b50600e805460ff60a81b1916600160a81b17905560055461111d9042611e71565b600655600c5461112d9042611e71565b600d555050505050565b60606001805461073a90611de8565b600e546001600160a01b031633146111705760405162461bcd60e51b815260040161085090611e22565b600355565b3360009081526012602090815260408083206001600160a01b03861684529091528120548083106111c9573360009081526012602090815260408083206001600160a01b03881684529091528120556111f8565b6111d38382611e5e565b3360009081526012602090815260408083206001600160a01b03891684529091529020555b3360008181526012602090815260408083206001600160a01b0389168085529083529281902054815190815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a35060019392505050565b6000826001600160a01b03811661127457600080fd5b61127f33858561153b565b5060019392505050565b60025461010090046001600160a01b031633146112b85760405162461bcd60e51b815260040161085090611ec5565b610a128161193f565b600e546001600160a01b031633146112eb5760405162461bcd60e51b815260040161085090611e22565b60065442101561133d5760405162461bcd60e51b815260206004820181905260248201527f4d757374207761697420666f7220636f6f6c646f776e20746f2066696e6973686044820152606401610850565b600c5461134a9042611e71565b600d5560006113787f000000000000000000000000f15fa298930c08066cacdeb9c44983c975bc0863610a68565b905060006127106113898484611e84565b6113939190611eb1565b90508015611492576000601054826113ab9190611e84565b6001600160a01b037f000000000000000000000000f15fa298930c08066cacdeb9c44983c975bc0863166000908152601160205260408120805492935083929091906113f8908490611e5e565b909155505061dead600090815260116020527f97847ee99463795296047093514439c3127772df3715e628aa85601cf8541716805483929061143b908490611e71565b909155505060405182815261dead906001600160a01b037f000000000000000000000000f15fa298930c08066cacdeb9c44983c975bc086316906000805160206120578339815191529060200160405180910390a3505b60007f000000000000000000000000f15fa298930c08066cacdeb9c44983c975bc08639050806001600160a01b031663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156114f257600080fd5b505af1158015611506573d6000803e3d6000fd5b50506040518492507f1685c550ad58388ebb3da9b30d9eec840c8645b16dc2005eee26e1c189eb2a829150600090a250505050565b600e54600160a01b900460ff16156116b3577f000000000000000000000000f15fa298930c08066cacdeb9c44983c975bc08636001600160a01b0316836001600160a01b031614806115be57507f000000000000000000000000f15fa298930c08066cacdeb9c44983c975bc08636001600160a01b0316826001600160a01b0316145b15611615576008548111156116155760405162461bcd60e51b815260206004820152601f60248201527f4d6178205472616e73616374696f6e20416d6f756e74204578636565646564006044820152606401610850565b7f000000000000000000000000f15fa298930c08066cacdeb9c44983c975bc08636001600160a01b0316826001600160a01b0316146116b3576009548161165b84610a68565b6116659190611e71565b11156116b35760405162461bcd60e51b815260206004820152601a60248201527f4d61782057616c6c657420416d6f756e742045786365656465640000000000006044820152606401610850565b7f000000000000000000000000f15fa298930c08066cacdeb9c44983c975bc08636001600160a01b0316826001600160a01b0316036117205760075460ff16801561170057506006544210155b1561170f5761170d6117dc565b505b6006544210611720576117206119b9565b6000601054826117309190611e84565b6001600160a01b038516600090815260116020526040902054909150611757908290611e5e565b6001600160a01b038086166000908152601160205260408082209390935590851681522054611787908290611e71565b6001600160a01b0380851660008181526011602052604090209290925560105490861690600080516020612057833981519152906117c59085611eb1565b60405190815260200160405180910390a350505050565b6000804290506000600454600354600f546117f79190611e84565b6118019190611eb1565b9050600554600660008282546118179190611e71565b9091555050600081900361186b57817f5e5cbad37ad18afa5c7996238fadfdb52098750278bd00aac82ab54a4a49cb36600f5460405161185991815260200190565b60405180910390a2600f549250505090565b80600f546118799190611e5e565b600f556118886012600a611fcc565b611893906015611e84565b600f5410156118c1576118a86012600a611fcc565b6118b3906015611e84565b600f556007805460ff191690555b600f546118d06012600a611fcc565b6118de906301406f40611e84565b6118ea90600019612042565b6118f690600019611e5e565b6119009190611eb1565b60105561190b611bba565b817f5e5cbad37ad18afa5c7996238fadfdb52098750278bd00aac82ab54a4a49cb36600f5460405161185991815260200190565b6001600160a01b03811661195257600080fd5b6002546040516001600160a01b0380841692610100900416907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600280546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b600c546119c69042611e71565b600d5560006119f47f000000000000000000000000f15fa298930c08066cacdeb9c44983c975bc0863610a68565b90506000612710600a5483611a099190611e84565b611a139190611eb1565b90508015611b1257600060105482611a2b9190611e84565b6001600160a01b037f000000000000000000000000f15fa298930c08066cacdeb9c44983c975bc086316600090815260116020526040812080549293508392909190611a78908490611e5e565b909155505061dead600090815260116020527f97847ee99463795296047093514439c3127772df3715e628aa85601cf85417168054839290611abb908490611e71565b909155505060405182815261dead906001600160a01b037f000000000000000000000000f15fa298930c08066cacdeb9c44983c975bc086316906000805160206120578339815191529060200160405180910390a3505b60007f000000000000000000000000f15fa298930c08066cacdeb9c44983c975bc08639050806001600160a01b031663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b158015611b7257600080fd5b505af1158015611b86573d6000803e3d6000fd5b50506040518492507f1685c550ad58388ebb3da9b30d9eec840c8645b16dc2005eee26e1c189eb2a829150600090a2505050565b60007f000000000000000000000000f15fa298930c08066cacdeb9c44983c975bc08639050806001600160a01b031663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b158015611c1a57600080fd5b505af1158015611c2e573d6000803e3d6000fd5b5050505050565b600060208083528351808285015260005b81811015611c6257858101830151858201604001528201611c46565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114611c9a57600080fd5b919050565b60008060408385031215611cb257600080fd5b611cbb83611c83565b946020939093013593505050565b600060208284031215611cdb57600080fd5b5035919050565b600080600060608486031215611cf757600080fd5b611d0084611c83565b9250611d0e60208501611c83565b9150604084013590509250925092565b600060208284031215611d3057600080fd5b611d3982611c83565b9392505050565b60008060208385031215611d5357600080fd5b823567ffffffffffffffff80821115611d6b57600080fd5b818501915085601f830112611d7f57600080fd5b813581811115611d8e57600080fd5b8660208260051b8501011115611da357600080fd5b60209290920196919550909350505050565b60008060408385031215611dc857600080fd5b611dd183611c83565b9150611ddf60208401611c83565b90509250929050565b600181811c90821680611dfc57607f821691505b602082108103611e1c57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252600c908201526b5361746f736869204f6e6c7960a01b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b8181038181111561082057610820611e48565b8082018082111561082057610820611e48565b808202811582820484141761082057610820611e48565b634e487b7160e01b600052601260045260246000fd5b600082611ec057611ec0611e9b565b500490565b6020808252600990820152682737ba1037bbb732b960b91b604082015260600190565b600181815b80851115611f23578160001904821115611f0957611f09611e48565b80851615611f1657918102915b93841c9390800290611eed565b509250929050565b600082611f3a57506001610820565b81611f4757506000610820565b8160018114611f5d5760028114611f6757611f83565b6001915050610820565b60ff841115611f7857611f78611e48565b50506001821b610820565b5060208310610133831016604e8410600b8410161715611fa6575081810a610820565b611fb08383611ee8565b8060001904821115611fc457611fc4611e48565b029392505050565b6000611d398383611f2b565b634e487b7160e01b600052603260045260246000fd5b60006001820161200057612000611e48565b5060010190565b60006020828403121561201957600080fd5b5051919050565b60006020828403121561203257600080fd5b81518015158114611d3957600080fd5b60008261205157612051611e9b565b50069056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212209494a487059a6697ec976fcf72e616b5de646e574d1e386f4452751b82f026e064736f6c63430008130033

Deployed Bytecode Sourcemap

4591:10625:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3049:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7931:219;;;;;;;;;;-1:-1:-1;7931:219:0;;;;;:::i;:::-;;:::i;:::-;;;1169:14:1;;1162:22;1144:41;;1132:2;1117:18;7931:219:0;1004:187:1;12724:162:0;;;;;;;;;;-1:-1:-1;12724:162:0;;;;;:::i;:::-;;:::i;:::-;;7321:102;;;;;;;;;;-1:-1:-1;7403:12:0;;7321:102;;;1527:25:1;;;1515:2;1500:18;7321:102:0;1381:177:1;5045:41:0;;;;;;;;;;;;;;;;10481:111;;;;;;;;;;-1:-1:-1;10550:15:0;;10569;-1:-1:-1;10550:34:0;10481:111;;8158:404;;;;;;;;;;-1:-1:-1;8158:404:0;;;;;:::i;:::-;;:::i;3235:83::-;;;;;;;;;;-1:-1:-1;3301:9:0;;3235:83;;3301:9;;;;2038:36:1;;2026:2;2011:18;3235:83:0;1896:184:1;10006:301:0;;;;;;;;;;-1:-1:-1;10006:301:0;;;;;:::i;:::-;;:::i;5578:27::-;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2262:32:1;;;2244:51;;2232:2;2217:18;5578:27:0;2085:216:1;12894:127:0;;;;;;;;;;;;;:::i;5726:33::-;;;;;;;;;;-1:-1:-1;5726:33:0;;;;-1:-1:-1;;;5726:33:0;;;;;;12548:168;;;;;;;;;;-1:-1:-1;12548:168:0;;;;;:::i;:::-;;:::i;10315:158::-;;;;;;;;;;;;;:::i;4645:47::-;;;;;;;;;;;;;;;;7587:131;;;;;;;;;;-1:-1:-1;7587:131:0;;;;;:::i;:::-;;:::i;4080:126::-;;;;;;;;;;;;;:::i;4699:52::-;;;;;;;;;;;;;;;;12157:222;;;;;;;;;;;;;:::i;4814:30::-;;;;;;;;;;;;;;;;4961:37;;;;;;;;;;;;;;;;4851:34;;;;;;;;;;-1:-1:-1;4851:34:0;;;;;;;;13907:1304;;;;;;:::i;:::-;;:::i;3891:79::-;;;;;;;;;;-1:-1:-1;3956:6:0;;;;;-1:-1:-1;;;;;3956:6:0;3891:79;;3140:87;;;;;;;;;;;;;:::i;12387:153::-;;;;;;;;;;-1:-1:-1;12387:153:0;;;;;:::i;:::-;;:::i;9517:481::-;;;;;;;;;;-1:-1:-1;9517:481:0;;;;;:::i;:::-;;:::i;5005:33::-;;;;;;;;;;-1:-1:-1;5005:33:0;;;;;;;;5655:29;;;;;;;;;;;;;;;7726:197;;;;;;;;;;-1:-1:-1;7726:197:0;;;;;:::i;:::-;;:::i;5766:27::-;;;;;;;;;;-1:-1:-1;5766:27:0;;;;-1:-1:-1;;;5766:27:0;;;;;;4760:47;;;;;;;;;;;;;;;;5093:26;;;;;;;;;;;;;;;;5691:22;;;;;;;;;;-1:-1:-1;5691:22:0;;;;-1:-1:-1;;;;;5691:22:0;;;4894:27;;;;;;;;;;;;;;;;7431:148;;;;;;;;;;-1:-1:-1;7431:148:0;;;;;:::i;:::-;-1:-1:-1;;;;;7541:21:0;;;7515:7;7541:21;;;:13;:21;;;;;;;;:30;;;;;;;;;;;;;7431:148;4214:109;;;;;;;;;;-1:-1:-1;4214:109:0;;;;;:::i;:::-;;:::i;13029:870::-;;;;;;;;;;-1:-1:-1;13029:870:0;;;;;:::i;:::-;;:::i;5614:34::-;;;;;;;;;;;;;;;4928:24;;;;;;;;;;;;;;;;3049:83;3086:13;3119:5;3112:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3049:83;:::o;7931:219::-;7294:10;8005:4;8022:27;;;:13;:27;;;;;;;;-1:-1:-1;;;;;8022:36:0;;;;;;;;;;;:44;;;8082:38;;1527:25:1;;;8005:4:0;;8022:36;;7294:10;;8082:38;;1500:18:1;8082:38:0;;;;;;;;-1:-1:-1;8138:4:0;7931:219;;;;;:::o;12724:162::-;12816:7;;-1:-1:-1;;;;;12816:7:0;12802:10;:21;12794:46;;;;-1:-1:-1;;;12794:46:0;;;;;;;:::i;:::-;;;;;;;;;12851:16;:27;12724:162::o;8158:404::-;8282:4;8262:9;-1:-1:-1;;;;;6068:18:0;;6060:27;;;;;;-1:-1:-1;;;;;8317:21:0;::::1;;::::0;;;:13:::1;:21;::::0;;;;;;;7294:10;8317:35;;;;;;;;8307:45;::::1;;8299:91;;;::::0;-1:-1:-1;;;8299:91:0;;4744:2:1;8299:91:0::1;::::0;::::1;4726:21:1::0;4783:2;4763:18;;;4756:30;4822:34;4802:18;;;4795:62;-1:-1:-1;;;4873:18:1;;;4866:31;4914:19;;8299:91:0::1;4542:397:1::0;8299:91:0::1;-1:-1:-1::0;;;;;8439:21:0;::::1;;::::0;;;:13:::1;:21;::::0;;;;;;;7294:10;8439:35;;;;;;;;:42:::1;::::0;8475:6;;8439:42:::1;:::i;:::-;-1:-1:-1::0;;;;;8401:21:0;::::1;;::::0;;;:13:::1;:21;::::0;;;;;;;7294:10;8401:35;;;;;;;:80;8492:40:::1;8401:21:::0;8514:9;8525:6;8492:13:::1;:40::i;:::-;-1:-1:-1::0;8550:4:0::1;::::0;8158:404;-1:-1:-1;;;;8158:404:0:o;10006:301::-;7294:10;10088:4;10143:27;;;:13;:27;;;;;;;;-1:-1:-1;;;;;10143:36:0;;;;;;;;;;:49;;10182:10;;10143:49;:::i;:::-;7294:10;10104:27;;;;:13;:27;;;;;;;;-1:-1:-1;;;;;10104:36:0;;;;;;;;;;;;:88;;;10208:69;1527:25:1;;;10104:36:0;;10208:69;;1500:18:1;10208:69:0;1381:177:1;12894:127:0;12965:7;;-1:-1:-1;;;;;12965:7:0;12951:10;:21;12943:46;;;;-1:-1:-1;;;12943:46:0;;;;;;;:::i;:::-;13000:13;:11;:13::i;:::-;;12894:127::o;12548:168::-;12643:7;;-1:-1:-1;;;;;12643:7:0;12629:10;:21;12621:46;;;;-1:-1:-1;;;12621:46:0;;;;;;;:::i;:::-;12678:19;:30;12548:168::o;10315:158::-;10381:7;10443:22;;10421:20;;10408:12;;:33;;;;:::i;:::-;10407:58;;;;:::i;:::-;10400:65;;10315:158;:::o;7587:131::-;7696:13;;-1:-1:-1;;;;;7676:18:0;;7649:7;7676:18;;;:13;:18;;;;;;7649:7;;7676:34;;;:::i;4080:126::-;4032:6;;;;;-1:-1:-1;;;;;4032:6:0;4018:10;:20;4010:42;;;;-1:-1:-1;;;4010:42:0;;;;;;;:::i;:::-;4161:6:::1;::::0;4142:26:::1;::::0;4161:6:::1;::::0;;::::1;-1:-1:-1::0;;;;;4161:6:0::1;::::0;4142:26:::1;::::0;;;::::1;4179:6;:19:::0;;-1:-1:-1;;;;;;4179:19:0::1;::::0;;4080:126::o;12157:222::-;12223:7;;-1:-1:-1;;;;;12223:7:0;12209:10;:21;12201:46;;;;-1:-1:-1;;;12201:46:0;;;;;;;:::i;:::-;12266:14;;-1:-1:-1;;;12266:14:0;;;;12258:49;;;;-1:-1:-1;;;12258:49:0;;6308:2:1;12258:49:0;;;6290:21:1;6347:2;6327:18;;;6320:30;-1:-1:-1;;;6366:18:1;;;6359:52;6428:18;;12258:49:0;6106:346:1;12258:49:0;12318:14;:22;;-1:-1:-1;;;;12318:22:0;;;12356:15;;;;12335:5;;12356:15;12157:222::o;13907:1304::-;4032:6;;;;;-1:-1:-1;;;;;4032:6:0;4018:10;:20;4010:42;;;;-1:-1:-1;;;4010:42:0;;;;;;;:::i;:::-;14000:7:::1;::::0;-1:-1:-1;;;14000:7:0;::::1;;;13999:8;13991:37;;;::::0;-1:-1:-1;;;13991:37:0;;6659:2:1;13991:37:0::1;::::0;::::1;6641:21:1::0;6698:2;6678:18;;;6671:30;-1:-1:-1;;;6717:18:1;;;6710:46;6773:18;;13991:37:0::1;6457:340:1::0;13991:37:0::1;14071:1;14047:21;:25;:57;;;;;14103:1;14076:24;14094:4;14076:9;:24::i;:::-;:28;14047:57;14039:66;;;::::0;::::1;;14118:25;14188:3;5234:12;5164:2;5234;:12;:::i;:::-;5221:25;::::0;:10:::1;:25;:::i;:::-;14161:24;::::0;14184:1:::1;14161:24;:::i;:::-;:30;;;;:::i;:::-;14147:45;::::0;:3;:45:::1;:::i;:::-;14118:75;;14204:20;14260:13;;14254:3;5164:2;5234;:12;;;;:::i;:::-;5221:25;::::0;:10:::1;:25;:::i;:::-;14227:24;::::0;14250:1:::1;14227:24;:::i;:::-;:30;;;;:::i;:::-;:46;;;;:::i;:::-;14204:69;;14322:17;14294:24;14312:4;14294:9;:24::i;:::-;:45;;14286:92;;;::::0;-1:-1:-1;;;14286:92:0;;8378:2:1;14286:92:0::1;::::0;::::1;8360:21:1::0;8417:2;8397:18;;;8390:30;8456:34;8436:18;;;8429:62;-1:-1:-1;;;8507:18:1;;;8500:32;8549:19;;14286:92:0::1;8176:398:1::0;14286:92:0::1;14396:9;14391:107;14411:14:::0;;::::1;14391:107;;;14473:12;14447:13;:21;14461:3;;14465:1;14461:6;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;14447:21:0::1;-1:-1:-1::0;;;;;14447:21:0::1;;;;;;;;;;;;;:39;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;14427:3:0;;-1:-1:-1;14427:3:0::1;::::0;::::1;:::i;:::-;;;;14391:107;;;;14510:4;-1:-1:-1::0;;;;;14510:12:0::1;;14530:21;14510:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;14567:14;14637:13;;14617:17;:33;;;;:::i;:::-;14607:4;14585:28;::::0;;;:13:::1;:28;::::0;;;;;:66:::1;::::0;;::::1;:::i;:::-;-1:-1:-1::0;;;;;14677:4:0::1;14663:19;;::::0;;;:13:::1;:19;::::0;;;;:32;;14567:85;;-1:-1:-1;14567:85:0;;14663:19;;;:32:::1;::::0;14567:85;;14663:32:::1;:::i;:::-;::::0;;;-1:-1:-1;;14728:4:0::1;14737:1;14706:28:::0;;;:13:::1;:28;::::0;;;;;:32;;;14806:13:::1;::::0;14778:4:::1;-1:-1:-1::0;;;;;14754:66:0::1;14784:19:::0;;;;;;;;14754:66;;14728:4;-1:-1:-1;;;;;;;;;;;14754:66:0;14784:35:::1;::::0;14806:13;14784:35:::1;:::i;:::-;14754:66;::::0;1527:25:1;;;1515:2;1500:18;14754:66:0::1;;;;;;;14879:46;::::0;-1:-1:-1;;;14879:46:0;;14919:4:::1;14879:46;::::0;::::1;2244:51:1::0;14848:4:0::1;-1:-1:-1::0;;;;;14833:30:0::1;::::0;::::1;::::0;14872:4:::1;::::0;14833:30;;14879:31:::1;::::0;2217:18:1;;14879:46:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14833:93;::::0;-1:-1:-1;;;;;;14833:93:0::1;::::0;;;;;;-1:-1:-1;;;;;9232:32:1;;;14833:93:0::1;::::0;::::1;9214:51:1::0;9281:18;;;9274:34;9187:18;;14833:93:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;14951:4;-1:-1:-1::0;;;;;14939:22:0::1;;14962:7;3956:6:::0;;-1:-1:-1;;;;;3956:6:0;;;;;;3891:79;14962:7:::1;14939:31;::::0;-1:-1:-1;;;;;;14939:31:0::1;::::0;;;;;;-1:-1:-1;;;;;2262:32:1;;;14939:31:0::1;::::0;::::1;2244:51:1::0;2217:18;;14939:31:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;14981:7:0::1;:14:::0;;-1:-1:-1;;;;14981:14:0::1;-1:-1:-1::0;;;14981:14:0::1;::::0;;15044:19:::1;::::0;15026:37:::1;::::0;:15:::1;:37;:::i;:::-;15008:15;:55:::0;15106:16:::1;::::0;15088:34:::1;::::0;:15:::1;:34;:::i;:::-;15074:11;:48:::0;-1:-1:-1;;;;;13907:1304:0:o;3140:87::-;3179:13;3212:7;3205:14;;;;;:::i;12387:153::-;12470:7;;-1:-1:-1;;;;;12470:7:0;12456:10;:21;12448:46;;;;-1:-1:-1;;;12448:46:0;;;;;;;:::i;:::-;12505:20;:27;12387:153::o;9517:481::-;7294:10;9604:4;9639:27;;;:13;:27;;;;;;;;-1:-1:-1;;;;;9639:36:0;;;;;;;;;;9690:27;;;9686:198;;7294:10;9773:1;9734:27;;;:13;:27;;;;;;;;-1:-1:-1;;;;;9734:36:0;;;;;;;;;:40;9686:198;;;9846:26;9857:15;9846:8;:26;:::i;:::-;7294:10;9807:27;;;;:13;:27;;;;;;;;-1:-1:-1;;;;;9807:36:0;;;;;;;;;:65;9686:198;7294:10;9931:27;;;;:13;:27;;;;;;;;-1:-1:-1;;;;;9899:69:0;;9931:36;;;;;;;;;;;9899:69;;1527:25:1;;;9899:69:0;;;;7294:10;9899:69;;;;;;;;;;;-1:-1:-1;9986:4:0;;9517:481;-1:-1:-1;;;9517:481:0:o;7726:197::-;7830:4;7810:9;-1:-1:-1;;;;;6068:18:0;;6060:27;;;;;;7847:46:::1;7294:10:::0;7875:9:::1;7886:6;7847:13;:46::i;:::-;-1:-1:-1::0;7911:4:0::1;::::0;7726:197;-1:-1:-1;;;7726:197:0:o;4214:109::-;4032:6;;;;;-1:-1:-1;;;;;4032:6:0;4018:10;:20;4010:42;;;;-1:-1:-1;;;4010:42:0;;;;;;;:::i;:::-;4287:28:::1;4306:8;4287:18;:28::i;13029:870::-:0;13122:7;;-1:-1:-1;;;;;13122:7:0;13108:10;:21;13100:46;;;;-1:-1:-1;;;13100:46:0;;;;;;;:::i;:::-;10550:15;;10569;-1:-1:-1;10550:34:0;13157:59;;;;-1:-1:-1;;;13157:59:0;;9803:2:1;13157:59:0;;;9785:21:1;;;9822:18;;;9815:30;9881:34;9861:18;;;9854:62;9933:18;;13157:59:0;9601:356:1;13157:59:0;13261:16;;13243:34;;:15;:34;:::i;:::-;13229:11;:48;13290:28;13321:15;13331:4;13321:9;:15::i;:::-;13290:46;-1:-1:-1;13349:26:0;13422:5;13378:41;13401:18;13290:46;13378:41;:::i;:::-;:49;;;;:::i;:::-;13349:78;-1:-1:-1;13444:22:0;;13440:324;;13483:30;13537:13;;13516:18;:34;;;;:::i;:::-;-1:-1:-1;;;;;13579:4:0;13565:19;;;;;:13;:19;;;;;:45;;13483:67;;-1:-1:-1;13483:67:0;;13565:19;;;:45;;13483:67;;13565:45;:::i;:::-;;;;-1:-1:-1;;13647:6:0;13625:30;;;;:13;:30;;;:56;;13659:22;;13625:30;:56;;13659:22;;13625:56;:::i;:::-;;;;-1:-1:-1;;13701:51:0;;1527:25:1;;;13724:6:0;;-1:-1:-1;;;;;13710:4:0;13701:51;;-1:-1:-1;;;;;;;;;;;13701:51:0;1515:2:1;1500:18;13701:51:0;;;;;;;13468:296;13440:324;13776:17;13808:4;13776:37;;13824:5;-1:-1:-1;;;;;13824:10:0;;:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;13852:39:0;;13872:18;;-1:-1:-1;13852:39:0;;-1:-1:-1;13852:39:0;;;13089:810;;;13029:870;:::o;8570:939::-;8667:14;;-1:-1:-1;;;8667:14:0;;;;8664:337;;;8711:4;-1:-1:-1;;;;;8701:14:0;:6;-1:-1:-1;;;;;8701:14:0;;:35;;;;8732:4;-1:-1:-1;;;;;8719:17:0;:9;-1:-1:-1;;;;;8719:17:0;;8701:35;8697:141;;;8774:12;;8764:6;:22;;8756:66;;;;-1:-1:-1;;;8756:66:0;;10164:2:1;8756:66:0;;;10146:21:1;10203:2;10183:18;;;10176:30;10242:33;10222:18;;;10215:61;10293:18;;8756:66:0;9962:355:1;8756:66:0;8869:4;-1:-1:-1;;;;;8856:17:0;:9;-1:-1:-1;;;;;8856:17:0;;8852:138;;8934:9;;8924:6;8901:20;8911:9;8901;:20::i;:::-;:29;;;;:::i;:::-;:42;;8893:81;;;;-1:-1:-1;;;8893:81:0;;10524:2:1;8893:81:0;;;10506:21:1;10563:2;10543:18;;;10536:30;10602:28;10582:18;;;10575:56;10648:18;;8893:81:0;10322:350:1;8893:81:0;9029:4;-1:-1:-1;;;;;9016:17:0;:9;-1:-1:-1;;;;;9016:17:0;;9013:214;;9052:15;;;;:33;;;;-1:-1:-1;10550:15:0;;10569;-1:-1:-1;10550:34:0;9071:14;9049:85;;;9105:13;:11;:13::i;:::-;;9049:85;10550:15;;10569;-1:-1:-1;9148:68:0;;9187:13;:11;:13::i;:::-;9239:18;9268:13;;9260:6;:22;;;;:::i;:::-;-1:-1:-1;;;;;9319:21:0;;;;;;:13;:21;;;;;;9239:43;;-1:-1:-1;9319:34:0;;9239:43;;9319:34;:::i;:::-;-1:-1:-1;;;;;9295:21:0;;;;;;;:13;:21;;;;;;:58;;;;9391:24;;;;;;;:37;;9417:10;;9391:37;:::i;:::-;-1:-1:-1;;;;;9364:24:0;;;;;;;:13;:24;;;;;:64;;;;9486:13;;9446:55;;;;-1:-1:-1;;;;;;;;;;;9446:55:0;9474:26;;:10;:26;:::i;:::-;9446:55;;1527:25:1;;;1515:2;1500:18;9446:55:0;;;;;;;8653:856;8570:939;;;:::o;10714:715::-;10754:7;10774:12;10789:15;10774:30;;10817:19;10875:22;;10853:20;;10840:12;;:33;;;;:::i;:::-;10839:58;;;;:::i;:::-;10817:80;;10929:19;;10910:15;;:38;;;;;;;:::i;:::-;;;;-1:-1:-1;;10980:1:0;10965:16;;;10961:119;;11015:4;11003:31;11021:12;;11003:31;;;;1527:25:1;;1515:2;1500:18;;1381:177;11003:31:0;;;;;;;;11056:12;;11049:19;;;;10714:715;:::o;10961:119::-;11122:11;11107:12;;:26;;;;:::i;:::-;11092:12;:41;5404:12;5164:2;5404;:12;:::i;:::-;5399:17;;:2;:17;:::i;:::-;11150:12;;:25;11146:121;;;5404:12;5164:2;5404;:12;:::i;:::-;5399:17;;:2;:17;:::i;:::-;11192:12;:25;11232:15;:23;;-1:-1:-1;;11232:23:0;;;11146:121;11309:12;;5234;5164:2;5234;:12;:::i;:::-;5221:25;;:10;:25;:::i;:::-;5313:40;;-1:-1:-1;;5313:40:0;:::i;:::-;5292:62;;-1:-1:-1;;5292:62:0;:::i;:::-;11295:26;;;;:::i;:::-;11279:13;:42;11334:8;:6;:8::i;:::-;11372:4;11360:31;11378:12;;11360:31;;;;1527:25:1;;1515:2;1500:18;;1381:177;4331:187:0;-1:-1:-1;;;;;4405:22:0;;4397:31;;;;;;4465:6;;4444:38;;-1:-1:-1;;;;;4444:38:0;;;;4465:6;;;;;4444:38;;;;;4493:6;:17;;-1:-1:-1;;;;;4493:17:0;;;;;-1:-1:-1;;;;;;4493:17:0;;;;;;;;;4331:187::o;11437:712::-;11512:16;;11494:34;;:15;:34;:::i;:::-;11480:11;:48;11541:28;11572:15;11582:4;11572:9;:15::i;:::-;11541:46;;11600:26;11672:5;11652:17;;11629:20;:40;;;;:::i;:::-;:48;;;;:::i;:::-;11600:77;-1:-1:-1;11694:22:0;;11690:324;;11733:30;11787:13;;11766:18;:34;;;;:::i;:::-;-1:-1:-1;;;;;11829:4:0;11815:19;;;;;:13;:19;;;;;:45;;11733:67;;-1:-1:-1;11733:67:0;;11815:19;;;:45;;11733:67;;11815:45;:::i;:::-;;;;-1:-1:-1;;11897:6:0;11875:30;;;;:13;:30;;;:56;;11909:22;;11875:30;:56;;11909:22;;11875:56;:::i;:::-;;;;-1:-1:-1;;11951:51:0;;1527:25:1;;;11974:6:0;;-1:-1:-1;;;;;11960:4:0;11951:51;;-1:-1:-1;;;;;;;;;;;11951:51:0;1515:2:1;1500:18;11951:51:0;;;;;;;11718:296;11690:324;12026:17;12058:4;12026:37;;12074:5;-1:-1:-1;;;;;12074:10:0;;:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;12102:39:0;;12122:18;;-1:-1:-1;12102:39:0;;-1:-1:-1;12102:39:0;;;11469:680;;;11437:712::o;10600:106::-;10638:17;10670:4;10638:37;;10686:5;-1:-1:-1;;;;;10686:10:0;;:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10627:79;10600:106::o;14:548:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:173::-;635:20;;-1:-1:-1;;;;;684:31:1;;674:42;;664:70;;730:1;727;720:12;664:70;567:173;;;:::o;745:254::-;813:6;821;874:2;862:9;853:7;849:23;845:32;842:52;;;890:1;887;880:12;842:52;913:29;932:9;913:29;:::i;:::-;903:39;989:2;974:18;;;;961:32;;-1:-1:-1;;;745:254:1:o;1196:180::-;1255:6;1308:2;1296:9;1287:7;1283:23;1279:32;1276:52;;;1324:1;1321;1314:12;1276:52;-1:-1:-1;1347:23:1;;1196:180;-1:-1:-1;1196:180:1:o;1563:328::-;1640:6;1648;1656;1709:2;1697:9;1688:7;1684:23;1680:32;1677:52;;;1725:1;1722;1715:12;1677:52;1748:29;1767:9;1748:29;:::i;:::-;1738:39;;1796:38;1830:2;1819:9;1815:18;1796:38;:::i;:::-;1786:48;;1881:2;1870:9;1866:18;1853:32;1843:42;;1563:328;;;;;:::o;2306:186::-;2365:6;2418:2;2406:9;2397:7;2393:23;2389:32;2386:52;;;2434:1;2431;2424:12;2386:52;2457:29;2476:9;2457:29;:::i;:::-;2447:39;2306:186;-1:-1:-1;;;2306:186:1:o;2497:615::-;2583:6;2591;2644:2;2632:9;2623:7;2619:23;2615:32;2612:52;;;2660:1;2657;2650:12;2612:52;2700:9;2687:23;2729:18;2770:2;2762:6;2759:14;2756:34;;;2786:1;2783;2776:12;2756:34;2824:6;2813:9;2809:22;2799:32;;2869:7;2862:4;2858:2;2854:13;2850:27;2840:55;;2891:1;2888;2881:12;2840:55;2931:2;2918:16;2957:2;2949:6;2946:14;2943:34;;;2973:1;2970;2963:12;2943:34;3026:7;3021:2;3011:6;3008:1;3004:14;3000:2;2996:23;2992:32;2989:45;2986:65;;;3047:1;3044;3037:12;2986:65;3078:2;3070:11;;;;;3100:6;;-1:-1:-1;2497:615:1;;-1:-1:-1;;;;2497:615:1:o;3325:260::-;3393:6;3401;3454:2;3442:9;3433:7;3429:23;3425:32;3422:52;;;3470:1;3467;3460:12;3422:52;3493:29;3512:9;3493:29;:::i;:::-;3483:39;;3541:38;3575:2;3564:9;3560:18;3541:38;:::i;:::-;3531:48;;3325:260;;;;;:::o;3816:380::-;3895:1;3891:12;;;;3938;;;3959:61;;4013:4;4005:6;4001:17;3991:27;;3959:61;4066:2;4058:6;4055:14;4035:18;4032:38;4029:161;;4112:10;4107:3;4103:20;4100:1;4093:31;4147:4;4144:1;4137:15;4175:4;4172:1;4165:15;4029:161;;3816:380;;;:::o;4201:336::-;4403:2;4385:21;;;4442:2;4422:18;;;4415:30;-1:-1:-1;;;4476:2:1;4461:18;;4454:42;4528:2;4513:18;;4201:336::o;4944:127::-;5005:10;5000:3;4996:20;4993:1;4986:31;5036:4;5033:1;5026:15;5060:4;5057:1;5050:15;5076:128;5143:9;;;5164:11;;;5161:37;;;5178:18;;:::i;5209:125::-;5274:9;;;5295:10;;;5292:36;;;5308:18;;:::i;5339:168::-;5412:9;;;5443;;5460:15;;;5454:22;;5440:37;5430:71;;5481:18;;:::i;5512:127::-;5573:10;5568:3;5564:20;5561:1;5554:31;5604:4;5601:1;5594:15;5628:4;5625:1;5618:15;5644:120;5684:1;5710;5700:35;;5715:18;;:::i;:::-;-1:-1:-1;5749:9:1;;5644:120::o;5769:332::-;5971:2;5953:21;;;6010:1;5990:18;;;5983:29;-1:-1:-1;;;6043:2:1;6028:18;;6021:39;6092:2;6077:18;;5769:332::o;6802:422::-;6891:1;6934:5;6891:1;6948:270;6969:7;6959:8;6956:21;6948:270;;;7028:4;7024:1;7020:6;7016:17;7010:4;7007:27;7004:53;;;7037:18;;:::i;:::-;7087:7;7077:8;7073:22;7070:55;;;7107:16;;;;7070:55;7186:22;;;;7146:15;;;;6948:270;;;6952:3;6802:422;;;;;:::o;7229:806::-;7278:5;7308:8;7298:80;;-1:-1:-1;7349:1:1;7363:5;;7298:80;7397:4;7387:76;;-1:-1:-1;7434:1:1;7448:5;;7387:76;7479:4;7497:1;7492:59;;;;7565:1;7560:130;;;;7472:218;;7492:59;7522:1;7513:10;;7536:5;;;7560:130;7597:3;7587:8;7584:17;7581:43;;;7604:18;;:::i;:::-;-1:-1:-1;;7660:1:1;7646:16;;7675:5;;7472:218;;7774:2;7764:8;7761:16;7755:3;7749:4;7746:13;7742:36;7736:2;7726:8;7723:16;7718:2;7712:4;7709:12;7705:35;7702:77;7699:159;;;-1:-1:-1;7811:19:1;;;7843:5;;7699:159;7890:34;7915:8;7909:4;7890:34;:::i;:::-;7960:6;7956:1;7952:6;7948:19;7939:7;7936:32;7933:58;;;7971:18;;:::i;:::-;8009:20;;7229:806;-1:-1:-1;;;7229:806:1:o;8040:131::-;8100:5;8129:36;8156:8;8150:4;8129:36;:::i;8579:127::-;8640:10;8635:3;8631:20;8628:1;8621:31;8671:4;8668:1;8661:15;8695:4;8692:1;8685:15;8711:135;8750:3;8771:17;;;8768:43;;8791:18;;:::i;:::-;-1:-1:-1;8838:1:1;8827:13;;8711:135::o;8851:184::-;8921:6;8974:2;8962:9;8953:7;8949:23;8945:32;8942:52;;;8990:1;8987;8980:12;8942:52;-1:-1:-1;9013:16:1;;8851:184;-1:-1:-1;8851:184:1:o;9319:277::-;9386:6;9439:2;9427:9;9418:7;9414:23;9410:32;9407:52;;;9455:1;9452;9445:12;9407:52;9487:9;9481:16;9540:5;9533:13;9526:21;9519:5;9516:32;9506:60;;9562:1;9559;9552:12;10677:112;10709:1;10735;10725:35;;10740:18;;:::i;:::-;-1:-1:-1;10774:9:1;;10677:112::o

Swarm Source

ipfs://9494a487059a6697ec976fcf72e616b5de646e574d1e386f4452751b82f026e0

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  ]
[ 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.