ETH Price: $3,215.18 (+5.28%)

Contract

0x3BfcE6D6F0d3D3f1326d86abdbe2845b4740Dc2E
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Approve174796062023-06-14 17:17:23579 days ago1686763043IN
0x3BfcE6D6...b4740Dc2E
0 ETH0.0008013632.11383036
Approve172403482023-05-11 23:38:11613 days ago1683848291IN
0x3BfcE6D6...b4740Dc2E
0 ETH0.0021752187.16914012
Approve171345192023-04-27 2:21:59628 days ago1682562119IN
0x3BfcE6D6...b4740Dc2E
0 ETH0.0008775535.16708029
Approve170086082023-04-09 5:12:47646 days ago1681017167IN
0x3BfcE6D6...b4740Dc2E
0 ETH0.0004872119.52434524
Approve160776892022-11-29 19:18:59776 days ago1669749539IN
0x3BfcE6D6...b4740Dc2E
0 ETH0.0002779311.13784396
Approve151036912022-07-08 18:58:36920 days ago1657306716IN
0x3BfcE6D6...b4740Dc2E
0 ETH0.001042938.6920682
Approve151036882022-07-08 18:57:36920 days ago1657306656IN
0x3BfcE6D6...b4740Dc2E
0 ETH0.0008876935.57339494
Transfer149906392022-06-19 11:50:44940 days ago1655639444IN
0x3BfcE6D6...b4740Dc2E
0 ETH0.000827517.33314373
Approve149842712022-06-18 9:37:17941 days ago1655545037IN
0x3BfcE6D6...b4740Dc2E
0 ETH0.001670435.36150709
Approve148457952022-05-26 3:51:07964 days ago1653537067IN
0x3BfcE6D6...b4740Dc2E
0 ETH0.0008122332.54940281
Approve147678102022-05-13 14:04:16976 days ago1652450656IN
0x3BfcE6D6...b4740Dc2E
0 ETH0.0041131387.0725301
Withdraw147678012022-05-13 14:02:28976 days ago1652450548IN
0x3BfcE6D6...b4740Dc2E
0 ETH0.01124203104.31893629
Approve142864372022-02-27 5:50:581052 days ago1645941058IN
0x3BfcE6D6...b4740Dc2E
0 ETH0.0013836929.46422257
Approve142428902022-02-20 12:23:051058 days ago1645359785IN
0x3BfcE6D6...b4740Dc2E
0 ETH0.0008707234.89306425
Approve140460252022-01-21 1:38:031089 days ago1642729083IN
0x3BfcE6D6...b4740Dc2E
0 ETH0.00800087169.37377082
Approve138463102021-12-21 4:08:001120 days ago1640059680IN
0x3BfcE6D6...b4740Dc2E
0 ETH0.0026468356.03198855
Approve137814052021-12-11 3:19:591130 days ago1639192799IN
0x3BfcE6D6...b4740Dc2E
0 ETH0.0036776277.85318851
Approve137288972021-12-02 18:25:491138 days ago1638469549IN
0x3BfcE6D6...b4740Dc2E
0 ETH0.00506118107.14229087
Transfer136561972021-11-21 5:00:081150 days ago1637470808IN
0x3BfcE6D6...b4740Dc2E
0 ETH0.0032145767.38443796
Transfer136173452021-11-15 1:05:491156 days ago1636938349IN
0x3BfcE6D6...b4740Dc2E
0 ETH0.00590417123.76417607
Approve135762752021-11-08 14:18:361162 days ago1636381116IN
0x3BfcE6D6...b4740Dc2E
0 ETH0.00561553118.87739987
Approve134742642021-10-23 14:18:181178 days ago1634998698IN
0x3BfcE6D6...b4740Dc2E
0 ETH0.0019249570.4132958
Approve134742592021-10-23 14:16:431178 days ago1634998603IN
0x3BfcE6D6...b4740Dc2E
0 ETH0.0027231757.64795122
Withdraw134355852021-10-17 13:02:411184 days ago1634475761IN
0x3BfcE6D6...b4740Dc2E
0 ETH0.0072792780.3186541
Withdraw134137902021-10-14 2:50:141188 days ago1634179814IN
0x3BfcE6D6...b4740Dc2E
0 ETH0.00815144110.88438533
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
MATICPAD

Compiler Version
v0.8.0+commit.c7dfd78e

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-06-20
*/

// SPDX-License-Identifier: MIT

// File: @openzeppelin/contracts/token/ERC20/IERC20.sol

pragma solidity ^0.8.0;

/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

    /**
     * @dev Returns the amount of tokens owned by `account`.
     */
    function balanceOf(address account) external view returns (uint256);

    /**
     * @dev Moves `amount` tokens from the caller's account to `recipient`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address recipient, uint256 amount)
        external
        returns (bool);

    /**
     * @dev Returns the remaining number of tokens that `spender` will be
     * allowed to spend on behalf of `owner` through {transferFrom}. This is
     * zero by default.
     *
     * This value changes when {approve} or {transferFrom} are called.
     */
    function allowance(address owner, address spender)
        external
        view
        returns (uint256);

    /**
     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * IMPORTANT: Beware that changing an allowance with this method brings the risk
     * that someone may use both the old and the new allowance by unfortunate
     * transaction ordering. One possible solution to mitigate this race
     * condition is to first reduce the spender's allowance to 0 and set the
     * desired value afterwards:
     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
     *
     * Emits an {Approval} event.
     */
    function approve(address spender, uint256 amount) external returns (bool);

    /**
     * @dev Moves `amount` tokens from `sender` to `recipient` using the
     * allowance mechanism. `amount` is then deducted from the caller's
     * allowance.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

    /**
     * @dev Emitted when the allowance of a `spender` for an `owner` is set by
     * a call to {approve}. `value` is the new allowance.
     */
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
}

// File: @openzeppelin/contracts/utils/Context.sol

pragma solidity ^0.8.0;

/*
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with meta-transactions the account sending and
 * paying for execution may not be the actual sender (as far as an application
 * is concerned).
 *
 * This contract is only required for intermediate, library-like contracts.
 */
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

// File: @openzeppelin/contracts/utils/cryptography/ECDSA.sol

pragma solidity ^0.8.0;

/**
 * @dev Elliptic Curve Digital Signature Algorithm (ECDSA) operations.
 *
 * These functions can be used to verify that a message was signed by the holder
 * of the private keys of a given address.
 */
library ECDSA {
    /**
     * @dev Returns the address that signed a hashed message (`hash`) with
     * `signature`. This address can then be used for verification purposes.
     *
     * The `ecrecover` EVM opcode allows for malleable (non-unique) signatures:
     * this function rejects them by requiring the `s` value to be in the lower
     * half order, and the `v` value to be either 27 or 28.
     *
     * IMPORTANT: `hash` _must_ be the result of a hash operation for the
     * verification to be secure: it is possible to craft signatures that
     * recover to arbitrary addresses for non-hashed data. A safe way to ensure
     * this is by receiving a hash of the original message (which may otherwise
     * be too long), and then calling {toEthSignedMessageHash} on it.
     */
    function recover(bytes32 hash, bytes memory signature)
        internal
        pure
        returns (address)
    {
        // Check the signature length
        if (signature.length != 65) {
            revert("ECDSA: invalid signature length");
        }

        // Divide the signature in r, s and v variables
        bytes32 r;
        bytes32 s;
        uint8 v;

        // ecrecover takes the signature parameters, and the only way to get them
        // currently is to use assembly.
        // solhint-disable-next-line no-inline-assembly
        assembly {
            r := mload(add(signature, 0x20))
            s := mload(add(signature, 0x40))
            v := byte(0, mload(add(signature, 0x60)))
        }

        return recover(hash, v, r, s);
    }

    /**
     * @dev Overload of {ECDSA-recover} that receives the `v`,
     * `r` and `s` signature fields separately.
     */
    function recover(
        bytes32 hash,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) internal pure returns (address) {
        // EIP-2 still allows signature malleability for ecrecover(). Remove this possibility and make the signature
        // unique. Appendix F in the Ethereum Yellow paper (https://ethereum.github.io/yellowpaper/paper.pdf), defines
        // the valid range for s in (281): 0 < s < secp256k1n ÷ 2 + 1, and for v in (282): v ∈ {27, 28}. Most
        // signatures from current libraries generate a unique signature with an s-value in the lower half order.
        //
        // If your library generates malleable signatures, such as s-values in the upper range, calculate a new s-value
        // with 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141 - s1 and flip v from 27 to 28 or
        // vice versa. If your library also generates signatures with 0/1 for v instead 27/28, add 27 to v to accept
        // these malleable signatures as well.
        require(
            uint256(s) <=
                0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0,
            "ECDSA: invalid signature 's' value"
        );
        require(v == 27 || v == 28, "ECDSA: invalid signature 'v' value");

        // If the signature is valid (and not malleable), return the signer address
        address signer = ecrecover(hash, v, r, s);
        require(signer != address(0), "ECDSA: invalid signature");

        return signer;
    }

    /**
     * @dev Returns an Ethereum Signed Message, created from a `hash`. This
     * produces hash corresponding to the one signed with the
     * https://eth.wiki/json-rpc/API#eth_sign[`eth_sign`]
     * JSON-RPC method as part of EIP-191.
     *
     * See {recover}.
     */
    function toEthSignedMessageHash(bytes32 hash)
        internal
        pure
        returns (bytes32)
    {
        // 32 is the length in bytes of hash,
        // enforced by the type signature above
        return
            keccak256(
                abi.encodePacked("\x19Ethereum Signed Message:\n32", hash)
            );
    }

    /**
     * @dev Returns an Ethereum Signed Typed Data, created from a
     * `domainSeparator` and a `structHash`. This produces hash corresponding
     * to the one signed with the
     * https://eips.ethereum.org/EIPS/eip-712[`eth_signTypedData`]
     * JSON-RPC method as part of EIP-712.
     *
     * See {recover}.
     */
    function toTypedDataHash(bytes32 domainSeparator, bytes32 structHash)
        internal
        pure
        returns (bytes32)
    {
        return
            keccak256(
                abi.encodePacked("\x19\x01", domainSeparator, structHash)
            );
    }
}

// File: contracts/MaticPadEth.sol

pragma solidity ^0.8.0;

contract MATICPAD is IERC20, Context {
    using ECDSA for bytes32;

    struct Cross {
        uint256 nonce;
        mapping(uint256 => uint256) amount;
    }

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

    bytes32 public domainSeparator =
        keccak256(abi.encode(DOMAIN_TYPEHASH, getChainId(), address(this)));

    mapping(address => Cross) private _transferIn;
    mapping(address => Cross) private _transferOut;

    address private _validator;

    mapping(address => uint256) private _balances;

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    constructor(address validator) {
        _name = "MATICPAD";
        _symbol = "MATPAD";
        _validator = validator;
    }

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

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

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

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

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

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

    function getNonceIn(address user) public view returns (uint256) {
        return _transferIn[user].nonce;
    }

    function getNonceOut(address user) public view returns (uint256) {
        return _transferOut[user].nonce;
    }

    function getAmountIn(address user, uint256 nonce)
        public
        view
        returns (uint256)
    {
        return _transferIn[user].amount[nonce];
    }

    function getAmountOut(address user, uint256 nonce)
        public
        view
        returns (uint256)
    {
        return _transferOut[user].amount[nonce];
    }

    function getValidator() public view returns (address) {
        return _validator;
    }

    function setValidator(address validator) public {
        require(_msgSender() == _validator, "Validator wut?");
        _validator = validator;
    }

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

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

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(
            currentAllowance >= amount,
            "ERC20: transfer amount exceeds allowance"
        );
        _approve(sender, _msgSender(), currentAllowance - amount);

        return true;
    }

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

    function decreaseAllowance(address spender, uint256 subtractedValue)
        public
        virtual
        returns (bool)
    {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(
            currentAllowance >= subtractedValue,
            "ERC20: decreased allowance below zero"
        );
        _approve(_msgSender(), spender, currentAllowance - subtractedValue);

        return true;
    }

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

        _beforeTokenTransfer(sender, recipient, amount);

        uint256 senderBalance = _balances[sender];
        require(
            senderBalance >= amount,
            "ERC20: transfer amount exceeds balance"
        );
        _balances[sender] = senderBalance - amount;
        _balances[recipient] += amount;

        emit Transfer(sender, recipient, amount);
    }

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

        _beforeTokenTransfer(address(0), account, amount);

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

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

        _beforeTokenTransfer(account, address(0), amount);

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        _balances[account] = accountBalance - amount;
        _totalSupply -= amount;

        emit Transfer(account, address(0), amount);
    }

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        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);
    }

    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}

    function getHash(
        address user,
        uint256 nonce,
        uint256 amount
    ) public view returns (bytes32 hash) {
        hash = keccak256(
            abi.encodePacked(domainSeparator, user, nonce, amount)
        );
    }

    function deposit(uint256 amount) public virtual {
        address user = _msgSender();
        _burn(user, amount);
        uint256 nonce = getNonceOut(user);
        _transferOut[user].amount[nonce] = amount;
        _transferOut[user].nonce++;
    }

    function withdraw(uint256 amount, bytes memory signature) public virtual {
        address user = _msgSender();
        uint256 nonce = getNonceIn(user);
        bytes32 hash = getHash(user, nonce, amount);
        require(
            hash.recover(signature) == getValidator(),
            "Bridge: Invalid transaction."
        );
        _transferIn[user].amount[nonce] = amount;
        _transferIn[user].nonce++;
        _mint(_msgSender(), amount);
    }

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

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"validator","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"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":"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":[],"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":"uint256","name":"amount","type":"uint256"}],"name":"deposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"domainSeparator","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"}],"name":"getAmountIn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"}],"name":"getAmountOut","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"getHash","outputs":[{"internalType":"bytes32","name":"hash","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"getNonceIn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"getNonceOut","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getValidator","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"validator","type":"address"}],"name":"setValidator","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":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"signature","type":"bytes"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60806040527f47e79534a245952e8b16893a336b85a3d9ea9fa8c573f3d803afb92a79469218620000356200017a60201b60201c565b306040516020016200004a93929190620002ad565b604051602081830303815290604052805190602001206000553480156200007057600080fd5b5060405162002b4638038062002b4683398181016040528101906200009691906200024e565b6040518060400160405280600881526020017f4d4154494350414400000000000000000000000000000000000000000000000081525060079080519060200190620000e392919062000187565b506040518060400160405280600681526020017f4d41545041440000000000000000000000000000000000000000000000000000815250600890805190602001906200013192919062000187565b5080600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050620003b1565b6000804690508091505090565b828054620001959062000332565b90600052602060002090601f016020900481019282620001b9576000855562000205565b82601f10620001d457805160ff191683800117855562000205565b8280016001018555821562000205579182015b8281111562000204578251825591602001919060010190620001e7565b5b50905062000214919062000218565b5090565b5b808211156200023357600081600090555060010162000219565b5090565b600081519050620002488162000397565b92915050565b6000602082840312156200026157600080fd5b6000620002718482850162000237565b91505092915050565b6200028581620002ea565b82525050565b6200029681620002fe565b82525050565b620002a78162000328565b82525050565b6000606082019050620002c460008301866200028b565b620002d360208301856200029c565b620002e260408301846200027a565b949350505050565b6000620002f78262000308565b9050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060028204905060018216806200034b57607f821691505b6020821081141562000362576200036162000368565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b620003a281620002ea565b8114620003ae57600080fd5b50565b61278580620003c16000396000f3fe608060405234801561001057600080fd5b50600436106101425760003560e01c806370a08231116100b8578063a9059cbb1161007c578063a9059cbb146103b3578063b02004b2146103e3578063b6b55f2514610413578063ca706bcf1461042f578063dd62ed3e1461045f578063f698da251461048f57610142565b806370a08231146102d557806395d89b4114610305578063a00b716c14610323578063a457c2d714610353578063a85b35811461038357610142565b806318160ddd1161010a57806318160ddd146101eb57806320606b701461020957806323b872dd14610227578063313ce567146102575780633950935114610275578063632db21c146102a557610142565b8063030ba25d1461014757806306fdde0314610163578063095ea7b3146101815780631195e07e146101b15780631327d3d8146101cf575b600080fd5b610161600480360381019061015c9190611a20565b6104ad565b005b61016b610624565b60405161017891906121c3565b60405180910390f35b61019b6004803603810190610196919061196c565b6106b6565b6040516101a89190612148565b60405180910390f35b6101b96106d4565b6040516101c6919061212d565b60405180910390f35b6101e960048036038101906101e491906118b8565b6106fe565b005b6101f36107d9565b60405161020091906123e5565b60405180910390f35b6102116107e3565b60405161021e9190612163565b60405180910390f35b610241600480360381019061023c919061191d565b610807565b60405161024e9190612148565b60405180910390f35b61025f610908565b60405161026c9190612400565b60405180910390f35b61028f600480360381019061028a919061196c565b610911565b60405161029c9190612148565b60405180910390f35b6102bf60048036038101906102ba919061196c565b6109bd565b6040516102cc91906123e5565b60405180910390f35b6102ef60048036038101906102ea91906118b8565b610a1b565b6040516102fc91906123e5565b60405180910390f35b61030d610a64565b60405161031a91906121c3565b60405180910390f35b61033d600480360381019061033891906119a8565b610af6565b60405161034a9190612163565b60405180910390f35b61036d6004803603810190610368919061196c565b610b2f565b60405161037a9190612148565b60405180910390f35b61039d600480360381019061039891906118b8565b610c23565b6040516103aa91906123e5565b60405180910390f35b6103cd60048036038101906103c8919061196c565b610c6f565b6040516103da9190612148565b60405180910390f35b6103fd60048036038101906103f891906118b8565b610c8d565b60405161040a91906123e5565b60405180910390f35b61042d600480360381019061042891906119f7565b610cd9565b005b6104496004803603810190610444919061196c565b610db1565b60405161045691906123e5565b60405180910390f35b610479600480360381019061047491906118e1565b610e0f565b60405161048691906123e5565b60405180910390f35b610497610e96565b6040516104a49190612163565b60405180910390f35b60006104b7610e9c565b905060006104c482610c23565b905060006104d3838387610af6565b90506104dd6106d4565b73ffffffffffffffffffffffffffffffffffffffff166105068583610ea490919063ffffffff16565b73ffffffffffffffffffffffffffffffffffffffff161461055c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161055390612285565b60405180910390fd5b84600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101600084815260200190815260200160002081905550600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000016000815480929190610607906125f5565b919050555061061d610617610e9c565b86610f1e565b5050505050565b606060078054610633906125c3565b80601f016020809104026020016040519081016040528092919081815260200182805461065f906125c3565b80156106ac5780601f10610681576101008083540402835291602001916106ac565b820191906000526020600020905b81548152906001019060200180831161068f57829003601f168201915b5050505050905090565b60006106ca6106c3610e9c565b8484611073565b6001905092915050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661073f610e9c565b73ffffffffffffffffffffffffffffffffffffffff1614610795576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078c906122c5565b60405180910390fd5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600654905090565b7f47e79534a245952e8b16893a336b85a3d9ea9fa8c573f3d803afb92a7946921881565b600061081484848461123e565b6000600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061085f610e9c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156108df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108d690612325565b60405180910390fd5b6108fc856108eb610e9c565b85846108f791906124ee565b611073565b60019150509392505050565b60006012905090565b60006109b361091e610e9c565b84846005600061092c610e9c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546109ae9190612498565b611073565b6001905092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101600083815260200190815260200160002054905092915050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b606060088054610a73906125c3565b80601f0160208091040260200160405190810160405280929190818152602001828054610a9f906125c3565b8015610aec5780601f10610ac157610100808354040283529160200191610aec565b820191906000526020600020905b815481529060010190602001808311610acf57829003601f168201915b5050505050905090565b60008054848484604051602001610b1094939291906120df565b6040516020818303038152906040528051906020012090509392505050565b60008060056000610b3e610e9c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610bfb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bf2906123a5565b60405180910390fd5b610c18610c06610e9c565b858584610c1391906124ee565b611073565b600191505092915050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001549050919050565b6000610c83610c7c610e9c565b848461123e565b6001905092915050565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001549050919050565b6000610ce3610e9c565b9050610cef81836114c0565b6000610cfa82610c8d565b905082600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101600083815260200190815260200160002081905550600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000016000815480929190610da7906125f5565b9190505550505050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101600083815260200190815260200160002054905092915050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60005481565b600033905090565b60006041825114610eea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ee190612245565b60405180910390fd5b60008060006020850151925060408501519150606085015160001a9050610f1386828585611696565b935050505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610f8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f85906123c5565b60405180910390fd5b610f9a60008383611821565b8060066000828254610fac9190612498565b9250508190555080600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546110029190612498565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161106791906123e5565b60405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156110e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110da90612385565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611153576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114a90612265565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161123191906123e5565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156112ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112a590612365565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561131e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131590612205565b60405180910390fd5b611329838383611821565b6000600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156113b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113a7906122a5565b60405180910390fd5b81816113bc91906124ee565b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461144e9190612498565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516114b291906123e5565b60405180910390a350505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611530576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152790612345565b60405180910390fd5b61153c82600083611821565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156115c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ba90612225565b60405180910390fd5b81816115cf91906124ee565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816006600082825461162491906124ee565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161168991906123e5565b60405180910390a3505050565b60007f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08260001c11156116fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116f5906122e5565b60405180910390fd5b601b8460ff1614806117135750601c8460ff16145b611752576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161174990612305565b60405180910390fd5b600060018686868660405160008152602001604052604051611777949392919061217e565b6020604051602081039080840390855afa158015611799573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611815576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180c906121e5565b60405180910390fd5b80915050949350505050565b505050565b60006118396118348461244c565b61241b565b90508281526020810184848401111561185157600080fd5b61185c848285612581565b509392505050565b60008135905061187381612721565b92915050565b600082601f83011261188a57600080fd5b813561189a848260208601611826565b91505092915050565b6000813590506118b281612738565b92915050565b6000602082840312156118ca57600080fd5b60006118d884828501611864565b91505092915050565b600080604083850312156118f457600080fd5b600061190285828601611864565b925050602061191385828601611864565b9150509250929050565b60008060006060848603121561193257600080fd5b600061194086828701611864565b935050602061195186828701611864565b9250506040611962868287016118a3565b9150509250925092565b6000806040838503121561197f57600080fd5b600061198d85828601611864565b925050602061199e858286016118a3565b9150509250929050565b6000806000606084860312156119bd57600080fd5b60006119cb86828701611864565b93505060206119dc868287016118a3565b92505060406119ed868287016118a3565b9150509250925092565b600060208284031215611a0957600080fd5b6000611a17848285016118a3565b91505092915050565b60008060408385031215611a3357600080fd5b6000611a41858286016118a3565b925050602083013567ffffffffffffffff811115611a5e57600080fd5b611a6a85828601611879565b9150509250929050565b611a7d81612522565b82525050565b611a94611a8f82612522565b61263e565b82525050565b611aa381612534565b82525050565b611ab281612540565b82525050565b611ac9611ac482612540565b612650565b82525050565b6000611ada8261247c565b611ae48185612487565b9350611af4818560208601612590565b611afd81612703565b840191505092915050565b6000611b15601883612487565b91507f45434453413a20696e76616c6964207369676e617475726500000000000000006000830152602082019050919050565b6000611b55602383612487565b91507f45524332303a207472616e7366657220746f20746865207a65726f206164647260008301527f65737300000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611bbb602283612487565b91507f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008301527f63650000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611c21601f83612487565b91507f45434453413a20696e76616c6964207369676e6174757265206c656e677468006000830152602082019050919050565b6000611c61602283612487565b91507f45524332303a20617070726f766520746f20746865207a65726f20616464726560008301527f73730000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611cc7601c83612487565b91507f4272696467653a20496e76616c6964207472616e73616374696f6e2e000000006000830152602082019050919050565b6000611d07602683612487565b91507f45524332303a207472616e7366657220616d6f756e742065786365656473206260008301527f616c616e636500000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611d6d600e83612487565b91507f56616c696461746f72207775743f0000000000000000000000000000000000006000830152602082019050919050565b6000611dad602283612487565b91507f45434453413a20696e76616c6964207369676e6174757265202773272076616c60008301527f75650000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611e13602283612487565b91507f45434453413a20696e76616c6964207369676e6174757265202776272076616c60008301527f75650000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611e79602883612487565b91507f45524332303a207472616e7366657220616d6f756e742065786365656473206160008301527f6c6c6f77616e63650000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611edf602183612487565b91507f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008301527f73000000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611f45602583612487565b91507f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008301527f64726573730000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611fab602483612487565b91507f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008301527f72657373000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612011602583612487565b91507f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008301527f207a65726f0000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612077601f83612487565b91507f45524332303a206d696e7420746f20746865207a65726f2061646472657373006000830152602082019050919050565b6120b38161256a565b82525050565b6120ca6120c58261256a565b61266c565b82525050565b6120d981612574565b82525050565b60006120eb8287611ab8565b6020820191506120fb8286611a83565b60148201915061210b82856120b9565b60208201915061211b82846120b9565b60208201915081905095945050505050565b60006020820190506121426000830184611a74565b92915050565b600060208201905061215d6000830184611a9a565b92915050565b60006020820190506121786000830184611aa9565b92915050565b60006080820190506121936000830187611aa9565b6121a060208301866120d0565b6121ad6040830185611aa9565b6121ba6060830184611aa9565b95945050505050565b600060208201905081810360008301526121dd8184611acf565b905092915050565b600060208201905081810360008301526121fe81611b08565b9050919050565b6000602082019050818103600083015261221e81611b48565b9050919050565b6000602082019050818103600083015261223e81611bae565b9050919050565b6000602082019050818103600083015261225e81611c14565b9050919050565b6000602082019050818103600083015261227e81611c54565b9050919050565b6000602082019050818103600083015261229e81611cba565b9050919050565b600060208201905081810360008301526122be81611cfa565b9050919050565b600060208201905081810360008301526122de81611d60565b9050919050565b600060208201905081810360008301526122fe81611da0565b9050919050565b6000602082019050818103600083015261231e81611e06565b9050919050565b6000602082019050818103600083015261233e81611e6c565b9050919050565b6000602082019050818103600083015261235e81611ed2565b9050919050565b6000602082019050818103600083015261237e81611f38565b9050919050565b6000602082019050818103600083015261239e81611f9e565b9050919050565b600060208201905081810360008301526123be81612004565b9050919050565b600060208201905081810360008301526123de8161206a565b9050919050565b60006020820190506123fa60008301846120aa565b92915050565b600060208201905061241560008301846120d0565b92915050565b6000604051905081810181811067ffffffffffffffff82111715612442576124416126d4565b5b8060405250919050565b600067ffffffffffffffff821115612467576124666126d4565b5b601f19601f8301169050602081019050919050565b600081519050919050565b600082825260208201905092915050565b60006124a38261256a565b91506124ae8361256a565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156124e3576124e2612676565b5b828201905092915050565b60006124f98261256a565b91506125048361256a565b92508282101561251757612516612676565b5b828203905092915050565b600061252d8261254a565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b82818337600083830152505050565b60005b838110156125ae578082015181840152602081019050612593565b838111156125bd576000848401525b50505050565b600060028204905060018216806125db57607f821691505b602082108114156125ef576125ee6126a5565b5b50919050565b60006126008261256a565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561263357612632612676565b5b600182019050919050565b60006126498261265a565b9050919050565b6000819050919050565b600061266582612714565b9050919050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b60008160601b9050919050565b61272a81612522565b811461273557600080fd5b50565b6127418161256a565b811461274c57600080fd5b5056fea2646970667358221220f83ac47d0b282717b8191dd59aa3750039f9031a25292a1afd881f3f35b7fa3e64736f6c63430008000033000000000000000000000000a1f71176b6f37d55c4d0e55bde02ef5f4c6600ea

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101425760003560e01c806370a08231116100b8578063a9059cbb1161007c578063a9059cbb146103b3578063b02004b2146103e3578063b6b55f2514610413578063ca706bcf1461042f578063dd62ed3e1461045f578063f698da251461048f57610142565b806370a08231146102d557806395d89b4114610305578063a00b716c14610323578063a457c2d714610353578063a85b35811461038357610142565b806318160ddd1161010a57806318160ddd146101eb57806320606b701461020957806323b872dd14610227578063313ce567146102575780633950935114610275578063632db21c146102a557610142565b8063030ba25d1461014757806306fdde0314610163578063095ea7b3146101815780631195e07e146101b15780631327d3d8146101cf575b600080fd5b610161600480360381019061015c9190611a20565b6104ad565b005b61016b610624565b60405161017891906121c3565b60405180910390f35b61019b6004803603810190610196919061196c565b6106b6565b6040516101a89190612148565b60405180910390f35b6101b96106d4565b6040516101c6919061212d565b60405180910390f35b6101e960048036038101906101e491906118b8565b6106fe565b005b6101f36107d9565b60405161020091906123e5565b60405180910390f35b6102116107e3565b60405161021e9190612163565b60405180910390f35b610241600480360381019061023c919061191d565b610807565b60405161024e9190612148565b60405180910390f35b61025f610908565b60405161026c9190612400565b60405180910390f35b61028f600480360381019061028a919061196c565b610911565b60405161029c9190612148565b60405180910390f35b6102bf60048036038101906102ba919061196c565b6109bd565b6040516102cc91906123e5565b60405180910390f35b6102ef60048036038101906102ea91906118b8565b610a1b565b6040516102fc91906123e5565b60405180910390f35b61030d610a64565b60405161031a91906121c3565b60405180910390f35b61033d600480360381019061033891906119a8565b610af6565b60405161034a9190612163565b60405180910390f35b61036d6004803603810190610368919061196c565b610b2f565b60405161037a9190612148565b60405180910390f35b61039d600480360381019061039891906118b8565b610c23565b6040516103aa91906123e5565b60405180910390f35b6103cd60048036038101906103c8919061196c565b610c6f565b6040516103da9190612148565b60405180910390f35b6103fd60048036038101906103f891906118b8565b610c8d565b60405161040a91906123e5565b60405180910390f35b61042d600480360381019061042891906119f7565b610cd9565b005b6104496004803603810190610444919061196c565b610db1565b60405161045691906123e5565b60405180910390f35b610479600480360381019061047491906118e1565b610e0f565b60405161048691906123e5565b60405180910390f35b610497610e96565b6040516104a49190612163565b60405180910390f35b60006104b7610e9c565b905060006104c482610c23565b905060006104d3838387610af6565b90506104dd6106d4565b73ffffffffffffffffffffffffffffffffffffffff166105068583610ea490919063ffffffff16565b73ffffffffffffffffffffffffffffffffffffffff161461055c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161055390612285565b60405180910390fd5b84600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101600084815260200190815260200160002081905550600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000016000815480929190610607906125f5565b919050555061061d610617610e9c565b86610f1e565b5050505050565b606060078054610633906125c3565b80601f016020809104026020016040519081016040528092919081815260200182805461065f906125c3565b80156106ac5780601f10610681576101008083540402835291602001916106ac565b820191906000526020600020905b81548152906001019060200180831161068f57829003601f168201915b5050505050905090565b60006106ca6106c3610e9c565b8484611073565b6001905092915050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661073f610e9c565b73ffffffffffffffffffffffffffffffffffffffff1614610795576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078c906122c5565b60405180910390fd5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600654905090565b7f47e79534a245952e8b16893a336b85a3d9ea9fa8c573f3d803afb92a7946921881565b600061081484848461123e565b6000600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061085f610e9c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156108df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108d690612325565b60405180910390fd5b6108fc856108eb610e9c565b85846108f791906124ee565b611073565b60019150509392505050565b60006012905090565b60006109b361091e610e9c565b84846005600061092c610e9c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546109ae9190612498565b611073565b6001905092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101600083815260200190815260200160002054905092915050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b606060088054610a73906125c3565b80601f0160208091040260200160405190810160405280929190818152602001828054610a9f906125c3565b8015610aec5780601f10610ac157610100808354040283529160200191610aec565b820191906000526020600020905b815481529060010190602001808311610acf57829003601f168201915b5050505050905090565b60008054848484604051602001610b1094939291906120df565b6040516020818303038152906040528051906020012090509392505050565b60008060056000610b3e610e9c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610bfb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bf2906123a5565b60405180910390fd5b610c18610c06610e9c565b858584610c1391906124ee565b611073565b600191505092915050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001549050919050565b6000610c83610c7c610e9c565b848461123e565b6001905092915050565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001549050919050565b6000610ce3610e9c565b9050610cef81836114c0565b6000610cfa82610c8d565b905082600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101600083815260200190815260200160002081905550600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000016000815480929190610da7906125f5565b9190505550505050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101600083815260200190815260200160002054905092915050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60005481565b600033905090565b60006041825114610eea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ee190612245565b60405180910390fd5b60008060006020850151925060408501519150606085015160001a9050610f1386828585611696565b935050505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610f8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f85906123c5565b60405180910390fd5b610f9a60008383611821565b8060066000828254610fac9190612498565b9250508190555080600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546110029190612498565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161106791906123e5565b60405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156110e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110da90612385565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611153576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114a90612265565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161123191906123e5565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156112ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112a590612365565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561131e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131590612205565b60405180910390fd5b611329838383611821565b6000600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156113b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113a7906122a5565b60405180910390fd5b81816113bc91906124ee565b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461144e9190612498565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516114b291906123e5565b60405180910390a350505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611530576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152790612345565b60405180910390fd5b61153c82600083611821565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156115c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ba90612225565b60405180910390fd5b81816115cf91906124ee565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816006600082825461162491906124ee565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161168991906123e5565b60405180910390a3505050565b60007f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08260001c11156116fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116f5906122e5565b60405180910390fd5b601b8460ff1614806117135750601c8460ff16145b611752576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161174990612305565b60405180910390fd5b600060018686868660405160008152602001604052604051611777949392919061217e565b6020604051602081039080840390855afa158015611799573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611815576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180c906121e5565b60405180910390fd5b80915050949350505050565b505050565b60006118396118348461244c565b61241b565b90508281526020810184848401111561185157600080fd5b61185c848285612581565b509392505050565b60008135905061187381612721565b92915050565b600082601f83011261188a57600080fd5b813561189a848260208601611826565b91505092915050565b6000813590506118b281612738565b92915050565b6000602082840312156118ca57600080fd5b60006118d884828501611864565b91505092915050565b600080604083850312156118f457600080fd5b600061190285828601611864565b925050602061191385828601611864565b9150509250929050565b60008060006060848603121561193257600080fd5b600061194086828701611864565b935050602061195186828701611864565b9250506040611962868287016118a3565b9150509250925092565b6000806040838503121561197f57600080fd5b600061198d85828601611864565b925050602061199e858286016118a3565b9150509250929050565b6000806000606084860312156119bd57600080fd5b60006119cb86828701611864565b93505060206119dc868287016118a3565b92505060406119ed868287016118a3565b9150509250925092565b600060208284031215611a0957600080fd5b6000611a17848285016118a3565b91505092915050565b60008060408385031215611a3357600080fd5b6000611a41858286016118a3565b925050602083013567ffffffffffffffff811115611a5e57600080fd5b611a6a85828601611879565b9150509250929050565b611a7d81612522565b82525050565b611a94611a8f82612522565b61263e565b82525050565b611aa381612534565b82525050565b611ab281612540565b82525050565b611ac9611ac482612540565b612650565b82525050565b6000611ada8261247c565b611ae48185612487565b9350611af4818560208601612590565b611afd81612703565b840191505092915050565b6000611b15601883612487565b91507f45434453413a20696e76616c6964207369676e617475726500000000000000006000830152602082019050919050565b6000611b55602383612487565b91507f45524332303a207472616e7366657220746f20746865207a65726f206164647260008301527f65737300000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611bbb602283612487565b91507f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008301527f63650000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611c21601f83612487565b91507f45434453413a20696e76616c6964207369676e6174757265206c656e677468006000830152602082019050919050565b6000611c61602283612487565b91507f45524332303a20617070726f766520746f20746865207a65726f20616464726560008301527f73730000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611cc7601c83612487565b91507f4272696467653a20496e76616c6964207472616e73616374696f6e2e000000006000830152602082019050919050565b6000611d07602683612487565b91507f45524332303a207472616e7366657220616d6f756e742065786365656473206260008301527f616c616e636500000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611d6d600e83612487565b91507f56616c696461746f72207775743f0000000000000000000000000000000000006000830152602082019050919050565b6000611dad602283612487565b91507f45434453413a20696e76616c6964207369676e6174757265202773272076616c60008301527f75650000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611e13602283612487565b91507f45434453413a20696e76616c6964207369676e6174757265202776272076616c60008301527f75650000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611e79602883612487565b91507f45524332303a207472616e7366657220616d6f756e742065786365656473206160008301527f6c6c6f77616e63650000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611edf602183612487565b91507f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008301527f73000000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611f45602583612487565b91507f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008301527f64726573730000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611fab602483612487565b91507f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008301527f72657373000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612011602583612487565b91507f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008301527f207a65726f0000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612077601f83612487565b91507f45524332303a206d696e7420746f20746865207a65726f2061646472657373006000830152602082019050919050565b6120b38161256a565b82525050565b6120ca6120c58261256a565b61266c565b82525050565b6120d981612574565b82525050565b60006120eb8287611ab8565b6020820191506120fb8286611a83565b60148201915061210b82856120b9565b60208201915061211b82846120b9565b60208201915081905095945050505050565b60006020820190506121426000830184611a74565b92915050565b600060208201905061215d6000830184611a9a565b92915050565b60006020820190506121786000830184611aa9565b92915050565b60006080820190506121936000830187611aa9565b6121a060208301866120d0565b6121ad6040830185611aa9565b6121ba6060830184611aa9565b95945050505050565b600060208201905081810360008301526121dd8184611acf565b905092915050565b600060208201905081810360008301526121fe81611b08565b9050919050565b6000602082019050818103600083015261221e81611b48565b9050919050565b6000602082019050818103600083015261223e81611bae565b9050919050565b6000602082019050818103600083015261225e81611c14565b9050919050565b6000602082019050818103600083015261227e81611c54565b9050919050565b6000602082019050818103600083015261229e81611cba565b9050919050565b600060208201905081810360008301526122be81611cfa565b9050919050565b600060208201905081810360008301526122de81611d60565b9050919050565b600060208201905081810360008301526122fe81611da0565b9050919050565b6000602082019050818103600083015261231e81611e06565b9050919050565b6000602082019050818103600083015261233e81611e6c565b9050919050565b6000602082019050818103600083015261235e81611ed2565b9050919050565b6000602082019050818103600083015261237e81611f38565b9050919050565b6000602082019050818103600083015261239e81611f9e565b9050919050565b600060208201905081810360008301526123be81612004565b9050919050565b600060208201905081810360008301526123de8161206a565b9050919050565b60006020820190506123fa60008301846120aa565b92915050565b600060208201905061241560008301846120d0565b92915050565b6000604051905081810181811067ffffffffffffffff82111715612442576124416126d4565b5b8060405250919050565b600067ffffffffffffffff821115612467576124666126d4565b5b601f19601f8301169050602081019050919050565b600081519050919050565b600082825260208201905092915050565b60006124a38261256a565b91506124ae8361256a565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156124e3576124e2612676565b5b828201905092915050565b60006124f98261256a565b91506125048361256a565b92508282101561251757612516612676565b5b828203905092915050565b600061252d8261254a565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b82818337600083830152505050565b60005b838110156125ae578082015181840152602081019050612593565b838111156125bd576000848401525b50505050565b600060028204905060018216806125db57607f821691505b602082108114156125ef576125ee6126a5565b5b50919050565b60006126008261256a565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561263357612632612676565b5b600182019050919050565b60006126498261265a565b9050919050565b6000819050919050565b600061266582612714565b9050919050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b60008160601b9050919050565b61272a81612522565b811461273557600080fd5b50565b6127418161256a565b811461274c57600080fd5b5056fea2646970667358221220f83ac47d0b282717b8191dd59aa3750039f9031a25292a1afd881f3f35b7fa3e64736f6c63430008000033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

000000000000000000000000a1f71176b6f37d55c4d0e55bde02ef5f4c6600ea

-----Decoded View---------------
Arg [0] : validator (address): 0xa1f71176b6F37d55c4d0E55bde02eF5f4C6600ea

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000a1f71176b6f37d55c4d0e55bde02ef5f4c6600ea


Deployed Bytecode Sourcemap

8836:7521:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15697:471;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9761:91;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11648:210;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11165:90;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11263:153;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10055:108;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9010:119;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11866:493;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9963:84;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12367:297;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10809:169;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10171:177;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9860:95;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15178:246;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12672:446;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10565:113;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11424:216;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10686:115;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15432:257;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10986:171;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10356:201;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9138:109;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15697:471;15781:12;15796;:10;:12::i;:::-;15781:27;;15819:13;15835:16;15846:4;15835:10;:16::i;:::-;15819:32;;15862:12;15877:28;15885:4;15891:5;15898:6;15877:7;:28::i;:::-;15862:43;;15965:14;:12;:14::i;:::-;15938:41;;:23;15951:9;15938:4;:12;;:23;;;;:::i;:::-;:41;;;15916:119;;;;;;;;;;;;:::i;:::-;;;;;;;;;16080:6;16046:11;:17;16058:4;16046:17;;;;;;;;;;;;;;;:24;;:31;16071:5;16046:31;;;;;;;;;;;:40;;;;16097:11;:17;16109:4;16097:17;;;;;;;;;;;;;;;:23;;;:25;;;;;;;;;:::i;:::-;;;;;;16133:27;16139:12;:10;:12::i;:::-;16153:6;16133:5;:27::i;:::-;15697:471;;;;;:::o;9761:91::-;9806:13;9839:5;9832:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9761:91;:::o;11648:210::-;11767:4;11789:39;11798:12;:10;:12::i;:::-;11812:7;11821:6;11789:8;:39::i;:::-;11846:4;11839:11;;11648:210;;;;:::o;11165:90::-;11210:7;11237:10;;;;;;;;;;;11230:17;;11165:90;:::o;11263:153::-;11346:10;;;;;;;;;;;11330:26;;:12;:10;:12::i;:::-;:26;;;11322:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;11399:9;11386:10;;:22;;;;;;;;;;;;;;;;;;11263:153;:::o;10055:108::-;10116:7;10143:12;;10136:19;;10055:108;:::o;9010:119::-;9061:68;9010:119;:::o;11866:493::-;12006:4;12023:36;12033:6;12041:9;12052:6;12023:9;:36::i;:::-;12072:24;12099:11;:19;12111:6;12099:19;;;;;;;;;;;;;;;:33;12119:12;:10;:12::i;:::-;12099:33;;;;;;;;;;;;;;;;12072:60;;12185:6;12165:16;:26;;12143:116;;;;;;;;;;;;:::i;:::-;;;;;;;;;12270:57;12279:6;12287:12;:10;:12::i;:::-;12320:6;12301:16;:25;;;;:::i;:::-;12270:8;:57::i;:::-;12347:4;12340:11;;;11866:493;;;;;:::o;9963:84::-;10012:5;10037:2;10030:9;;9963:84;:::o;12367:297::-;12482:4;12504:130;12527:12;:10;:12::i;:::-;12554:7;12613:10;12576:11;:25;12588:12;:10;:12::i;:::-;12576:25;;;;;;;;;;;;;;;:34;12602:7;12576:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;12504:8;:130::i;:::-;12652:4;12645:11;;12367:297;;;;:::o;10809:169::-;10907:7;10939:11;:17;10951:4;10939:17;;;;;;;;;;;;;;;:24;;:31;10964:5;10939:31;;;;;;;;;;;;10932:38;;10809:169;;;;:::o;10171:177::-;10290:7;10322:9;:18;10332:7;10322:18;;;;;;;;;;;;;;;;10315:25;;10171:177;;;:::o;9860:95::-;9907:13;9940:7;9933:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9860:95;:::o;15178:246::-;15295:12;15368:15;;15385:4;15391:5;15398:6;15351:54;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;15327:89;;;;;;15320:96;;15178:246;;;;;:::o;12672:446::-;12792:4;12814:24;12841:11;:25;12853:12;:10;:12::i;:::-;12841:25;;;;;;;;;;;;;;;:34;12867:7;12841:34;;;;;;;;;;;;;;;;12814:61;;12928:15;12908:16;:35;;12886:122;;;;;;;;;;;;:::i;:::-;;;;;;;;;13019:67;13028:12;:10;:12::i;:::-;13042:7;13070:15;13051:16;:34;;;;:::i;:::-;13019:8;:67::i;:::-;13106:4;13099:11;;;12672:446;;;;:::o;10565:113::-;10620:7;10647:11;:17;10659:4;10647:17;;;;;;;;;;;;;;;:23;;;10640:30;;10565:113;;;:::o;11424:216::-;11546:4;11568:42;11578:12;:10;:12::i;:::-;11592:9;11603:6;11568:9;:42::i;:::-;11628:4;11621:11;;11424:216;;;;:::o;10686:115::-;10742:7;10769:12;:18;10782:4;10769:18;;;;;;;;;;;;;;;:24;;;10762:31;;10686:115;;;:::o;15432:257::-;15491:12;15506;:10;:12::i;:::-;15491:27;;15529:19;15535:4;15541:6;15529:5;:19::i;:::-;15559:13;15575:17;15587:4;15575:11;:17::i;:::-;15559:33;;15638:6;15603:12;:18;15616:4;15603:18;;;;;;;;;;;;;;;:25;;:32;15629:5;15603:32;;;;;;;;;;;:41;;;;15655:12;:18;15668:4;15655:18;;;;;;;;;;;;;;;:24;;;:26;;;;;;;;;:::i;:::-;;;;;;15432:257;;;:::o;10986:171::-;11085:7;11117:12;:18;11130:4;11117:18;;;;;;;;;;;;;;;:25;;:32;11143:5;11117:32;;;;;;;;;;;;11110:39;;10986:171;;;;:::o;10356:201::-;10490:7;10522:11;:18;10534:5;10522:18;;;;;;;;;;;;;;;:27;10541:7;10522:27;;;;;;;;;;;;;;;;10515:34;;10356:201;;;;:::o;9138:109::-;;;;:::o;3567:98::-;3620:7;3647:10;3640:17;;3567:98;:::o;5034:793::-;5139:7;5227:2;5207:9;:16;:22;5203:96;;5246:41;;;;;;;;;;:::i;:::-;;;;;;;;5203:96;5368:9;5388;5408:7;5660:4;5649:9;5645:20;5639:27;5634:32;;5706:4;5695:9;5691:20;5685:27;5680:32;;5760:4;5749:9;5745:20;5739:27;5736:1;5731:36;5726:41;;5797:22;5805:4;5811:1;5814;5817;5797:7;:22::i;:::-;5790:29;;;;;5034:793;;;;:::o;13809:338::-;13912:1;13893:21;;:7;:21;;;;13885:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;13963:49;13992:1;13996:7;14005:6;13963:20;:49::i;:::-;14041:6;14025:12;;:22;;;;;;;:::i;:::-;;;;;;;;14080:6;14058:9;:18;14068:7;14058:18;;;;;;;;;;;;;;;;:28;;;;;;;:::i;:::-;;;;;;;;14123:7;14102:37;;14119:1;14102:37;;;14132:6;14102:37;;;;;;:::i;:::-;;;;;;;;13809:338;;:::o;14657:380::-;14810:1;14793:19;;:5;:19;;;;14785:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14891:1;14872:21;;:7;:21;;;;14864:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14975:6;14945:11;:18;14957:5;14945:18;;;;;;;;;;;;;;;:27;14964:7;14945:27;;;;;;;;;;;;;;;:36;;;;15013:7;14997:32;;15006:5;14997:32;;;15022:6;14997:32;;;;;;:::i;:::-;;;;;;;;14657:380;;;:::o;13126:675::-;13284:1;13266:20;;:6;:20;;;;13258:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;13368:1;13347:23;;:9;:23;;;;13339:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;13423:47;13444:6;13452:9;13463:6;13423:20;:47::i;:::-;13483:21;13507:9;:17;13517:6;13507:17;;;;;;;;;;;;;;;;13483:41;;13574:6;13557:13;:23;;13535:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;13693:6;13677:13;:22;;;;:::i;:::-;13657:9;:17;13667:6;13657:17;;;;;;;;;;;;;;;:42;;;;13734:6;13710:9;:20;13720:9;13710:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;13775:9;13758:35;;13767:6;13758:35;;;13786:6;13758:35;;;;;;:::i;:::-;;;;;;;;13126:675;;;;:::o;14155:494::-;14258:1;14239:21;;:7;:21;;;;14231:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14311:49;14332:7;14349:1;14353:6;14311:20;:49::i;:::-;14373:22;14398:9;:18;14408:7;14398:18;;;;;;;;;;;;;;;;14373:43;;14453:6;14435:14;:24;;14427:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;14547:6;14530:14;:23;;;;:::i;:::-;14509:9;:18;14519:7;14509:18;;;;;;;;;;;;;;;:44;;;;14580:6;14564:12;;:22;;;;;;;:::i;:::-;;;;;;;;14630:1;14604:37;;14613:7;14604:37;;;14634:6;14604:37;;;;;;:::i;:::-;;;;;;;;14155:494;;;:::o;5966:1529::-;6094:7;7050:66;7027:1;7019:10;;:97;;6997:181;;;;;;;;;;;;:::i;:::-;;;;;;;;;7202:2;7197:1;:7;;;:18;;;;7213:2;7208:1;:7;;;7197:18;7189:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;7352:14;7369:24;7379:4;7385:1;7388;7391;7369:24;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7352:41;;7430:1;7412:20;;:6;:20;;;;7404:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;7481:6;7474:13;;;5966:1529;;;;;;:::o;15045:125::-;;;;:::o;7:342:1:-;;109:64;124:48;165:6;124:48;:::i;:::-;109:64;:::i;:::-;100:73;;196:6;189:5;182:21;234:4;227:5;223:16;272:3;263:6;258:3;254:16;251:25;248:2;;;289:1;286;279:12;248:2;302:41;336:6;331:3;326;302:41;:::i;:::-;90:259;;;;;;:::o;355:139::-;;439:6;426:20;417:29;;455:33;482:5;455:33;:::i;:::-;407:87;;;;:::o;513:271::-;;617:3;610:4;602:6;598:17;594:27;584:2;;635:1;632;625:12;584:2;675:6;662:20;700:78;774:3;766:6;759:4;751:6;747:17;700:78;:::i;:::-;691:87;;574:210;;;;;:::o;790:139::-;;874:6;861:20;852:29;;890:33;917:5;890:33;:::i;:::-;842:87;;;;:::o;935:262::-;;1043:2;1031:9;1022:7;1018:23;1014:32;1011:2;;;1059:1;1056;1049:12;1011:2;1102:1;1127:53;1172:7;1163:6;1152:9;1148:22;1127:53;:::i;:::-;1117:63;;1073:117;1001:196;;;;:::o;1203:407::-;;;1328:2;1316:9;1307:7;1303:23;1299:32;1296:2;;;1344:1;1341;1334:12;1296:2;1387:1;1412:53;1457:7;1448:6;1437:9;1433:22;1412:53;:::i;:::-;1402:63;;1358:117;1514:2;1540:53;1585:7;1576:6;1565:9;1561:22;1540:53;:::i;:::-;1530:63;;1485:118;1286:324;;;;;:::o;1616:552::-;;;;1758:2;1746:9;1737:7;1733:23;1729:32;1726:2;;;1774:1;1771;1764:12;1726:2;1817:1;1842:53;1887:7;1878:6;1867:9;1863:22;1842:53;:::i;:::-;1832:63;;1788:117;1944:2;1970:53;2015:7;2006:6;1995:9;1991:22;1970:53;:::i;:::-;1960:63;;1915:118;2072:2;2098:53;2143:7;2134:6;2123:9;2119:22;2098:53;:::i;:::-;2088:63;;2043:118;1716:452;;;;;:::o;2174:407::-;;;2299:2;2287:9;2278:7;2274:23;2270:32;2267:2;;;2315:1;2312;2305:12;2267:2;2358:1;2383:53;2428:7;2419:6;2408:9;2404:22;2383:53;:::i;:::-;2373:63;;2329:117;2485:2;2511:53;2556:7;2547:6;2536:9;2532:22;2511:53;:::i;:::-;2501:63;;2456:118;2257:324;;;;;:::o;2587:552::-;;;;2729:2;2717:9;2708:7;2704:23;2700:32;2697:2;;;2745:1;2742;2735:12;2697:2;2788:1;2813:53;2858:7;2849:6;2838:9;2834:22;2813:53;:::i;:::-;2803:63;;2759:117;2915:2;2941:53;2986:7;2977:6;2966:9;2962:22;2941:53;:::i;:::-;2931:63;;2886:118;3043:2;3069:53;3114:7;3105:6;3094:9;3090:22;3069:53;:::i;:::-;3059:63;;3014:118;2687:452;;;;;:::o;3145:262::-;;3253:2;3241:9;3232:7;3228:23;3224:32;3221:2;;;3269:1;3266;3259:12;3221:2;3312:1;3337:53;3382:7;3373:6;3362:9;3358:22;3337:53;:::i;:::-;3327:63;;3283:117;3211:196;;;;:::o;3413:518::-;;;3547:2;3535:9;3526:7;3522:23;3518:32;3515:2;;;3563:1;3560;3553:12;3515:2;3606:1;3631:53;3676:7;3667:6;3656:9;3652:22;3631:53;:::i;:::-;3621:63;;3577:117;3761:2;3750:9;3746:18;3733:32;3792:18;3784:6;3781:30;3778:2;;;3824:1;3821;3814:12;3778:2;3852:62;3906:7;3897:6;3886:9;3882:22;3852:62;:::i;:::-;3842:72;;3704:220;3505:426;;;;;:::o;3937:118::-;4024:24;4042:5;4024:24;:::i;:::-;4019:3;4012:37;4002:53;;:::o;4061:157::-;4166:45;4186:24;4204:5;4186:24;:::i;:::-;4166:45;:::i;:::-;4161:3;4154:58;4144:74;;:::o;4224:109::-;4305:21;4320:5;4305:21;:::i;:::-;4300:3;4293:34;4283:50;;:::o;4339:118::-;4426:24;4444:5;4426:24;:::i;:::-;4421:3;4414:37;4404:53;;:::o;4463:157::-;4568:45;4588:24;4606:5;4588:24;:::i;:::-;4568:45;:::i;:::-;4563:3;4556:58;4546:74;;:::o;4626:364::-;;4742:39;4775:5;4742:39;:::i;:::-;4797:71;4861:6;4856:3;4797:71;:::i;:::-;4790:78;;4877:52;4922:6;4917:3;4910:4;4903:5;4899:16;4877:52;:::i;:::-;4954:29;4976:6;4954:29;:::i;:::-;4949:3;4945:39;4938:46;;4718:272;;;;;:::o;4996:322::-;;5159:67;5223:2;5218:3;5159:67;:::i;:::-;5152:74;;5256:26;5252:1;5247:3;5243:11;5236:47;5309:2;5304:3;5300:12;5293:19;;5142:176;;;:::o;5324:367::-;;5487:67;5551:2;5546:3;5487:67;:::i;:::-;5480:74;;5584:34;5580:1;5575:3;5571:11;5564:55;5650:5;5645:2;5640:3;5636:12;5629:27;5682:2;5677:3;5673:12;5666:19;;5470:221;;;:::o;5697:366::-;;5860:67;5924:2;5919:3;5860:67;:::i;:::-;5853:74;;5957:34;5953:1;5948:3;5944:11;5937:55;6023:4;6018:2;6013:3;6009:12;6002:26;6054:2;6049:3;6045:12;6038:19;;5843:220;;;:::o;6069:329::-;;6232:67;6296:2;6291:3;6232:67;:::i;:::-;6225:74;;6329:33;6325:1;6320:3;6316:11;6309:54;6389:2;6384:3;6380:12;6373:19;;6215:183;;;:::o;6404:366::-;;6567:67;6631:2;6626:3;6567:67;:::i;:::-;6560:74;;6664:34;6660:1;6655:3;6651:11;6644:55;6730:4;6725:2;6720:3;6716:12;6709:26;6761:2;6756:3;6752:12;6745:19;;6550:220;;;:::o;6776:326::-;;6939:67;7003:2;6998:3;6939:67;:::i;:::-;6932:74;;7036:30;7032:1;7027:3;7023:11;7016:51;7093:2;7088:3;7084:12;7077:19;;6922:180;;;:::o;7108:370::-;;7271:67;7335:2;7330:3;7271:67;:::i;:::-;7264:74;;7368:34;7364:1;7359:3;7355:11;7348:55;7434:8;7429:2;7424:3;7420:12;7413:30;7469:2;7464:3;7460:12;7453:19;;7254:224;;;:::o;7484:312::-;;7647:67;7711:2;7706:3;7647:67;:::i;:::-;7640:74;;7744:16;7740:1;7735:3;7731:11;7724:37;7787:2;7782:3;7778:12;7771:19;;7630:166;;;:::o;7802:366::-;;7965:67;8029:2;8024:3;7965:67;:::i;:::-;7958:74;;8062:34;8058:1;8053:3;8049:11;8042:55;8128:4;8123:2;8118:3;8114:12;8107:26;8159:2;8154:3;8150:12;8143:19;;7948:220;;;:::o;8174:366::-;;8337:67;8401:2;8396:3;8337:67;:::i;:::-;8330:74;;8434:34;8430:1;8425:3;8421:11;8414:55;8500:4;8495:2;8490:3;8486:12;8479:26;8531:2;8526:3;8522:12;8515:19;;8320:220;;;:::o;8546:372::-;;8709:67;8773:2;8768:3;8709:67;:::i;:::-;8702:74;;8806:34;8802:1;8797:3;8793:11;8786:55;8872:10;8867:2;8862:3;8858:12;8851:32;8909:2;8904:3;8900:12;8893:19;;8692:226;;;:::o;8924:365::-;;9087:67;9151:2;9146:3;9087:67;:::i;:::-;9080:74;;9184:34;9180:1;9175:3;9171:11;9164:55;9250:3;9245:2;9240:3;9236:12;9229:25;9280:2;9275:3;9271:12;9264:19;;9070:219;;;:::o;9295:369::-;;9458:67;9522:2;9517:3;9458:67;:::i;:::-;9451:74;;9555:34;9551:1;9546:3;9542:11;9535:55;9621:7;9616:2;9611:3;9607:12;9600:29;9655:2;9650:3;9646:12;9639:19;;9441:223;;;:::o;9670:368::-;;9833:67;9897:2;9892:3;9833:67;:::i;:::-;9826:74;;9930:34;9926:1;9921:3;9917:11;9910:55;9996:6;9991:2;9986:3;9982:12;9975:28;10029:2;10024:3;10020:12;10013:19;;9816:222;;;:::o;10044:369::-;;10207:67;10271:2;10266:3;10207:67;:::i;:::-;10200:74;;10304:34;10300:1;10295:3;10291:11;10284:55;10370:7;10365:2;10360:3;10356:12;10349:29;10404:2;10399:3;10395:12;10388:19;;10190:223;;;:::o;10419:329::-;;10582:67;10646:2;10641:3;10582:67;:::i;:::-;10575:74;;10679:33;10675:1;10670:3;10666:11;10659:54;10739:2;10734:3;10730:12;10723:19;;10565:183;;;:::o;10754:118::-;10841:24;10859:5;10841:24;:::i;:::-;10836:3;10829:37;10819:53;;:::o;10878:157::-;10983:45;11003:24;11021:5;11003:24;:::i;:::-;10983:45;:::i;:::-;10978:3;10971:58;10961:74;;:::o;11041:112::-;11124:22;11140:5;11124:22;:::i;:::-;11119:3;11112:35;11102:51;;:::o;11159:679::-;;11370:75;11441:3;11432:6;11370:75;:::i;:::-;11470:2;11465:3;11461:12;11454:19;;11483:75;11554:3;11545:6;11483:75;:::i;:::-;11583:2;11578:3;11574:12;11567:19;;11596:75;11667:3;11658:6;11596:75;:::i;:::-;11696:2;11691:3;11687:12;11680:19;;11709:75;11780:3;11771:6;11709:75;:::i;:::-;11809:2;11804:3;11800:12;11793:19;;11829:3;11822:10;;11359:479;;;;;;;:::o;11844:222::-;;11975:2;11964:9;11960:18;11952:26;;11988:71;12056:1;12045:9;12041:17;12032:6;11988:71;:::i;:::-;11942:124;;;;:::o;12072:210::-;;12197:2;12186:9;12182:18;12174:26;;12210:65;12272:1;12261:9;12257:17;12248:6;12210:65;:::i;:::-;12164:118;;;;:::o;12288:222::-;;12419:2;12408:9;12404:18;12396:26;;12432:71;12500:1;12489:9;12485:17;12476:6;12432:71;:::i;:::-;12386:124;;;;:::o;12516:545::-;;12727:3;12716:9;12712:19;12704:27;;12741:71;12809:1;12798:9;12794:17;12785:6;12741:71;:::i;:::-;12822:68;12886:2;12875:9;12871:18;12862:6;12822:68;:::i;:::-;12900:72;12968:2;12957:9;12953:18;12944:6;12900:72;:::i;:::-;12982;13050:2;13039:9;13035:18;13026:6;12982:72;:::i;:::-;12694:367;;;;;;;:::o;13067:313::-;;13218:2;13207:9;13203:18;13195:26;;13267:9;13261:4;13257:20;13253:1;13242:9;13238:17;13231:47;13295:78;13368:4;13359:6;13295:78;:::i;:::-;13287:86;;13185:195;;;;:::o;13386:419::-;;13590:2;13579:9;13575:18;13567:26;;13639:9;13633:4;13629:20;13625:1;13614:9;13610:17;13603:47;13667:131;13793:4;13667:131;:::i;:::-;13659:139;;13557:248;;;:::o;13811:419::-;;14015:2;14004:9;14000:18;13992:26;;14064:9;14058:4;14054:20;14050:1;14039:9;14035:17;14028:47;14092:131;14218:4;14092:131;:::i;:::-;14084:139;;13982:248;;;:::o;14236:419::-;;14440:2;14429:9;14425:18;14417:26;;14489:9;14483:4;14479:20;14475:1;14464:9;14460:17;14453:47;14517:131;14643:4;14517:131;:::i;:::-;14509:139;;14407:248;;;:::o;14661:419::-;;14865:2;14854:9;14850:18;14842:26;;14914:9;14908:4;14904:20;14900:1;14889:9;14885:17;14878:47;14942:131;15068:4;14942:131;:::i;:::-;14934:139;;14832:248;;;:::o;15086:419::-;;15290:2;15279:9;15275:18;15267:26;;15339:9;15333:4;15329:20;15325:1;15314:9;15310:17;15303:47;15367:131;15493:4;15367:131;:::i;:::-;15359:139;;15257:248;;;:::o;15511:419::-;;15715:2;15704:9;15700:18;15692:26;;15764:9;15758:4;15754:20;15750:1;15739:9;15735:17;15728:47;15792:131;15918:4;15792:131;:::i;:::-;15784:139;;15682:248;;;:::o;15936:419::-;;16140:2;16129:9;16125:18;16117:26;;16189:9;16183:4;16179:20;16175:1;16164:9;16160:17;16153:47;16217:131;16343:4;16217:131;:::i;:::-;16209:139;;16107:248;;;:::o;16361:419::-;;16565:2;16554:9;16550:18;16542:26;;16614:9;16608:4;16604:20;16600:1;16589:9;16585:17;16578:47;16642:131;16768:4;16642:131;:::i;:::-;16634:139;;16532:248;;;:::o;16786:419::-;;16990:2;16979:9;16975:18;16967:26;;17039:9;17033:4;17029:20;17025:1;17014:9;17010:17;17003:47;17067:131;17193:4;17067:131;:::i;:::-;17059:139;;16957:248;;;:::o;17211:419::-;;17415:2;17404:9;17400:18;17392:26;;17464:9;17458:4;17454:20;17450:1;17439:9;17435:17;17428:47;17492:131;17618:4;17492:131;:::i;:::-;17484:139;;17382:248;;;:::o;17636:419::-;;17840:2;17829:9;17825:18;17817:26;;17889:9;17883:4;17879:20;17875:1;17864:9;17860:17;17853:47;17917:131;18043:4;17917:131;:::i;:::-;17909:139;;17807:248;;;:::o;18061:419::-;;18265:2;18254:9;18250:18;18242:26;;18314:9;18308:4;18304:20;18300:1;18289:9;18285:17;18278:47;18342:131;18468:4;18342:131;:::i;:::-;18334:139;;18232:248;;;:::o;18486:419::-;;18690:2;18679:9;18675:18;18667:26;;18739:9;18733:4;18729:20;18725:1;18714:9;18710:17;18703:47;18767:131;18893:4;18767:131;:::i;:::-;18759:139;;18657:248;;;:::o;18911:419::-;;19115:2;19104:9;19100:18;19092:26;;19164:9;19158:4;19154:20;19150:1;19139:9;19135:17;19128:47;19192:131;19318:4;19192:131;:::i;:::-;19184:139;;19082:248;;;:::o;19336:419::-;;19540:2;19529:9;19525:18;19517:26;;19589:9;19583:4;19579:20;19575:1;19564:9;19560:17;19553:47;19617:131;19743:4;19617:131;:::i;:::-;19609:139;;19507:248;;;:::o;19761:419::-;;19965:2;19954:9;19950:18;19942:26;;20014:9;20008:4;20004:20;20000:1;19989:9;19985:17;19978:47;20042:131;20168:4;20042:131;:::i;:::-;20034:139;;19932:248;;;:::o;20186:222::-;;20317:2;20306:9;20302:18;20294:26;;20330:71;20398:1;20387:9;20383:17;20374:6;20330:71;:::i;:::-;20284:124;;;;:::o;20414:214::-;;20541:2;20530:9;20526:18;20518:26;;20554:67;20618:1;20607:9;20603:17;20594:6;20554:67;:::i;:::-;20508:120;;;;:::o;20634:283::-;;20700:2;20694:9;20684:19;;20742:4;20734:6;20730:17;20849:6;20837:10;20834:22;20813:18;20801:10;20798:34;20795:62;20792:2;;;20860:18;;:::i;:::-;20792:2;20900:10;20896:2;20889:22;20674:243;;;;:::o;20923:331::-;;21074:18;21066:6;21063:30;21060:2;;;21096:18;;:::i;:::-;21060:2;21181:4;21177:9;21170:4;21162:6;21158:17;21154:33;21146:41;;21242:4;21236;21232:15;21224:23;;20989:265;;;:::o;21260:99::-;;21346:5;21340:12;21330:22;;21319:40;;;:::o;21365:169::-;;21483:6;21478:3;21471:19;21523:4;21518:3;21514:14;21499:29;;21461:73;;;;:::o;21540:305::-;;21599:20;21617:1;21599:20;:::i;:::-;21594:25;;21633:20;21651:1;21633:20;:::i;:::-;21628:25;;21787:1;21719:66;21715:74;21712:1;21709:81;21706:2;;;21793:18;;:::i;:::-;21706:2;21837:1;21834;21830:9;21823:16;;21584:261;;;;:::o;21851:191::-;;21911:20;21929:1;21911:20;:::i;:::-;21906:25;;21945:20;21963:1;21945:20;:::i;:::-;21940:25;;21984:1;21981;21978:8;21975:2;;;21989:18;;:::i;:::-;21975:2;22034:1;22031;22027:9;22019:17;;21896:146;;;;:::o;22048:96::-;;22114:24;22132:5;22114:24;:::i;:::-;22103:35;;22093:51;;;:::o;22150:90::-;;22227:5;22220:13;22213:21;22202:32;;22192:48;;;:::o;22246:77::-;;22312:5;22301:16;;22291:32;;;:::o;22329:126::-;;22406:42;22399:5;22395:54;22384:65;;22374:81;;;:::o;22461:77::-;;22527:5;22516:16;;22506:32;;;:::o;22544:86::-;;22619:4;22612:5;22608:16;22597:27;;22587:43;;;:::o;22636:154::-;22720:6;22715:3;22710;22697:30;22782:1;22773:6;22768:3;22764:16;22757:27;22687:103;;;:::o;22796:307::-;22864:1;22874:113;22888:6;22885:1;22882:13;22874:113;;;22973:1;22968:3;22964:11;22958:18;22954:1;22949:3;22945:11;22938:39;22910:2;22907:1;22903:10;22898:15;;22874:113;;;23005:6;23002:1;22999:13;22996:2;;;23085:1;23076:6;23071:3;23067:16;23060:27;22996:2;22845:258;;;;:::o;23109:320::-;;23190:1;23184:4;23180:12;23170:22;;23237:1;23231:4;23227:12;23258:18;23248:2;;23314:4;23306:6;23302:17;23292:27;;23248:2;23376;23368:6;23365:14;23345:18;23342:38;23339:2;;;23395:18;;:::i;:::-;23339:2;23160:269;;;;:::o;23435:233::-;;23497:24;23515:5;23497:24;:::i;:::-;23488:33;;23543:66;23536:5;23533:77;23530:2;;;23613:18;;:::i;:::-;23530:2;23660:1;23653:5;23649:13;23642:20;;23478:190;;;:::o;23674:100::-;;23742:26;23762:5;23742:26;:::i;:::-;23731:37;;23721:53;;;:::o;23780:79::-;;23848:5;23837:16;;23827:32;;;:::o;23865:94::-;;23933:20;23947:5;23933:20;:::i;:::-;23922:31;;23912:47;;;:::o;23965:79::-;;24033:5;24022:16;;24012:32;;;:::o;24050:180::-;24098:77;24095:1;24088:88;24195:4;24192:1;24185:15;24219:4;24216:1;24209:15;24236:180;24284:77;24281:1;24274:88;24381:4;24378:1;24371:15;24405:4;24402:1;24395:15;24422:180;24470:77;24467:1;24460:88;24567:4;24564:1;24557:15;24591:4;24588:1;24581:15;24608:102;;24700:2;24696:7;24691:2;24684:5;24680:14;24676:28;24666:38;;24656:54;;;:::o;24716:94::-;;24797:5;24793:2;24789:14;24768:35;;24758:52;;;:::o;24816:122::-;24889:24;24907:5;24889:24;:::i;:::-;24882:5;24879:35;24869:2;;24928:1;24925;24918:12;24869:2;24859:79;:::o;24944:122::-;25017:24;25035:5;25017:24;:::i;:::-;25010:5;25007:35;24997:2;;25056:1;25053;25046:12;24997:2;24987:79;:::o

Swarm Source

ipfs://f83ac47d0b282717b8191dd59aa3750039f9031a25292a1afd881f3f35b7fa3e

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

Validator Index Block Amount
View All Withdrawals

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

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