ETH Price: $2,868.51 (-2.39%)

Contract

0x192bCa1BfE8eC6D04C8d4Aeb56B427221473D91c

Overview

ETH Balance

0 ETH

ETH Value

$0.00

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Block
From
To
Approve3632466972025-07-30 19:28:08179 days ago1753903688IN
0x192bCa1B...21473D91c
0 ETH0.00000430.078642
Approve3629975002025-07-30 2:11:05180 days ago1753841465IN
0x192bCa1B...21473D91c
0 ETH0.000000530.01
Approve3629926482025-07-30 1:50:53180 days ago1753840253IN
0x192bCa1B...21473D91c
0 ETH0.00000050.01
Transfer3629910332025-07-30 1:44:09180 days ago1753839849IN
0x192bCa1B...21473D91c
0 ETH0.000000580.01
Approve3629880412025-07-30 1:31:43180 days ago1753839103IN
0x192bCa1B...21473D91c
0 ETH0.000000520.01
Approve3629864992025-07-30 1:25:17180 days ago1753838717IN
0x192bCa1B...21473D91c
0 ETH0.000000520.01
Transfer3208881692025-03-29 20:53:07302 days ago1743281587IN
0x192bCa1B...21473D91c
0 ETH0.000000510.01
Approve3201117962025-03-27 14:53:41304 days ago1743087221IN
0x192bCa1B...21473D91c
0 ETH0.000000570.018734
Approve2892940772024-12-27 22:51:42394 days ago1735339902IN
0x192bCa1B...21473D91c
0 ETH0.000001470.01
Approve2892910672024-12-27 22:39:00394 days ago1735339140IN
0x192bCa1B...21473D91c
0 ETH0.000001410.01
Approve2721772182024-11-08 2:38:35444 days ago1731033515IN
0x192bCa1B...21473D91c
0 ETH0.00000130.01
Approve2582167112024-09-28 11:16:20484 days ago1727522180IN
0x192bCa1B...21473D91c
0 ETH0.000000880.01
Transfer2512265192024-09-08 2:36:46505 days ago1725763006IN
0x192bCa1B...21473D91c
0 ETH0.000000520.01
Transfer2512229082024-09-08 2:21:40505 days ago1725762100IN
0x192bCa1B...21473D91c
0 ETH0.000000520.01
Approve2496695862024-09-03 13:38:21509 days ago1725370701IN
0x192bCa1B...21473D91c
0 ETH0.000001810.071121
Approve2429216032024-08-14 22:34:15529 days ago1723674855IN
0x192bCa1B...21473D91c
0 ETH0.000000350.01
Transfer2201084472024-06-09 17:21:09595 days ago1717953669IN
0x192bCa1B...21473D91c
0 ETH0.000001230.01
Approve2027748802024-04-19 22:41:22646 days ago1713566482IN
0x192bCa1B...21473D91c
0 ETH0.000000630.010006
Transfer1920563782024-03-19 17:07:02677 days ago1710868022IN
0x192bCa1B...21473D91c
0 ETH0.000001440.01
Approve1760024892024-01-31 8:58:41725 days ago1706691521IN
0x192bCa1B...21473D91c
0 ETH0.000041910.1
Approve1578477322023-12-07 19:35:49780 days ago1701977749IN
0x192bCa1B...21473D91c
0 ETH0.000125890.1
Approve1506306152023-11-15 10:50:00802 days ago1700045400IN
0x192bCa1B...21473D91c
0 ETH0.000048840.1
Approve1466032792023-11-03 4:56:15814 days ago1698987375IN
0x192bCa1B...21473D91c
0 ETH0.00002160.1
Approve1466030432023-11-03 4:55:17814 days ago1698987317IN
0x192bCa1B...21473D91c
0 ETH0.000022620.1
Approve1463573802023-11-02 10:50:56815 days ago1698922256IN
0x192bCa1B...21473D91c
0 ETH0.000038330.1
View all transactions

Parent Transaction Hash Block From To
View All Internal Transactions

Cross-Chain Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
DoodleAI

Compiler Version
v0.6.12+commit.27d51765

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Arbiscan.io on 2023-05-12
*/

//  ▄█▀▀▀█▄█     ██     ▀███▀   ▀██▀     ▄▄█▀▀▀█▄█▀████▄     ▄███▀
// ▄██    ▀█    ▄██▄      ███   ▄█     ▄██▀     ▀█  ████    ████  
// ▀███▄       ▄█▀██▄      ███ ▄█      ██▀       ▀  █ ██   ▄█ ██  
//   ▀█████▄  ▄█  ▀██       ████       ██           █  ██  █▀ ██  
// ▄     ▀██  ████████       ██        ██▄    ▀████ █  ██▄█▀  ██  
// ██     ██ █▀      ██      ██        ▀██▄     ██  █  ▀██▀   ██  
// █▀█████▀▄███▄   ▄████▄  ▄████▄        ▀▀███████▄███▄ ▀▀  ▄████▄
                                                               
                                                               



// ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
// ░      ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░   ░░   ░░░░░░░░░░░░░░░░░░  ░░░░░░░░   
// ▒   ▒▒▒   ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒   ▒▒   ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒  ▒  ▒▒▒▒▒▒   
// ▒   ▒▒▒▒   ▒▒▒▒   ▒▒▒▒▒▒▒▒   ▒▒▒▒▒▒▒▒▒▒   ▒▒   ▒▒▒▒   ▒▒▒▒▒▒▒▒▒  ▒▒   ▒▒▒▒▒   
// ▓   ▓▓▓▓   ▓▓   ▓▓   ▓▓▓   ▓▓   ▓▓▓   ▓   ▓▓   ▓▓  ▓▓▓   ▓▓▓▓▓   ▓▓▓   ▓▓▓▓   
// ▓   ▓▓▓▓   ▓   ▓▓▓▓   ▓   ▓▓▓▓   ▓  ▓▓▓   ▓▓   ▓         ▓▓▓▓       ▓   ▓▓▓   
// ▓   ▓▓▓   ▓▓▓   ▓▓   ▓▓▓   ▓▓   ▓▓  ▓▓▓   ▓▓   ▓  ▓▓▓▓▓▓▓▓▓▓   ▓▓▓▓▓▓▓   ▓▓   
// █      ████████   ████████   ██████   █   ██   ███     ████   █████████   █   
// ██████████████████████████████████████████████████████████████████████████████






// SPDX-License-Identifier: MIT

pragma solidity 0.6.12;


contract Context {
    
    constructor() internal {}

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

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


contract Ownable is Context {
    address private _owner;

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

    
    constructor() internal {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

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

    
    modifier onlyOwner() {
        require(_owner == _msgSender(), 'Ownable: caller is not the owner');
        _;
    }

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

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

   
    function _transferOwnership(address newOwner) internal {
        require(newOwner != address(0), 'Ownable: new owner is the zero address');
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}


interface IERC20 {
   
    function totalSupply() external view returns (uint256);

    function decimals() external view returns (uint8);

   
    function symbol() external view returns (string memory);

    
    function name() external view returns (string memory);

    
    function getOwner() external view returns (address);

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


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

        return c;
    }

    
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, 'SafeMath: subtraction overflow');
    }

   
    function sub(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }

   
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
      
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        require(c / a == b, 'SafeMath: multiplication overflow');
        return c;
    }

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

        return c;
    }

    
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, 'SafeMath: modulo by zero');
    }

    
    function mod(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }

    function min(uint256 x, uint256 y) internal pure returns (uint256 z) {
        z = x < y ? x : y;
    }

    
    function sqrt(uint256 y) internal pure returns (uint256 z) {
        if (y > 3) {
            z = y;
            uint256 x = y / 2 + 1;
            while (x < z) {
                z = x;
                x = (y / x + x) / 2;
            }
        } else if (y != 0) {
            z = 1;
        }
    }
}


library Address {
    
    function isContract(address account) internal view returns (bool) {
        
        bytes32 codehash;
        bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
        assembly {
            codehash := extcodehash(account)
        }
        return (codehash != accountHash && codehash != 0x0);
    }

    
    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, 'Address: insufficient balance');

        (bool success, ) = recipient.call{value: amount}('');
        require(success, 'Address: unable to send value, recipient may have reverted');
    }

    
    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionCall(target, data, 'Address: low-level call failed');
    }

    
    function functionCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        return _functionCallWithValue(target, data, 0, errorMessage);
    }

    
    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value
    ) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, 'Address: low-level call with value failed');
    }

    
    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value,
        string memory errorMessage
    ) internal returns (bytes memory) {
        require(address(this).balance >= value, 'Address: insufficient balance for call');
        return _functionCallWithValue(target, data, value, errorMessage);
    }

    function _functionCallWithValue(
        address target,
        bytes memory data,
        uint256 weiValue,
        string memory errorMessage
    ) private returns (bytes memory) {
        require(isContract(target), 'Address: call to non-contract');

        (bool success, bytes memory returndata) = target.call{value: weiValue}(data);
        if (success) {
            return returndata;
        } else {
            if (returndata.length > 0) {
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}
// DoodleAI

contract ERC20 is Context, IERC20, Ownable {
    using SafeMath for uint256;
    using Address for address;

    mapping(address => uint256) private _balances;

    mapping(address => mapping(address => uint256)) private _allowances;

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;
    uint8 private _decimals;

    constructor(string memory name, string memory symbol) public {
        _name = name;
        _symbol = symbol;
        _decimals = 18;
    }

 
    function getOwner() external override view returns (address) {
        return owner();
    }

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

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

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

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

  
    function balanceOf(address account) public override view returns (uint256) {
        return _balances[account];
    }


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

  
    function allowance(address owner, address spender) public override view returns (uint256) {
        return _allowances[owner][spender];
    }

    
    function approve(address spender, uint256 amount) public override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

 
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(
            sender,
            _msgSender(),
            _allowances[sender][_msgSender()].sub(amount, 'ERC20: transfer amount exceeds allowance')
        );
        return true;
    }

    
    function increaseAllowance(address spender, uint256 addedValue) public returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));
        return true;
    }

    
    function decreaseAllowance(address spender, uint256 subtractedValue) public returns (bool) {
        _approve(
            _msgSender(),
            spender,
            _allowances[_msgSender()][spender].sub(subtractedValue, 'ERC20: decreased allowance below zero')
        );
        return true;
    }

    // DoodleAI
    function mint(uint256 amount) public onlyOwner returns (bool) {
        _mint(_msgSender(), amount);
        return true;
    }

    
    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal {
        require(sender != address(0), 'ERC20: transfer from the zero address');
        require(recipient != address(0), 'ERC20: transfer to the zero address');

        _balances[sender] = _balances[sender].sub(amount, 'ERC20: transfer amount exceeds balance');
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
    }

    
    function _mint(address account, uint256 amount) internal {
        require(account != address(0), 'ERC20: mint to the zero address');

        _totalSupply = _totalSupply.add(amount);
        _balances[account] = _balances[account].add(amount);
        emit Transfer(address(0), account, amount);
    }

    
    function _burn(address account, uint256 amount) internal {
        require(account != address(0), 'ERC20: burn from the zero address');

        _balances[account] = _balances[account].sub(amount, 'ERC20: burn amount exceeds balance');
        _totalSupply = _totalSupply.sub(amount);
        emit Transfer(account, address(0), amount);
    }
// DoodleAI
    
    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal {
        require(owner != address(0), 'ERC20: approve from the zero address');
        require(spender != address(0), 'ERC20: approve to the zero address');

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    // DoodleAI
    function _burnFrom(address account, uint256 amount) internal {
        _burn(account, amount);
        _approve(
            account,
            _msgSender(),
            _allowances[account][_msgSender()].sub(amount, 'ERC20: burn amount exceeds allowance')
        );
    }
}

contract DoodleAI is ERC20('DoodleAI', 'DoodleAI') {
    function mint(address _to, uint256 _amount) public onlyOwner {
        _mint(_to, _amount);
        _moveDelegates(address(0), _delegates[_to], _amount);
    }

    
    mapping (address => address) internal _delegates;

    struct Checkpoint {
        uint32 fromBlock;
        uint256 votes;
    }

    
    mapping (address => mapping (uint32 => Checkpoint)) public checkpoints;

    
    mapping (address => uint32) public numCheckpoints;

    
    bytes32 public constant DOMAIN_TYPEHASH = keccak256("EIP712Domain(string name,uint256 chainId,address verifyingContract)");

    
    bytes32 public constant DELEGATION_TYPEHASH = keccak256("Delegation(address delegatee,uint256 nonce,uint256 expiry)");

    
    mapping (address => uint) public nonces;

      
    event DelegateChanged(address indexed delegator, address indexed fromDelegate, address indexed toDelegate);
// DoodleAI
    
    event DelegateVotesChanged(address indexed delegate, uint previousBalance, uint newBalance);

    
    function delegates(address delegator)
        external
        view
        returns (address)
    {
        return _delegates[delegator];
    }

   
    function delegate(address delegatee) external {
        return _delegate(msg.sender, delegatee);
    }

    
    function delegateBySig(
        address delegatee,
        uint nonce,
        uint expiry,
        uint8 v,
        bytes32 r,
        bytes32 s
    )
        external
    {
        bytes32 domainSeparator = keccak256(
            abi.encode(
                DOMAIN_TYPEHASH,
                keccak256(bytes(name())),
                getChainId(),
                address(this)
            )
        );

        bytes32 structHash = keccak256(
            abi.encode(
                DELEGATION_TYPEHASH,
                delegatee,
                nonce,
                expiry
            )
        );

        bytes32 digest = keccak256(
            abi.encodePacked(
                "\x19\x01",
                domainSeparator,
                structHash
            )
        );

        address signatory = ecrecover(digest, v, r, s);
        require(signatory != address(0), "DoodleAI::delegateBySig: invalid signature");
        require(nonce == nonces[signatory]++, "DoodleAI::delegateBySig: invalid nonce");
        require(now <= expiry, "DoodleAI::delegateBySig: signature expired");
        return _delegate(signatory, delegatee);
    }
// DoodleAI

    function getCurrentVotes(address account)
        external
        view
        returns (uint256)
    {
        uint32 nCheckpoints = numCheckpoints[account];
        return nCheckpoints > 0 ? checkpoints[account][nCheckpoints - 1].votes : 0;
    }

    
    function getPriorVotes(address account, uint blockNumber)
        external
        view
        returns (uint256)
    {
        require(blockNumber < block.number, "DoodleAI::getPriorVotes: not yet determined");

        uint32 nCheckpoints = numCheckpoints[account];
        if (nCheckpoints == 0) {
            return 0;
        }

        if (checkpoints[account][nCheckpoints - 1].fromBlock <= blockNumber) {
            return checkpoints[account][nCheckpoints - 1].votes;
        }

     
        if (checkpoints[account][0].fromBlock > blockNumber) {
            return 0;
        }

        uint32 lower = 0;
        uint32 upper = nCheckpoints - 1;
        while (upper > lower) {
            uint32 center = upper - (upper - lower) / 2; 
            Checkpoint memory cp = checkpoints[account][center];
            if (cp.fromBlock == blockNumber) {
                return cp.votes;
            } else if (cp.fromBlock < blockNumber) {
                lower = center;
            } else {
                upper = center - 1;
            }
        }
        return checkpoints[account][lower].votes;
    }

    function _delegate(address delegator, address delegatee)
        internal
    {
        address currentDelegate = _delegates[delegator];
        uint256 delegatorBalance = balanceOf(delegator); 
        _delegates[delegator] = delegatee;

        emit DelegateChanged(delegator, currentDelegate, delegatee);

        _moveDelegates(currentDelegate, delegatee, delegatorBalance);
    }

    function _moveDelegates(address srcRep, address dstRep, uint256 amount) internal {
        if (srcRep != dstRep && amount > 0) {
            if (srcRep != address(0)) {
                uint32 srcRepNum = numCheckpoints[srcRep];
                uint256 srcRepOld = srcRepNum > 0 ? checkpoints[srcRep][srcRepNum - 1].votes : 0;
                uint256 srcRepNew = srcRepOld.sub(amount);
                _writeCheckpoint(srcRep, srcRepNum, srcRepOld, srcRepNew);
            }

            if (dstRep != address(0)) {
                uint32 dstRepNum = numCheckpoints[dstRep];
                uint256 dstRepOld = dstRepNum > 0 ? checkpoints[dstRep][dstRepNum - 1].votes : 0;
                uint256 dstRepNew = dstRepOld.add(amount);
                _writeCheckpoint(dstRep, dstRepNum, dstRepOld, dstRepNew);
            }
        }
    }

    function _writeCheckpoint(
        address delegatee,
        uint32 nCheckpoints,
        uint256 oldVotes,
        uint256 newVotes
    )
        internal
    {
        uint32 blockNumber = safe32(block.number, "DoodleAI::_writeCheckpoint: block number exceeds 32 bits");

        if (nCheckpoints > 0 && checkpoints[delegatee][nCheckpoints - 1].fromBlock == blockNumber) {
            checkpoints[delegatee][nCheckpoints - 1].votes = newVotes;
        } else {
            checkpoints[delegatee][nCheckpoints] = Checkpoint(blockNumber, newVotes);
            numCheckpoints[delegatee] = nCheckpoints + 1;
        }

        emit DelegateVotesChanged(delegatee, oldVotes, newVotes);
    }

    function safe32(uint n, string memory errorMessage) internal pure returns (uint32) {
        require(n < 2**32, errorMessage);
        return uint32(n);
    }

    function getChainId() internal pure returns (uint) {
        uint256 chainId;
        assembly { chainId := chainid() }
        return chainId;
    }
}

Contract Security Audit

Contract ABI

API
[{"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":"address","name":"delegator","type":"address"},{"indexed":true,"internalType":"address","name":"fromDelegate","type":"address"},{"indexed":true,"internalType":"address","name":"toDelegate","type":"address"}],"name":"DelegateChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"delegate","type":"address"},{"indexed":false,"internalType":"uint256","name":"previousBalance","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newBalance","type":"uint256"}],"name":"DelegateVotesChanged","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":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":[],"name":"DELEGATION_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DOMAIN_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"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":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint32","name":"","type":"uint32"}],"name":"checkpoints","outputs":[{"internalType":"uint32","name":"fromBlock","type":"uint32"},{"internalType":"uint256","name":"votes","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":"delegatee","type":"address"}],"name":"delegate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"delegatee","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"expiry","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"delegateBySig","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"delegator","type":"address"}],"name":"delegates","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getCurrentVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"getPriorVotes","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":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"numCheckpoints","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","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"}]

60806040523480156200001157600080fd5b506040518060400160405280600881526020017f446f6f646c6541490000000000000000000000000000000000000000000000008152506040518060400160405280600881526020017f446f6f646c6541490000000000000000000000000000000000000000000000008152506000620000906200018460201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3508160049080519060200190620001469291906200018c565b5080600590805190602001906200015f9291906200018c565b506012600660006101000a81548160ff021916908360ff160217905550505062000232565b600033905090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620001cf57805160ff191683800117855562000200565b8280016001018555821562000200579182015b82811115620001ff578251825591602001919060010190620001e2565b5b5090506200020f919062000213565b5090565b5b808211156200022e57600081600090555060010162000214565b5090565b61303080620002426000396000f3fe608060405234801561001057600080fd5b50600436106101a95760003560e01c8063782d6fe1116100f9578063a9059cbb11610097578063dd62ed3e11610071578063dd62ed3e1461091c578063e7a324dc14610994578063f1127ed8146109b2578063f2fde38b14610a27576101a9565b8063a9059cbb146107e7578063b4b5ea571461084b578063c3cda520146108a3576101a9565b80638da5cb5b116100d35780638da5cb5b1461068857806395d89b41146106bc578063a0712d681461073f578063a457c2d714610783576101a9565b8063782d6fe11461059a5780637ecebe00146105fc578063893d20e814610654576101a9565b806339509351116101665780635c19a95c116101405780635c19a95c146104965780636fcfff45146104da57806370a0823114610538578063715018a614610590576101a9565b8063395093511461037657806340c10f19146103da578063587cde1e14610428576101a9565b806306fdde03146101ae578063095ea7b31461023157806318160ddd1461029557806320606b70146102b357806323b872dd146102d1578063313ce56714610355575b600080fd5b6101b6610a6b565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101f65780820151818401526020810190506101db565b50505050905090810190601f1680156102235780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61027d6004803603604081101561024757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610b0d565b60405180821515815260200191505060405180910390f35b61029d610b2b565b6040518082815260200191505060405180910390f35b6102bb610b35565b6040518082815260200191505060405180910390f35b61033d600480360360608110156102e757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610b59565b60405180821515815260200191505060405180910390f35b61035d610c32565b604051808260ff16815260200191505060405180910390f35b6103c26004803603604081101561038c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610c49565b60405180821515815260200191505060405180910390f35b610426600480360360408110156103f057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610cfc565b005b61046a6004803603602081101561043e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610e3d565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6104d8600480360360208110156104ac57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610ea6565b005b61051c600480360360208110156104f057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610eb3565b604051808263ffffffff16815260200191505060405180910390f35b61057a6004803603602081101561054e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610ed6565b6040518082815260200191505060405180910390f35b610598610f1f565b005b6105e6600480360360408110156105b057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506110a5565b6040518082815260200191505060405180910390f35b61063e6004803603602081101561061257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611466565b6040518082815260200191505060405180910390f35b61065c61147e565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61069061148d565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6106c46114b6565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156107045780820151818401526020810190506106e9565b50505050905090810190601f1680156107315780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61076b6004803603602081101561075557600080fd5b8101908080359060200190929190505050611558565b60405180821515815260200191505060405180910390f35b6107cf6004803603604081101561079957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061163c565b60405180821515815260200191505060405180910390f35b610833600480360360408110156107fd57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611709565b60405180821515815260200191505060405180910390f35b61088d6004803603602081101561086157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611727565b6040518082815260200191505060405180910390f35b61091a600480360360c08110156108b957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190803560ff16906020019092919080359060200190929190803590602001909291905050506117fd565b005b61097e6004803603604081101561093257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611b61565b6040518082815260200191505060405180910390f35b61099c611be8565b6040518082815260200191505060405180910390f35b610a04600480360360408110156109c857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803563ffffffff169060200190929190505050611c0c565b604051808363ffffffff1681526020018281526020019250505060405180910390f35b610a6960048036036020811015610a3d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611c4d565b005b606060048054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610b035780601f10610ad857610100808354040283529160200191610b03565b820191906000526020600020905b815481529060010190602001808311610ae657829003601f168201915b5050505050905090565b6000610b21610b1a611d21565b8484611d29565b6001905092915050565b6000600354905090565b7f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b6000610b66848484611f20565b610c2784610b72611d21565b610c2285604051806060016040528060288152602001612f2d60289139600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610bd8611d21565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546121da9092919063ffffffff16565b611d29565b600190509392505050565b6000600660009054906101000a900460ff16905090565b6000610cf2610c56611d21565b84610ced8560026000610c67611d21565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461229a90919063ffffffff16565b611d29565b6001905092915050565b610d04611d21565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610dc4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b610dce8282612322565b610e396000600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836124df565b5050565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b610eb0338261277c565b50565b60096020528060005260406000206000915054906101000a900463ffffffff1681565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610f27611d21565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fe7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60004382106110ff576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180612eae602b913960400191505060405180910390fd5b6000600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900463ffffffff16905060008163ffffffff16141561116c576000915050611460565b82600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001840363ffffffff1663ffffffff16815260200190815260200160002060000160009054906101000a900463ffffffff1663ffffffff161161125657600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001830363ffffffff1663ffffffff16815260200190815260200160002060010154915050611460565b82600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008063ffffffff16815260200190815260200160002060000160009054906101000a900463ffffffff1663ffffffff1611156112d7576000915050611460565b6000806001830390505b8163ffffffff168163ffffffff1611156113fa576000600283830363ffffffff168161130957fe5b0482039050611316612dd6565b600860008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008363ffffffff1663ffffffff1681526020019081526020016000206040518060400160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff168152602001600182015481525050905086816000015163ffffffff1614156113d257806020015195505050505050611460565b86816000015163ffffffff1610156113ec578193506113f3565b6001820392505b50506112e1565b600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008363ffffffff1663ffffffff1681526020019081526020016000206001015493505050505b92915050565b600a6020528060005260406000206000915090505481565b600061148861148d565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060058054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561154e5780601f106115235761010080835404028352916020019161154e565b820191906000526020600020905b81548152906001019060200180831161153157829003601f168201915b5050505050905090565b6000611562611d21565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611622576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b61163361162d611d21565b83612322565b60019050919050565b60006116ff611649611d21565b846116fa85604051806060016040528060258152602001612fd66025913960026000611673611d21565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546121da9092919063ffffffff16565b611d29565b6001905092915050565b600061171d611716611d21565b8484611f20565b6001905092915050565b600080600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900463ffffffff16905060008163ffffffff16116117915760006117f5565b600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001830363ffffffff1663ffffffff168152602001908152602001600020600101545b915050919050565b60007f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866611828610a6b565b805190602001206118376128ed565b30604051602001808581526020018481526020018381526020018273ffffffffffffffffffffffffffffffffffffffff16815260200194505050505060405160208183030381529060405280519060200120905060007fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf888888604051602001808581526020018473ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018281526020019450505050506040516020818303038152906040528051906020012090506000828260405160200180807f190100000000000000000000000000000000000000000000000000000000000081525060020183815260200182815260200192505050604051602081830303815290604052805190602001209050600060018288888860405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa1580156119bb573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611a4d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180612ed9602a913960400191505060405180910390fd5b600a60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190600101919050558914611af2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180612e1a6026913960400191505060405180910390fd5b87421115611b4b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180612f03602a913960400191505060405180910390fd5b611b55818b61277c565b50505050505050505050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b7fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf81565b6008602052816000526040600020602052806000526040600020600091509150508060000160009054906101000a900463ffffffff16908060010154905082565b611c55611d21565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d15576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b611d1e816128fa565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611daf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180612fb26024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611e35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180612e666022913960400191505060405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611fa6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180612f8d6025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561202c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180612df76023913960400191505060405180910390fd5b61209881604051806060016040528060268152602001612e8860269139600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546121da9092919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061212d81600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461229a90919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b6000838311158290612287576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561224c578082015181840152602081019050612231565b50505050905090810190601f1680156122795780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b600080828401905083811015612318576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156123c5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f45524332303a206d696e7420746f20746865207a65726f20616464726573730081525060200191505060405180910390fd5b6123da8160035461229a90919063ffffffff16565b60038190555061243281600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461229a90919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561251b5750600081115b1561277757600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461264b576000600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900463ffffffff1690506000808263ffffffff16116125be576000612622565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001840363ffffffff1663ffffffff168152602001908152602001600020600101545b905060006126398483612a3d90919063ffffffff16565b905061264786848484612a87565b5050505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614612776576000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900463ffffffff1690506000808263ffffffff16116126e957600061274d565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001840363ffffffff1663ffffffff168152602001908152602001600020600101545b90506000612764848361229a90919063ffffffff16565b905061277285848484612a87565b5050505b5b505050565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060006127eb84610ed6565b905082600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f60405160405180910390a46128e78284836124df565b50505050565b6000804690508091505090565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612980576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180612e406026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000612a7f83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506121da565b905092915050565b6000612aab43604051806060016040528060388152602001612f5560389139612d1b565b905060008463ffffffff16118015612b4057508063ffffffff16600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001870363ffffffff1663ffffffff16815260200190815260200160002060000160009054906101000a900463ffffffff1663ffffffff16145b15612bb15781600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001870363ffffffff1663ffffffff16815260200190815260200160002060010181905550612cbe565b60405180604001604052808263ffffffff16815260200183815250600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008663ffffffff1663ffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff1602179055506020820151816001015590505060018401600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548163ffffffff021916908363ffffffff1602179055505b8473ffffffffffffffffffffffffffffffffffffffff167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a7248484604051808381526020018281526020019250505060405180910390a25050505050565b600064010000000083108290612dcc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612d91578082015181840152602081019050612d76565b50505050905090810190601f168015612dbe5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5082905092915050565b6040518060400160405280600063ffffffff16815260200160008152509056fe45524332303a207472616e7366657220746f20746865207a65726f2061646472657373446f6f646c6541493a3a64656c656761746542795369673a20696e76616c6964206e6f6e63654f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365446f6f646c6541493a3a6765745072696f72566f7465733a206e6f74207965742064657465726d696e6564446f6f646c6541493a3a64656c656761746542795369673a20696e76616c6964207369676e6174757265446f6f646c6541493a3a64656c656761746542795369673a207369676e6174757265206578706972656445524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365446f6f646c6541493a3a5f7772697465436865636b706f696e743a20626c6f636b206e756d6265722065786365656473203332206269747345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220a6bd2d4f5c8b3c4aef20b1ce6a164b541227523e80d362cb24a2920a393a3d3364736f6c634300060c0033

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101a95760003560e01c8063782d6fe1116100f9578063a9059cbb11610097578063dd62ed3e11610071578063dd62ed3e1461091c578063e7a324dc14610994578063f1127ed8146109b2578063f2fde38b14610a27576101a9565b8063a9059cbb146107e7578063b4b5ea571461084b578063c3cda520146108a3576101a9565b80638da5cb5b116100d35780638da5cb5b1461068857806395d89b41146106bc578063a0712d681461073f578063a457c2d714610783576101a9565b8063782d6fe11461059a5780637ecebe00146105fc578063893d20e814610654576101a9565b806339509351116101665780635c19a95c116101405780635c19a95c146104965780636fcfff45146104da57806370a0823114610538578063715018a614610590576101a9565b8063395093511461037657806340c10f19146103da578063587cde1e14610428576101a9565b806306fdde03146101ae578063095ea7b31461023157806318160ddd1461029557806320606b70146102b357806323b872dd146102d1578063313ce56714610355575b600080fd5b6101b6610a6b565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101f65780820151818401526020810190506101db565b50505050905090810190601f1680156102235780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61027d6004803603604081101561024757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610b0d565b60405180821515815260200191505060405180910390f35b61029d610b2b565b6040518082815260200191505060405180910390f35b6102bb610b35565b6040518082815260200191505060405180910390f35b61033d600480360360608110156102e757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610b59565b60405180821515815260200191505060405180910390f35b61035d610c32565b604051808260ff16815260200191505060405180910390f35b6103c26004803603604081101561038c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610c49565b60405180821515815260200191505060405180910390f35b610426600480360360408110156103f057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610cfc565b005b61046a6004803603602081101561043e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610e3d565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6104d8600480360360208110156104ac57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610ea6565b005b61051c600480360360208110156104f057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610eb3565b604051808263ffffffff16815260200191505060405180910390f35b61057a6004803603602081101561054e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610ed6565b6040518082815260200191505060405180910390f35b610598610f1f565b005b6105e6600480360360408110156105b057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506110a5565b6040518082815260200191505060405180910390f35b61063e6004803603602081101561061257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611466565b6040518082815260200191505060405180910390f35b61065c61147e565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61069061148d565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6106c46114b6565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156107045780820151818401526020810190506106e9565b50505050905090810190601f1680156107315780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61076b6004803603602081101561075557600080fd5b8101908080359060200190929190505050611558565b60405180821515815260200191505060405180910390f35b6107cf6004803603604081101561079957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061163c565b60405180821515815260200191505060405180910390f35b610833600480360360408110156107fd57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611709565b60405180821515815260200191505060405180910390f35b61088d6004803603602081101561086157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611727565b6040518082815260200191505060405180910390f35b61091a600480360360c08110156108b957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190803560ff16906020019092919080359060200190929190803590602001909291905050506117fd565b005b61097e6004803603604081101561093257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611b61565b6040518082815260200191505060405180910390f35b61099c611be8565b6040518082815260200191505060405180910390f35b610a04600480360360408110156109c857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803563ffffffff169060200190929190505050611c0c565b604051808363ffffffff1681526020018281526020019250505060405180910390f35b610a6960048036036020811015610a3d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611c4d565b005b606060048054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610b035780601f10610ad857610100808354040283529160200191610b03565b820191906000526020600020905b815481529060010190602001808311610ae657829003601f168201915b5050505050905090565b6000610b21610b1a611d21565b8484611d29565b6001905092915050565b6000600354905090565b7f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b6000610b66848484611f20565b610c2784610b72611d21565b610c2285604051806060016040528060288152602001612f2d60289139600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610bd8611d21565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546121da9092919063ffffffff16565b611d29565b600190509392505050565b6000600660009054906101000a900460ff16905090565b6000610cf2610c56611d21565b84610ced8560026000610c67611d21565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461229a90919063ffffffff16565b611d29565b6001905092915050565b610d04611d21565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610dc4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b610dce8282612322565b610e396000600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836124df565b5050565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b610eb0338261277c565b50565b60096020528060005260406000206000915054906101000a900463ffffffff1681565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610f27611d21565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fe7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60004382106110ff576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180612eae602b913960400191505060405180910390fd5b6000600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900463ffffffff16905060008163ffffffff16141561116c576000915050611460565b82600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001840363ffffffff1663ffffffff16815260200190815260200160002060000160009054906101000a900463ffffffff1663ffffffff161161125657600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001830363ffffffff1663ffffffff16815260200190815260200160002060010154915050611460565b82600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008063ffffffff16815260200190815260200160002060000160009054906101000a900463ffffffff1663ffffffff1611156112d7576000915050611460565b6000806001830390505b8163ffffffff168163ffffffff1611156113fa576000600283830363ffffffff168161130957fe5b0482039050611316612dd6565b600860008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008363ffffffff1663ffffffff1681526020019081526020016000206040518060400160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff168152602001600182015481525050905086816000015163ffffffff1614156113d257806020015195505050505050611460565b86816000015163ffffffff1610156113ec578193506113f3565b6001820392505b50506112e1565b600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008363ffffffff1663ffffffff1681526020019081526020016000206001015493505050505b92915050565b600a6020528060005260406000206000915090505481565b600061148861148d565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060058054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561154e5780601f106115235761010080835404028352916020019161154e565b820191906000526020600020905b81548152906001019060200180831161153157829003601f168201915b5050505050905090565b6000611562611d21565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611622576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b61163361162d611d21565b83612322565b60019050919050565b60006116ff611649611d21565b846116fa85604051806060016040528060258152602001612fd66025913960026000611673611d21565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546121da9092919063ffffffff16565b611d29565b6001905092915050565b600061171d611716611d21565b8484611f20565b6001905092915050565b600080600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900463ffffffff16905060008163ffffffff16116117915760006117f5565b600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001830363ffffffff1663ffffffff168152602001908152602001600020600101545b915050919050565b60007f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866611828610a6b565b805190602001206118376128ed565b30604051602001808581526020018481526020018381526020018273ffffffffffffffffffffffffffffffffffffffff16815260200194505050505060405160208183030381529060405280519060200120905060007fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf888888604051602001808581526020018473ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018281526020019450505050506040516020818303038152906040528051906020012090506000828260405160200180807f190100000000000000000000000000000000000000000000000000000000000081525060020183815260200182815260200192505050604051602081830303815290604052805190602001209050600060018288888860405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa1580156119bb573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611a4d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180612ed9602a913960400191505060405180910390fd5b600a60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190600101919050558914611af2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180612e1a6026913960400191505060405180910390fd5b87421115611b4b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180612f03602a913960400191505060405180910390fd5b611b55818b61277c565b50505050505050505050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b7fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf81565b6008602052816000526040600020602052806000526040600020600091509150508060000160009054906101000a900463ffffffff16908060010154905082565b611c55611d21565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d15576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b611d1e816128fa565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611daf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180612fb26024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611e35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180612e666022913960400191505060405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611fa6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180612f8d6025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561202c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180612df76023913960400191505060405180910390fd5b61209881604051806060016040528060268152602001612e8860269139600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546121da9092919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061212d81600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461229a90919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b6000838311158290612287576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561224c578082015181840152602081019050612231565b50505050905090810190601f1680156122795780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b600080828401905083811015612318576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156123c5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f45524332303a206d696e7420746f20746865207a65726f20616464726573730081525060200191505060405180910390fd5b6123da8160035461229a90919063ffffffff16565b60038190555061243281600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461229a90919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561251b5750600081115b1561277757600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461264b576000600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900463ffffffff1690506000808263ffffffff16116125be576000612622565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001840363ffffffff1663ffffffff168152602001908152602001600020600101545b905060006126398483612a3d90919063ffffffff16565b905061264786848484612a87565b5050505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614612776576000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900463ffffffff1690506000808263ffffffff16116126e957600061274d565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001840363ffffffff1663ffffffff168152602001908152602001600020600101545b90506000612764848361229a90919063ffffffff16565b905061277285848484612a87565b5050505b5b505050565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060006127eb84610ed6565b905082600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f60405160405180910390a46128e78284836124df565b50505050565b6000804690508091505090565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612980576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180612e406026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000612a7f83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506121da565b905092915050565b6000612aab43604051806060016040528060388152602001612f5560389139612d1b565b905060008463ffffffff16118015612b4057508063ffffffff16600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001870363ffffffff1663ffffffff16815260200190815260200160002060000160009054906101000a900463ffffffff1663ffffffff16145b15612bb15781600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001870363ffffffff1663ffffffff16815260200190815260200160002060010181905550612cbe565b60405180604001604052808263ffffffff16815260200183815250600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008663ffffffff1663ffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff1602179055506020820151816001015590505060018401600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548163ffffffff021916908363ffffffff1602179055505b8473ffffffffffffffffffffffffffffffffffffffff167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a7248484604051808381526020018281526020019250505060405180910390a25050505050565b600064010000000083108290612dcc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612d91578082015181840152602081019050612d76565b50505050905090810190601f168015612dbe5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5082905092915050565b6040518060400160405280600063ffffffff16815260200160008152509056fe45524332303a207472616e7366657220746f20746865207a65726f2061646472657373446f6f646c6541493a3a64656c656761746542795369673a20696e76616c6964206e6f6e63654f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365446f6f646c6541493a3a6765745072696f72566f7465733a206e6f74207965742064657465726d696e6564446f6f646c6541493a3a64656c656761746542795369673a20696e76616c6964207369676e6174757265446f6f646c6541493a3a64656c656761746542795369673a207369676e6174757265206578706972656445524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365446f6f646c6541493a3a5f7772697465436865636b706f696e743a20626c6f636b206e756d6265722065786365656473203332206269747345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220a6bd2d4f5c8b3c4aef20b1ce6a164b541227523e80d362cb24a2920a393a3d3364736f6c634300060c0033

Deployed Bytecode Sourcemap

14529:6313:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10453:92;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11342:161;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;10765:100;;;:::i;:::-;;;;;;;;;;;;;;;;;;;15060:122;;;:::i;:::-;;;;;;;;;;;;;;;;;;;11514:397;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;10553:92;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;11925:210;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;14587:162;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;15623:149;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;15785:104;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;14996:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;10877:119;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3675:140;;;:::i;:::-;;17383:1149;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;15329:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;10348:94;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;3449:79;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;10656:96;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12485:130;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;12149:311;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;11006:167;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;17114:255;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;15903:1190;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;11185:143;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;15197:117;;;:::i;:::-;;;;;;;;;;;;;;;;;;;14911:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;3829:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;10453:92;10499:13;10532:5;10525:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10453:92;:::o;11342:161::-;11417:4;11434:39;11443:12;:10;:12::i;:::-;11457:7;11466:6;11434:8;:39::i;:::-;11491:4;11484:11;;11342:161;;;;:::o;10765:100::-;10818:7;10845:12;;10838:19;;10765:100;:::o;15060:122::-;15102:80;15060:122;:::o;11514:397::-;11646:4;11663:36;11673:6;11681:9;11692:6;11663:9;:36::i;:::-;11710:171;11733:6;11754:12;:10;:12::i;:::-;11781:89;11819:6;11781:89;;;;;;;;;;;;;;;;;:11;:19;11793:6;11781:19;;;;;;;;;;;;;;;:33;11801:12;:10;:12::i;:::-;11781:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;11710:8;:171::i;:::-;11899:4;11892:11;;11514:397;;;;;:::o;10553:92::-;10603:5;10628:9;;;;;;;;;;;10621:16;;10553:92;:::o;11925:210::-;12005:4;12022:83;12031:12;:10;:12::i;:::-;12045:7;12054:50;12093:10;12054:11;:25;12066:12;:10;:12::i;:::-;12054:25;;;;;;;;;;;;;;;:34;12080:7;12054:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;12022:8;:83::i;:::-;12123:4;12116:11;;11925:210;;;;:::o;14587:162::-;3592:12;:10;:12::i;:::-;3582:22;;:6;;;;;;;;;;:22;;;3574:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14659:19:::1;14665:3;14670:7;14659:5;:19::i;:::-;14689:52;14712:1;14716:10;:15;14727:3;14716:15;;;;;;;;;;;;;;;;;;;;;;;;;14733:7;14689:14;:52::i;:::-;14587:162:::0;;:::o;15623:149::-;15711:7;15743:10;:21;15754:9;15743:21;;;;;;;;;;;;;;;;;;;;;;;;;15736:28;;15623:149;;;:::o;15785:104::-;15849:32;15859:10;15871:9;15849;:32::i;:::-;15785:104;:::o;14996:49::-;;;;;;;;;;;;;;;;;;;;;;:::o;10877:119::-;10943:7;10970:9;:18;10980:7;10970:18;;;;;;;;;;;;;;;;10963:25;;10877:119;;;:::o;3675:140::-;3592:12;:10;:12::i;:::-;3582:22;;:6;;;;;;;;;;:22;;;3574:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3774:1:::1;3737:40;;3758:6;::::0;::::1;;;;;;;;3737:40;;;;;;;;;;;;3805:1;3788:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;3675:140::o:0;17383:1149::-;17491:7;17538:12;17524:11;:26;17516:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17611:19;17633:14;:23;17648:7;17633:23;;;;;;;;;;;;;;;;;;;;;;;;;17611:45;;17687:1;17671:12;:17;;;17667:58;;;17712:1;17705:8;;;;;17667:58;17793:11;17741;:20;17753:7;17741:20;;;;;;;;;;;;;;;:38;17777:1;17762:12;:16;17741:38;;;;;;;;;;;;;;;:48;;;;;;;;;;;;:63;;;17737:147;;17828:11;:20;17840:7;17828:20;;;;;;;;;;;;;;;:38;17864:1;17849:12;:16;17828:38;;;;;;;;;;;;;;;:44;;;17821:51;;;;;17737:147;17943:11;17907;:20;17919:7;17907:20;;;;;;;;;;;;;;;:23;17928:1;17907:23;;;;;;;;;;;;;:33;;;;;;;;;;;;:47;;;17903:88;;;17978:1;17971:8;;;;;17903:88;18003:12;18030;18060:1;18045:12;:16;18030:31;;18072:402;18087:5;18079:13;;:5;:13;;;18072:402;;;18109:13;18151:1;18142:5;18134;:13;18133:19;;;;;;;;18125:5;:27;18109:43;;18168:20;;:::i;:::-;18191:11;:20;18203:7;18191:20;;;;;;;;;;;;;;;:28;18212:6;18191:28;;;;;;;;;;;;;;;18168:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18254:11;18238:2;:12;;;:27;;;18234:229;;;18293:2;:8;;;18286:15;;;;;;;;;18234:229;18342:11;18327:2;:12;;;:26;;;18323:140;;;18382:6;18374:14;;18323:140;;;18446:1;18437:6;:10;18429:18;;18323:140;18072:402;;;;;18491:11;:20;18503:7;18491:20;;;;;;;;;;;;;;;:27;18512:5;18491:27;;;;;;;;;;;;;;;:33;;;18484:40;;;;;17383:1149;;;;;:::o;15329:39::-;;;;;;;;;;;;;;;;;:::o;10348:94::-;10400:7;10427;:5;:7::i;:::-;10420:14;;10348:94;:::o;3449:79::-;3487:7;3514:6;;;;;;;;;;;3507:13;;3449:79;:::o;10656:96::-;10704:13;10737:7;10730:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10656:96;:::o;12485:130::-;12541:4;3592:12;:10;:12::i;:::-;3582:22;;:6;;;;;;;;;;:22;;;3574:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12558:27:::1;12564:12;:10;:12::i;:::-;12578:6;12558:5;:27::i;:::-;12603:4;12596:11;;12485:130:::0;;;:::o;12149:311::-;12234:4;12251:179;12274:12;:10;:12::i;:::-;12301:7;12323:96;12362:15;12323:96;;;;;;;;;;;;;;;;;:11;:25;12335:12;:10;:12::i;:::-;12323:25;;;;;;;;;;;;;;;:34;12349:7;12323:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;12251:8;:179::i;:::-;12448:4;12441:11;;12149:311;;;;:::o;11006:167::-;11084:4;11101:42;11111:12;:10;:12::i;:::-;11125:9;11136:6;11101:9;:42::i;:::-;11161:4;11154:11;;11006:167;;;;:::o;17114:255::-;17206:7;17231:19;17253:14;:23;17268:7;17253:23;;;;;;;;;;;;;;;;;;;;;;;;;17231:45;;17309:1;17294:12;:16;;;:67;;17360:1;17294:67;;;17313:11;:20;17325:7;17313:20;;;;;;;;;;;;;;;:38;17349:1;17334:12;:16;17313:38;;;;;;;;;;;;;;;:44;;;17294:67;17287:74;;;17114:255;;;:::o;15903:1190::-;16096:23;15102:80;16225:6;:4;:6::i;:::-;16209:24;;;;;;16252:12;:10;:12::i;:::-;16291:4;16146:165;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16122:200;;;;;;16096:226;;16335:18;15243:71;16447:9;16475:5;16499:6;16380:140;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16356:175;;;;;;16335:196;;16544:14;16649:15;16683:10;16585:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16561:158;;;;;;16544:175;;16732:17;16752:26;16762:6;16770:1;16773;16776;16752:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16732:46;;16818:1;16797:23;;:9;:23;;;;16789:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16895:6;:17;16902:9;16895:17;;;;;;;;;;;;;;;;:19;;;;;;;;;;;;16886:5;:28;16878:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16983:6;16976:3;:13;;16968:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17054:31;17064:9;17075;17054;:31::i;:::-;17047:38;;;;15903:1190;;;;;;:::o;11185:143::-;11266:7;11293:11;:18;11305:5;11293:18;;;;;;;;;;;;;;;:27;11312:7;11293:27;;;;;;;;;;;;;;;;11286:34;;11185:143;;;;:::o;15197:117::-;15243:71;15197:117;:::o;14911:70::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;3829:109::-;3592:12;:10;:12::i;:::-;3582:22;;:6;;;;;;;;;;:22;;;3574:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3902:28:::1;3921:8;3902:18;:28::i;:::-;3829:109:::0;:::o;2888:98::-;2933:15;2968:10;2961:17;;2888:98;:::o;13843:372::-;13988:1;13971:19;;:5;:19;;;;13963:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14069:1;14050:21;;:7;:21;;;;14042:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14153:6;14123:11;:18;14135:5;14123:18;;;;;;;;;;;;;;;:27;14142:7;14123:27;;;;;;;;;;;;;;;:36;;;;14191:7;14175:32;;14184:5;14175:32;;;14200:6;14175:32;;;;;;;;;;;;;;;;;;13843:372;;;:::o;12629:505::-;12779:1;12761:20;;:6;:20;;;;12753:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12863:1;12842:23;;:9;:23;;;;12834:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12938;12960:6;12938:71;;;;;;;;;;;;;;;;;:9;:17;12948:6;12938:17;;;;;;;;;;;;;;;;:21;;:71;;;;;:::i;:::-;12918:9;:17;12928:6;12918:17;;;;;;;;;;;;;;;:91;;;;13043:32;13068:6;13043:9;:20;13053:9;13043:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;13020:9;:20;13030:9;13020:20;;;;;;;;;;;;;;;:55;;;;13108:9;13091:35;;13100:6;13091:35;;;13119:6;13091:35;;;;;;;;;;;;;;;;;;12629:505;;;:::o;5595:226::-;5715:7;5748:1;5743;:6;;5751:12;5735:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5775:9;5791:1;5787;:5;5775:17;;5812:1;5805:8;;;5595:226;;;;;:::o;5251:181::-;5309:7;5329:9;5345:1;5341;:5;5329:17;;5370:1;5365;:6;;5357:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5423:1;5416:8;;;5251:181;;;;:::o;13148:308::-;13243:1;13224:21;;:7;:21;;;;13216:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13309:24;13326:6;13309:12;;:16;;:24;;;;:::i;:::-;13294:12;:39;;;;13365:30;13388:6;13365:9;:18;13375:7;13365:18;;;;;;;;;;;;;;;;:22;;:30;;;;:::i;:::-;13344:9;:18;13354:7;13344:18;;;;;;;;;;;;;;;:51;;;;13432:7;13411:37;;13428:1;13411:37;;;13441:6;13411:37;;;;;;;;;;;;;;;;;;13148:308;;:::o;18942:851::-;19048:6;19038:16;;:6;:16;;;;:30;;;;;19067:1;19058:6;:10;19038:30;19034:752;;;19107:1;19089:20;;:6;:20;;;19085:337;;19130:16;19149:14;:22;19164:6;19149:22;;;;;;;;;;;;;;;;;;;;;;;;;19130:41;;19190:17;19222:1;19210:9;:13;;;:60;;19269:1;19210:60;;;19226:11;:19;19238:6;19226:19;;;;;;;;;;;;;;;:34;19258:1;19246:9;:13;19226:34;;;;;;;;;;;;;;;:40;;;19210:60;19190:80;;19289:17;19309:21;19323:6;19309:9;:13;;:21;;;;:::i;:::-;19289:41;;19349:57;19366:6;19374:9;19385;19396;19349:16;:57::i;:::-;19085:337;;;;19460:1;19442:20;;:6;:20;;;19438:337;;19483:16;19502:14;:22;19517:6;19502:22;;;;;;;;;;;;;;;;;;;;;;;;;19483:41;;19543:17;19575:1;19563:9;:13;;;:60;;19622:1;19563:60;;;19579:11;:19;19591:6;19579:19;;;;;;;;;;;;;;;:34;19611:1;19599:9;:13;19579:34;;;;;;;;;;;;;;;:40;;;19563:60;19543:80;;19642:17;19662:21;19676:6;19662:9;:13;;:21;;;;:::i;:::-;19642:41;;19702:57;19719:6;19727:9;19738;19749;19702:16;:57::i;:::-;19438:337;;;;19034:752;18942:851;;;:::o;18540:394::-;18631:23;18657:10;:21;18668:9;18657:21;;;;;;;;;;;;;;;;;;;;;;;;;18631:47;;18689:24;18716:20;18726:9;18716;:20::i;:::-;18689:47;;18772:9;18748:10;:21;18759:9;18748:21;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;18843:9;18799:54;;18826:15;18799:54;;18815:9;18799:54;;;;;;;;;;;;18866:60;18881:15;18898:9;18909:16;18866:14;:60::i;:::-;18540:394;;;;:::o;20686:153::-;20731:4;20748:15;20796:9;20785:20;;20824:7;20817:14;;;20686:153;:::o;3951:229::-;4045:1;4025:22;;:8;:22;;;;4017:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4135:8;4106:38;;4127:6;;;;;;;;;;4106:38;;;;;;;;;;;;4164:8;4155:6;;:17;;;;;;;;;;;;;;;;;;3951:229;:::o;5446:136::-;5504:7;5531:43;5535:1;5538;5531:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;5524:50;;5446:136;;;;:::o;19801:708::-;19980:18;20001:80;20008:12;20001:80;;;;;;;;;;;;;;;;;:6;:80::i;:::-;19980:101;;20113:1;20098:12;:16;;;:85;;;;;20172:11;20118:65;;:11;:22;20130:9;20118:22;;;;;;;;;;;;;;;:40;20156:1;20141:12;:16;20118:40;;;;;;;;;;;;;;;:50;;;;;;;;;;;;:65;;;20098:85;20094:339;;;20249:8;20200:11;:22;20212:9;20200:22;;;;;;;;;;;;;;;:40;20238:1;20223:12;:16;20200:40;;;;;;;;;;;;;;;:46;;:57;;;;20094:339;;;20329:33;;;;;;;;20340:11;20329:33;;;;;;20353:8;20329:33;;;20290:11;:22;20302:9;20290:22;;;;;;;;;;;;;;;:36;20313:12;20290:36;;;;;;;;;;;;;;;:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20420:1;20405:12;:16;20377:14;:25;20392:9;20377:25;;;;;;;;;;;;;;;;:44;;;;;;;;;;;;;;;;;;20094:339;20471:9;20450:51;;;20482:8;20492;20450:51;;;;;;;;;;;;;;;;;;;;;;;;19801:708;;;;;:::o;20517:161::-;20592:6;20623:5;20619:1;:9;20630:12;20611:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20668:1;20654:16;;20517:161;;;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;:::o

Swarm Source

ipfs://a6bd2d4f5c8b3c4aef20b1ce6a164b541227523e80d362cb24a2920a393a3d33

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
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.