Contract 0xBF79cE2fbd819e5aBC2327563D02a200255B7Cb3

 
Txn Hash
Block
From
To
Value [Txn Fee]
0x990fc36829d10735b90c1f58bed031d337c6f1644836944e4f5e5cc69118820a173813562021-07-29 5:35:3818 mins ago0xe79d5626e9a5e03b0c2ecaa9cf8358e5e0b8ab5d IN  0xbf79ce2fbd819e5abc2327563d02a200255b7cb30 MATIC0.00081805
0xf820283de0818986cde206496084b4675ac1ea148051ae026e5fd4a74075f645173813562021-07-29 5:35:3818 mins ago0xa07deb713e37e7b0869ea76789a58f9bd56b6281 IN  0xbf79ce2fbd819e5abc2327563d02a200255b7cb30 MATIC0.001232025
0xf18d25a55e4954b179c7a26cd826495d48fda59554a3033022e48b4c58e26406173812952021-07-29 5:30:3223 mins ago0x26d3e414ccbcd8fa40c8c82af666b86053fc0b51 IN  0xbf79ce2fbd819e5abc2327563d02a200255b7cb30 MATIC0.002584525
0x0c5fc5c87e940eb48529bf680dab4d5e021aa3b1d549eeb7fbecbf3e810e9fa4173809872021-07-29 5:19:5434 mins ago0xa2d31a0a310a692311164ab431f0946a5a927e41 IN  0xbf79ce2fbd819e5abc2327563d02a200255b7cb30 MATIC0.001232025
0x5cfa276d54d6f1bde5f00bab0ca92de4bd7721db32244b3405265b9f4bdf19ac173808772021-07-29 5:12:5041 mins ago0xedc074cfb71c919229a5651b58c7a7994386754b IN  0xbf79ce2fbd819e5abc2327563d02a200255b7cb30 MATIC0.00081805
0xffe3036f7d4cc4e77d7ba163073ca9051b4e4e7507794617a333f6560f9ec736173808772021-07-29 5:12:5041 mins ago0x4ac330c36b93ce39a10e2e99effcb958f39f2b66 IN  0xbf79ce2fbd819e5abc2327563d02a200255b7cb30 MATIC0.002584525
0x6544173b1381cd0ef858e23b7878431341240e858c4aedf67a676e7a5014b6a8173803272021-07-29 4:48:421 hr 5 mins ago0xe5c3b9830a5a46847516c6b501f22d7510448636 IN  0xbf79ce2fbd819e5abc2327563d02a200255b7cb30 MATIC0.01232025
0x05dd590183f9b2fb55d9023eb7c6029a9a897d64a3f9aee3bc2f8dea41de2911173800772021-07-29 4:40:061 hr 14 mins ago0x7f2abce71df246ea6235a4222b2a9ea01c9e951b IN  0xbf79ce2fbd819e5abc2327563d02a200255b7cb30 MATIC0.006160125
0xc3d778d22dbde88dde5727f00488d22b158d2c71a7ca21dd970ab897b1fcf75a173800222021-07-29 4:38:121 hr 15 mins ago0x23e5ff89798700a37911ab2f303ec0c49642976a IN  0xbf79ce2fbd819e5abc2327563d02a200255b7cb30 MATIC0.01133463
0xd67a6d9429a659cd9506b7327c24fe8b5be2b52e6b27cf01ee1f018c054d8e88173799482021-07-29 4:34:241 hr 19 mins ago0x70215b3e336fe2b86ea241d1e340b47a38ae19c2 IN  0xbf79ce2fbd819e5abc2327563d02a200255b7cb30 MATIC0.001232025
0x36d155cd85c31818926ff839d982075c0f10d00b16d2154c9d9be2c3271e0788173799462021-07-29 4:34:121 hr 19 mins ago0x2a14da38894e19ec0522f89cd11c6b2988e8bf39 IN  0xbf79ce2fbd819e5abc2327563d02a200255b7cb30 MATIC0.001231425
0xd02629839d6af24e09555e16789003a12baea974743ad9a6fe25dc8378654677173794492021-07-29 4:14:021 hr 40 mins ago0x874f726bc4ff64096b4614173b58e1a78abcd0ed IN  0xbf79ce2fbd819e5abc2327563d02a200255b7cb30 MATIC0.00246405
0x5eb4f433a3975854b5871f90e8c38106a3de9a43e367a01a50d279b98a0b89b0173793152021-07-29 4:03:121 hr 50 mins ago0x61c9e29e28f4fc29310b172f81d2dd1e2bf40194 IN  0xbf79ce2fbd819e5abc2327563d02a200255b7cb30 MATIC0.001231725
0xa784bbf6fb5076a4c460dae5be98e296eac40f4dd63c26d8fbae1b6782e5e004173790672021-07-29 3:54:401 hr 59 mins ago0xdb239f642c19fe7e4d429c1d5eb50e53eeddccc8 IN  0xbf79ce2fbd819e5abc2327563d02a200255b7cb30 MATIC0.001231725
0x0928f04aec715423b1416fd90625ebe7a1b1a79f901689530e73322477cfbc95173788202021-07-29 3:42:182 hrs 11 mins ago0xcf0be63803fac7a9644bb6a101a7ae40c5df96cf IN  0xbf79ce2fbd819e5abc2327563d02a200255b7cb30 MATIC0.001232025
0xe1c89283dfd4f1bf55a16dd7de414db0d1a7ee6d5030196d624c7be25d6258e0173786762021-07-29 3:36:582 hrs 17 mins ago0x01223cbd6d0a1ce029dae057844b3fa4c226d159 IN  0xbf79ce2fbd819e5abc2327563d02a200255b7cb30 MATIC0.001232025
0xf50d204fbc35268c43db7c421b0d346d20dbaef29695aaa59ed36ba537001214173785542021-07-29 3:32:262 hrs 21 mins ago0x2eb2c46f42f0fd692c860e5db91bf96d1e90b426 IN  0xbf79ce2fbd819e5abc2327563d02a200255b7cb30 MATIC0.001232025
0x28009196d8629caffd0d1b820a302bcfde308d073173a799711882b32c34bc8d173785002021-07-29 3:27:022 hrs 27 mins ago0xb2e4f25733ba865f0df9acb7620261d9c3436000 IN  0xbf79ce2fbd819e5abc2327563d02a200255b7cb30 MATIC0.002584225
0xcc65e4c224d6ab46f45d035d9ab71d35e21a831e0b981835b861094befcc1bcb173784422021-07-29 3:24:422 hrs 29 mins ago0x9f8a0b4d7d399eccf745ea1f7dafb8e8d2f12514 IN  0xbf79ce2fbd819e5abc2327563d02a200255b7cb30 MATIC0.0103381
0x9a52f7c6bd1c792878db5ae28c32905491f87ad2da8dcfc9e9bdf26947eafe77173783222021-07-29 3:20:342 hrs 33 mins ago0xbba34b7e00d0d98994d2e0e78ec6cf887f1e7625 IN  0xbf79ce2fbd819e5abc2327563d02a200255b7cb30 MATIC0.00246405
0x553bef370910662b470c2f3a2fff65889384f2171b16cea452b376e0204bff7a173781372021-07-29 3:11:402 hrs 42 mins ago0x2ffca90341e2c2b5b331724874af773a10819556 IN  0xbf79ce2fbd819e5abc2327563d02a200255b7cb30 MATIC0.001232025
0xb888eb283e4f2e44d825e7730a22445fca299fef5ff8f53a6e48ae064e2a2ab9173781322021-07-29 3:11:102 hrs 43 mins ago0xa5656f99ce331cdac81d5164fe3e2be401f8aecc IN  0xbf79ce2fbd819e5abc2327563d02a200255b7cb30 MATIC0.001231725
0x2779dc93384dc0a0b5a29dee7593a73d59552b27da87eff10b3a2133bd5259d5173780182021-07-29 3:05:502 hrs 48 mins ago0x794917d89c60a3f671a2843ae04439655e703aa0 IN  0xbf79ce2fbd819e5abc2327563d02a200255b7cb30 MATIC0.001232025
0xb62d35a74a590b4a5993f86f0822b852f7028a635c3ffbfdc7f8971dc42ed5d4173780142021-07-29 3:05:422 hrs 48 mins ago0xc32991d36a292369788b8f370d817c4d6b021cd5 IN  0xbf79ce2fbd819e5abc2327563d02a200255b7cb30 MATIC0.001232025
0x1a1b24b4e508a131fc52597692add05f97880ae989b54625be63ba046a6f93f0173775112021-07-29 2:43:523 hrs 10 mins ago0x5cf5f873ade0874e39f092c443f753776a7d523b IN  0xbf79ce2fbd819e5abc2327563d02a200255b7cb30 MATIC0.00246285
[ Download CSV Export 
Parent Txn Hash Block From To Value
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
dgTreasury

Compiler Version
v0.7.4+commit.3f05b770

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at polygonscan.com on 2021-06-10
*/

// SPDX-License-Identifier: -- 🎲 --

pragma solidity ^0.7.4;

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) {
        require(b <= a, 'SafeMath: subtraction overflow');
        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) {
        require(b > 0, 'SafeMath: division by zero');
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold
        return c;
    }

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

interface ERC20Token {
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);

    event Transfer(
        address indexed from,
        address indexed to,
        uint256 value
    );

    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
}

contract HashChain {
    bytes32 public tail;

    function _setTail(bytes32 _tail) internal {
        tail = _tail;
    }

    function _consume(bytes32 _parent) internal {
        require(
            keccak256(
                abi.encodePacked(_parent)
            ) == tail,
            'hash-chain: wrong parent'
        );
        tail = _parent;
    }
}

contract AccessController {

    address public ceoAddress;
    address public workerAddress;

    bool public paused = false;

    // mapping (address => enumRoles) accessRoles; // multiple operators idea

    event CEOSet(address newCEO);
    event WorkerSet(address newWorker);

    event Paused();
    event Unpaused();

    constructor() {
        ceoAddress = msg.sender;
        workerAddress = msg.sender;
        emit CEOSet(ceoAddress);
        emit WorkerSet(workerAddress);
    }

    modifier onlyCEO() {
        require(
            msg.sender == ceoAddress,
            'AccessControl: CEO access denied'
        );
        _;
    }

    modifier onlyWorker() {
        require(
            msg.sender == workerAddress,
            'AccessControl: worker access denied'
        );
        _;
    }

    modifier whenNotPaused() {
        require(
            !paused,
            'AccessControl: currently paused'
        );
        _;
    }

    modifier whenPaused {
        require(
            paused,
            'AccessControl: currenlty not paused'
        );
        _;
    }

    function setCEO(address _newCEO) public onlyCEO {
        require(
            _newCEO != address(0x0),
            'AccessControl: invalid CEO address'
        );
        ceoAddress = _newCEO;
        emit CEOSet(ceoAddress);
    }

    function setWorker(address _newWorker) external {
        require(
            _newWorker != address(0x0),
            'AccessControl: invalid worker address'
        );
        require(
            msg.sender == ceoAddress || msg.sender == workerAddress,
            'AccessControl: invalid worker address'
        );
        workerAddress = _newWorker;
        emit WorkerSet(workerAddress);
    }

    function pause() external onlyWorker whenNotPaused {
        paused = true;
        emit Paused();
    }

    function unpause() external onlyCEO whenPaused {
        paused = false;
        emit Unpaused();
    }
}

contract EIP712Base {

    struct EIP712Domain {
        string name;
        string version;
        uint256 chainId;
        address verifyingContract;
    }

    bytes32 internal constant EIP712_DOMAIN_TYPEHASH = keccak256(bytes("EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)"));

    bytes32 internal domainSeperator;

    constructor(string memory name, string memory version) {
      domainSeperator = keccak256(abi.encode(
			EIP712_DOMAIN_TYPEHASH,
			keccak256(bytes(name)),
			keccak256(bytes(version)),
			getChainID(),
			address(this)
		));
    }

    function getChainID() internal pure returns (uint256 id) {
		assembly {
			id := 1 // set to Goerli for now, Mainnet later
		}
	}

    function getDomainSeperator() private view returns(bytes32) {
		return domainSeperator;
	}

    /**
    * Accept message hash and returns hash message in EIP712 compatible form
    * So that it can be used to recover signer from signature signed using EIP712 formatted data
    * https://eips.ethereum.org/EIPS/eip-712
    * "\\x19" makes the encoding deterministic
    * "\\x01" is the version byte to make it compatible to EIP-191
    */
    function toTypedMessageHash(bytes32 messageHash) internal view returns(bytes32) {
        return keccak256(abi.encodePacked("\x19\x01", getDomainSeperator(), messageHash));
    }

}

abstract contract EIP712MetaTransaction is EIP712Base {

    using SafeMath for uint256;

    bytes32 private constant META_TRANSACTION_TYPEHASH =
        keccak256(
            bytes(
                "MetaTransaction(uint256 nonce,address from,bytes functionSignature)"
            )
        );

    event MetaTransactionExecuted(
        address userAddress,
        address payable relayerAddress,
        bytes functionSignature
    );

    mapping(address => uint256) internal nonces;

    /*
     * Meta transaction structure.
     * No point of including value field here as if user is doing value transfer then he has the funds to pay for gas
     * He should call the desired function directly in that case.
     */
    struct MetaTransaction {
		uint256 nonce;
		address from;
        bytes functionSignature;
	}

    function executeMetaTransaction(
        address userAddress,
        bytes memory functionSignature,
        bytes32 sigR,
        bytes32 sigS,
        uint8 sigV
    )
        public
        payable
        returns(bytes memory)
    {
        MetaTransaction memory metaTx = MetaTransaction(
            {
                nonce: nonces[userAddress],
                from: userAddress,
                functionSignature: functionSignature
            }
        );

        require(
            verify(
                userAddress,
                metaTx,
                sigR,
                sigS,
                sigV
            ), "Signer and signature do not match"
        );

	    nonces[userAddress] =
	    nonces[userAddress].add(1);

        // Append userAddress at the end to extract it from calling context
        (bool success, bytes memory returnData) = address(this).call(
            abi.encodePacked(
                functionSignature,
                userAddress
            )
        );

        require(
            success,
            'Function call not successful'
        );

        emit MetaTransactionExecuted(
            userAddress,
            msg.sender,
            functionSignature
        );

        return returnData;
    }

    function hashMetaTransaction(
        MetaTransaction memory metaTx
    )
        internal
        pure
        returns (bytes32)
    {
		return keccak256(
		    abi.encode(
                META_TRANSACTION_TYPEHASH,
                metaTx.nonce,
                metaTx.from,
                keccak256(metaTx.functionSignature)
            )
        );
	}

    uint256 constant defaultTimeFrame = 12 hours;

    mapping(address => uint256) public enabledTill;
    mapping(address => uint256) public timeFrame;

    modifier onlyEnabledOrNewAccount(address _account) {
        require(
            isEnabled(_account) ||
            enabledTill[_account] == 0,
            'Treasury: disabled account!'
        );
        _;
    }

    modifier onlyEnabledAccountStrict(address _account) {
        require(
            isEnabled(_account),
            'Treasury: disabled account!'
        );
        _;
    }


    function enableAccount(
        uint256 _sessionDuration
    )
        external
    {
        _enableAccount(
            msgSender(),
            _sessionDuration
        );
    }

    event AccountEnabled(
        address _user,
        uint256 _sessionDuration
    );

    function _enableAccount(
        address _user,
        uint256 _sessionDuration
    )
        internal
    {
        emit AccountEnabled(
            _user,
            _sessionDuration
        );

        timeFrame[_user] = _sessionDuration;
        enabledTill[_user] = block.timestamp.add(timeFrame[_user]);
    }

    function getTimeFrame(
        address _account
    )
        internal
        view
        returns (uint256)
    {
        return
            timeFrame[_account] > 0 ?
            timeFrame[_account] : defaultTimeFrame;
    }

    function isEnabled(
        address _account
    )
        public
        view
        returns (bool)
    {
        return enabledTill[_account] > block.timestamp;
    }

    function getNonce(
        address user
    )
        external
        view
        returns(uint256 nonce)
    {
        nonce = nonces[user];
    }

    function verify(
        address user,
        MetaTransaction memory metaTx,
        bytes32 sigR,
        bytes32 sigS,
        uint8 sigV
    )
        internal
        view
        returns (bool)
    {
        address signer = ecrecover(
            toTypedMessageHash(
                hashMetaTransaction(metaTx)
            ),
            sigV,
            sigR,
            sigS
        );

        require(
            signer != address(0x0),
            'Invalid signature'
        );
		return signer == user;
	}

    function msgSender() internal view returns(address sender) {
        if(msg.sender == address(this)) {
            bytes memory array = msg.data;
            uint256 index = msg.data.length;
            assembly {
                // Load the 32 bytes word from memory with the address on the lower 20 bytes, and mask those.
                sender := and(mload(add(array, index)), 0xffffffffffffffffffffffffffffffffffffffff)
            }
        } else {
            sender = msg.sender;
        }
        return sender;
    }
}

contract TransferHelper {

    bytes4 private constant TRANSFER = bytes4(
        keccak256(
            bytes(
                'transfer(address,uint256)' // 0xa9059cbb
            )
        )
    );

    bytes4 private constant TRANSFER_FROM = bytes4(
        keccak256(
            bytes(
                'transferFrom(address,address,uint256)' // 0x23b872dd
            )
        )
    );

    function safeTransfer(
        address _token,
        address _to,
        uint256 _value
    )
        internal
    {
        (bool success, bytes memory data) = _token.call(
            abi.encodeWithSelector(
                TRANSFER, // 0xa9059cbb
                _to,
                _value
            )
        );

        require(
            success && (
                data.length == 0 || abi.decode(
                    data, (bool)
                )
            ),
            'TransferHelper: TRANSFER_FAILED'
        );
    }

    function safeTransferFrom(
        address _token,
        address _from,
        address _to,
        uint _value
    )
        internal
    {
        (bool success, bytes memory data) = _token.call(
            abi.encodeWithSelector(
                TRANSFER_FROM,
                _from,
                _to,
                _value
            )
        );

        require(
            success && (
                data.length == 0 || abi.decode(
                    data, (bool)
                )
            ),
            'TransferHelper: TRANSFER_FROM_FAILED'
        );
    }

}

contract GameController is AccessController {

    using SafeMath for uint256;

    enum GameStatus { Empty, Enabled, Disabled }

    struct Game {
        address gameAddress;
        string gameName;
    }

    struct GameSettings {
        uint8 index;
        GameStatus status;
    }

    Game[] public treasuryGames;
    mapping(address => GameSettings) public settings;
    mapping(uint8 => mapping(uint8 => uint256)) gameTokens;
    mapping(uint8 => mapping(uint8 => uint128)) maximumBet;

    modifier onlyDeclaredGame(uint8 _gameIndex) {
        require(
            settings[
                treasuryGames[_gameIndex].gameAddress
            ].status != GameStatus.Empty,
            "Treasury: game is not declared!"
        );
        _;
    }

    modifier onlyEnabledGame(uint8 _gameIndex) {
        require(
            settings[
                treasuryGames[_gameIndex].gameAddress
            ].status == GameStatus.Enabled,
            "Treasury: game must be enabled!"
        );
        _;
    }

    modifier onlyDisabledGame(uint8 _gameIndex) {
        require(
            settings[
                treasuryGames[_gameIndex].gameAddress
            ].status == GameStatus.Disabled,
            "Treasury: game must be disabled!"
        );
        _;
    }

   function addGame(
        address _newGameAddress,
        string calldata _newGameName,
        bool _isActive
    )
        external
        onlyCEO
    {
        require(
            settings[_newGameAddress].status == GameStatus.Empty,
            'Treasury: game already declared!'
        );

        treasuryGames.push(
            Game(
                {
                    gameAddress: _newGameAddress,
                    gameName: _newGameName
                }
            )
        );
        settings[_newGameAddress].index = uint8(treasuryGames.length - 1);
        settings[_newGameAddress].status = _isActive == true
            ? GameStatus.Enabled
            : GameStatus.Disabled;
    }

    function getGameIndex(
        address _gameAddress
    )
        internal
        view
        returns (uint8)
    {
        require(
            settings[_gameAddress].status != GameStatus.Empty,
            'Treasury: game is not declared!'
        );
        return settings[_gameAddress].index;
    }

    function updateGameAddress(
        uint8 _gameIndex,
        address _newGameAddress
    )
        external
        onlyCEO
        onlyDeclaredGame(_gameIndex)
    {
        require(
            settings[_newGameAddress].status == GameStatus.Empty,
            'Treasury: game with new address already declared!'
        );

        settings[_newGameAddress] = settings[treasuryGames[_gameIndex].gameAddress];
        delete settings[treasuryGames[_gameIndex].gameAddress];
        treasuryGames[_gameIndex].gameAddress = _newGameAddress;
    }

    function updateGameName(
        uint8 _gameIndex,
        string calldata _newGameName
    )
        external
        onlyCEO
    {
        treasuryGames[_gameIndex].gameName = _newGameName;
    }

    function enableGame(
        uint8 _gameIndex
    )
        external
        onlyCEO
        onlyDisabledGame(_gameIndex)
    {
        settings[treasuryGames[_gameIndex].gameAddress].status = GameStatus.Enabled;
    }

    function disableGame(
        uint8 _gameIndex
    )
        external
        onlyCEO
        onlyEnabledGame(_gameIndex)
    {
        settings[treasuryGames[_gameIndex].gameAddress].status = GameStatus.Disabled;
    }

    function addGameTokens(
        uint8 _gameIndex,
        uint8 _tokenIndex,
        uint256 _amount
    )
        internal
    {
        gameTokens[_gameIndex][_tokenIndex] =
        gameTokens[_gameIndex][_tokenIndex].add(_amount);
    }

    function subGameTokens(
        uint8 _gameIndex,
        uint8 _tokenIndex,
        uint256 _amount
    )
        internal
    {
        gameTokens[_gameIndex][_tokenIndex] =
        gameTokens[_gameIndex][_tokenIndex].sub(_amount);
    }
}

contract TokenController is AccessController {

    struct Token {
        address tokenAddress;
        string tokenName;
    }

    Token[] public treasuryTokens;

    function addToken(
        address _tokenAddress,
        string memory _tokenName
    )
        public
        onlyCEO
    {
        treasuryTokens.push(
            Token(
                {
                    tokenAddress: _tokenAddress,
                    tokenName: _tokenName
                }
            )
        );
    }

    function getTokenInstance(
        uint8 _tokenIndex
    )
        internal
        view
        returns (ERC20Token)
    {
        return ERC20Token(treasuryTokens[_tokenIndex].tokenAddress);
    }

    function getTokenAddress(
        uint8 _tokenIndex
    )
        public
        view
        returns (address)
    {
        return treasuryTokens[_tokenIndex].tokenAddress;
    }

    function getTokenName(
        uint8 _tokenIndex
    )
        external
        view
        returns (string memory)
    {
        return treasuryTokens[_tokenIndex].tokenName;
    }

    function updateTokenAddress(
        uint8 _tokenIndex,
        address _newTokenAddress
    )
        external
        onlyCEO
    {
        treasuryTokens[_tokenIndex].tokenAddress = _newTokenAddress;
    }

    function updateTokenName(
        uint8 _tokenIndex,
        string calldata _newTokenName
    )
        external
        onlyCEO
    {
        treasuryTokens[_tokenIndex].tokenName = _newTokenName;
    }

    function deleteToken(
        uint8 _tokenIndex
    )
        external
        onlyCEO
    {
        ERC20Token token = getTokenInstance(
            _tokenIndex
        );

        require(
            token.balanceOf(address(this)) == 0,
            'TokenController: balance detected'
        );

        delete treasuryTokens[_tokenIndex];
    }
}

contract dgTreasury is GameController, TokenController, HashChain, TransferHelper, EIP712MetaTransaction {

    using SafeMath for uint256;

    constructor(
        address _defaultTokenAddress,
        string memory _defaultTokenName
    )
        EIP712Base('Treasury', 'v4.0')
    {
        addToken(
            _defaultTokenAddress,
            _defaultTokenName
        );
    }

    function disableAccount(
        address _account
    )
        external
        onlyWorker
    {
        enabledTill[_account] = block.timestamp;
    }

    function tokenInboundTransfer(
        uint8 _tokenIndex,
        address _from,
        uint256 _amount
    )
        external
        onlyEnabledOrNewAccount(_from)
        returns (bool)
    {
        uint8 _gameIndex = getGameIndex(msg.sender);
        address _token = getTokenAddress(_tokenIndex);

        addGameTokens(
            _gameIndex,
            _tokenIndex,
            _amount
        );

        safeTransferFrom(
            _token,
            _from,
            address(this), _amount
        );

        enabledTill[_from] = block.timestamp.add(getTimeFrame(msg.sender));

        return true;
    }

    function tokenOutboundTransfer(
        uint8 _tokenIndex,
        address _to,
        uint256 _amount
    )
        external
        onlyEnabledAccountStrict(_to)
        returns (bool)
    {
        uint8 _gameIndex = getGameIndex(msg.sender);
        address _token = getTokenAddress(_tokenIndex);

        subGameTokens(
            _gameIndex,
            _tokenIndex,
            _amount
        );

        safeTransfer(
            _token,
            _to,
            _amount
        );

        return true;
    }

    function setMaximumBet(
        uint8 _gameIndex,
        uint8 _tokenIndex,
        uint128 _maximumBet
    )
        external
        onlyCEO
        onlyDeclaredGame(_gameIndex)
    {
        maximumBet[_gameIndex][_tokenIndex] = _maximumBet;
    }

    function gameMaximumBet(
        uint8 _gameIndex,
        uint8 _tokenIndex
    )
        external
        view
        onlyDeclaredGame(_gameIndex)
        returns (uint256)
    {
        return maximumBet[_gameIndex][_tokenIndex];
    }

    function getMaximumBet(
        uint8 _tokenIndex
    )
        external
        view
        returns (uint128)
    {
        uint8 _gameIndex = getGameIndex(msg.sender);
        return maximumBet[_gameIndex][_tokenIndex];
    }

    function deleteGame(
        uint8 _gameIndex
    )
        public
        onlyCEO
    {
        for (uint8 _tokenIndex = 0; _tokenIndex < treasuryTokens.length; _tokenIndex++) {
            _withdrawGameTokens(
                _gameIndex,
                _tokenIndex,
                gameTokens[_gameIndex][_tokenIndex]
            );
            gameTokens[_gameIndex][_tokenIndex] = 0;
            maximumBet[_gameIndex][_tokenIndex] = 0;
        }
        delete treasuryGames[_gameIndex];
    }

    function checkApproval(
        address _userAddress,
        uint8 _tokenIndex
    )
        external
        view
        returns (uint256)
    {
        return getTokenInstance(_tokenIndex).allowance(
            _userAddress,
            address(this)
        );
    }

    receive() external payable {
        revert();
    }

    function addFunds(
        uint8 _gameIndex,
        uint8 _tokenIndex,
        uint256 _tokenAmount
    )
        external
    {
        require(
            _gameIndex < treasuryGames.length,
            'Treasury: unregistered gameIndex'
        );

        require(
            _tokenIndex < treasuryTokens.length,
            'Treasury: unregistered tokenIndex'
        );

        ERC20Token token = getTokenInstance(
            _tokenIndex
        );

        addGameTokens(
            _gameIndex,
            _tokenIndex,
            _tokenAmount
        );

        token.transferFrom(
            msg.sender,
            address(this),
            _tokenAmount
        );
    }

    function checkAllocatedTokens(
        uint8 _tokenIndex
    )
        external
        view
        returns (uint256)
    {
        uint8 _gameIndex = getGameIndex(msg.sender);

        return _checkAllocatedTokens(
            _gameIndex,
            _tokenIndex
        );
    }

    function _checkAllocatedTokens(
        uint8 _gameIndex,
        uint8 _tokenIndex
    ) internal view returns (uint256) {
        return gameTokens[_gameIndex][_tokenIndex];
    }

    function checkGameTokens(
        uint8 _gameIndex,
        uint8 _tokenIndex
    )
        external
        view
        returns (uint256)
    {
        return _checkAllocatedTokens(
            _gameIndex,
            _tokenIndex
        );
    }

    function _withdrawGameTokens(
        uint8 _gameIndex,
        uint8 _tokenIndex,
        uint256 _amount
    )
        internal
    {
        ERC20Token token = getTokenInstance(
            _tokenIndex
        );

        subGameTokens(
            _gameIndex,
            _tokenIndex,
            _amount
        );

        token.transfer(
            ceoAddress,
            _amount
        );
    }

    function withdrawGameTokens(
        uint8 _gameIndex,
        uint8 _tokenIndex,
        uint256 _amount
    )
        external
        onlyCEO
    {
        _withdrawGameTokens(
            _gameIndex,
            _tokenIndex,
            _amount
        );
    }

    function withdrawTreasuryTokens(
        uint8 _tokenIndex
    ) public onlyCEO {

        ERC20Token token = getTokenInstance(
            _tokenIndex
        );

        uint256 amount = token.balanceOf(
            address(this)
        );

        for (uint256 i = 0; i < treasuryGames.length; i++) {
            uint8 _gameIndex = settings[treasuryGames[i].gameAddress].index;
            gameTokens[_gameIndex][_tokenIndex] = 0;
        }

        token.transfer(
            ceoAddress,
            amount
        );
    }

    function setTail(
        bytes32 _tail
    )
        external
        onlyCEO
    {
        _setTail(_tail);
    }

    function consumeHash(
        bytes32 _localhash
    )
        external
        returns (bool)
    {
        require(
            settings[msg.sender].status == GameStatus.Enabled,
            'Treasury: active-game not present'
        );

        _consume(_localhash);

        return true;
    }
}

Contract ABI

[{"inputs":[{"internalType":"address","name":"_defaultTokenAddress","type":"address"},{"internalType":"string","name":"_defaultTokenName","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_user","type":"address"},{"indexed":false,"internalType":"uint256","name":"_sessionDuration","type":"uint256"}],"name":"AccountEnabled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newCEO","type":"address"}],"name":"CEOSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"userAddress","type":"address"},{"indexed":false,"internalType":"address payable","name":"relayerAddress","type":"address"},{"indexed":false,"internalType":"bytes","name":"functionSignature","type":"bytes"}],"name":"MetaTransactionExecuted","type":"event"},{"anonymous":false,"inputs":[],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[],"name":"Unpaused","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newWorker","type":"address"}],"name":"WorkerSet","type":"event"},{"inputs":[{"internalType":"uint8","name":"_gameIndex","type":"uint8"},{"internalType":"uint8","name":"_tokenIndex","type":"uint8"},{"internalType":"uint256","name":"_tokenAmount","type":"uint256"}],"name":"addFunds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newGameAddress","type":"address"},{"internalType":"string","name":"_newGameName","type":"string"},{"internalType":"bool","name":"_isActive","type":"bool"}],"name":"addGame","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenAddress","type":"address"},{"internalType":"string","name":"_tokenName","type":"string"}],"name":"addToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"ceoAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint8","name":"_tokenIndex","type":"uint8"}],"name":"checkAllocatedTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_userAddress","type":"address"},{"internalType":"uint8","name":"_tokenIndex","type":"uint8"}],"name":"checkApproval","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint8","name":"_gameIndex","type":"uint8"},{"internalType":"uint8","name":"_tokenIndex","type":"uint8"}],"name":"checkGameTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_localhash","type":"bytes32"}],"name":"consumeHash","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"_gameIndex","type":"uint8"}],"name":"deleteGame","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"_tokenIndex","type":"uint8"}],"name":"deleteToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"disableAccount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"_gameIndex","type":"uint8"}],"name":"disableGame","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_sessionDuration","type":"uint256"}],"name":"enableAccount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"_gameIndex","type":"uint8"}],"name":"enableGame","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"enabledTill","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"userAddress","type":"address"},{"internalType":"bytes","name":"functionSignature","type":"bytes"},{"internalType":"bytes32","name":"sigR","type":"bytes32"},{"internalType":"bytes32","name":"sigS","type":"bytes32"},{"internalType":"uint8","name":"sigV","type":"uint8"}],"name":"executeMetaTransaction","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint8","name":"_gameIndex","type":"uint8"},{"internalType":"uint8","name":"_tokenIndex","type":"uint8"}],"name":"gameMaximumBet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint8","name":"_tokenIndex","type":"uint8"}],"name":"getMaximumBet","outputs":[{"internalType":"uint128","name":"","type":"uint128"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"getNonce","outputs":[{"internalType":"uint256","name":"nonce","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint8","name":"_tokenIndex","type":"uint8"}],"name":"getTokenAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint8","name":"_tokenIndex","type":"uint8"}],"name":"getTokenName","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"isEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_newCEO","type":"address"}],"name":"setCEO","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"_gameIndex","type":"uint8"},{"internalType":"uint8","name":"_tokenIndex","type":"uint8"},{"internalType":"uint128","name":"_maximumBet","type":"uint128"}],"name":"setMaximumBet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_tail","type":"bytes32"}],"name":"setTail","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newWorker","type":"address"}],"name":"setWorker","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"settings","outputs":[{"internalType":"uint8","name":"index","type":"uint8"},{"internalType":"enum GameController.GameStatus","name":"status","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tail","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"timeFrame","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint8","name":"_tokenIndex","type":"uint8"},{"internalType":"address","name":"_from","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"tokenInboundTransfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"_tokenIndex","type":"uint8"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"tokenOutboundTransfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"treasuryGames","outputs":[{"internalType":"address","name":"gameAddress","type":"address"},{"internalType":"string","name":"gameName","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"treasuryTokens","outputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"string","name":"tokenName","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"unpause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"_gameIndex","type":"uint8"},{"internalType":"address","name":"_newGameAddress","type":"address"}],"name":"updateGameAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"_gameIndex","type":"uint8"},{"internalType":"string","name":"_newGameName","type":"string"}],"name":"updateGameName","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"_tokenIndex","type":"uint8"},{"internalType":"address","name":"_newTokenAddress","type":"address"}],"name":"updateTokenAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"_tokenIndex","type":"uint8"},{"internalType":"string","name":"_newTokenName","type":"string"}],"name":"updateTokenName","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"_gameIndex","type":"uint8"},{"internalType":"uint8","name":"_tokenIndex","type":"uint8"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"withdrawGameTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"_tokenIndex","type":"uint8"}],"name":"withdrawTreasuryTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"workerAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526001805460ff60a01b191690553480156200001e57600080fd5b5060405162003cc538038062003cc5833981810160405260408110156200004457600080fd5b8151602083018051604051929492938301929190846401000000008211156200006c57600080fd5b9083019060208201858111156200008257600080fd5b82516401000000008111828201881017156200009d57600080fd5b82525081516020918201929091019080838360005b83811015620000cc578181015183820152602001620000b2565b50505050905090810190601f168015620000fa5780820380516001836020036101000a031916815260200191505b50604081810181526008825267547265617375727960c01b602080840191909152815180830183526004815263076342e360e41b8183015260008054336001600160a01b03199182168117928390556001805490921617905583516001600160a01b039091168152925193965094507ff97cbb4246b709036319093e5ff31674b9f6759076d153e1bea1f60392170fc09350908290030190a1600154604080516001600160a01b039092168252517f54841e992da2f7bcaa3127409f02e1849c79072740593c398d6670f65f995fa79181900360200190a160405180608001604052806052815260200162003c73605291398051906020012082805190602001208280519060200120620002136200026e60201b60201c565b6040805160208082019690965280820194909452606084019290925260808301523060a0808401919091528151808403909101815260c09092019052805191012060085550620002669050828262000273565b50506200042c565b600190565b6000546001600160a01b03163314620002d3576040805162461bcd60e51b815260206004820181905260248201527f416363657373436f6e74726f6c3a2043454f206163636573732064656e696564604482015290519081900360640190fd5b604080518082019091526001600160a01b03838116825260208083018481526006805460018101825560009190915284517ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f600290920291820180546001600160a01b031916919095161784559051805162000379937ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d4090930192919091019062000380565b5050505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282620003b8576000855562000403565b82601f10620003d357805160ff191683800117855562000403565b8280016001018555821562000403579182015b8281111562000403578251825591602001919060010190620003e6565b506200041192915062000415565b5090565b5b8082111562000411576000815560010162000416565b613837806200043c6000396000f3fe6080604052600436106102605760003560e01c806370b5e63611610144578063c2c9a884116100b6578063e2373ab31161007a578063e2373ab314610c8b578063e99405cc14610ce9578063f010b54114610d16578063f342336f14610d43578063f887cf0014610d80578063f8ce7b4b14610dbc5761026a565b8063c2c9a88414610b98578063c70620b514610bc5578063c7646ebb14610bf2578063cbd88f4814610c39578063d845317214610c4e5761026a565b80638c79ba3a116101085780638c79ba3a14610a615780639015d37114610a945780639122c23914610ac7578063a3a8df9514610af4578063ae260ac014610b30578063c26f6d4414610b655761026a565b806370b5e6361461092257806371da23e9146109af5780637749bc11146109f85780637cb8e8cd14610a225780638456cb5914610a4c5761026a565b806331297992116101dd5780635ad3f918116101a15780635ad3f918146108235780635c975abb146108505780636431930f1461086557806365afb44f1461089857806365f6517a146108c25780636ca489fb146108f55761026a565b806331297992146106b557806332b4a5941461070b5780633de6f379146107905780633f4ba83a146107cc57806341d4c74f146107e15761026a565b806313d8c8401161022457806313d8c8401461053d57806327d7874c146105645780632c613a14146105975780632c8da560146105c15780632d0335ab146106825761026a565b8063082622171461026f5780630a0f8168146103215780630c53c51c146103525780630e363e3b146104895780630ea4a4fa146105105761026a565b3661026a57600080fd5b600080fd5b34801561027b57600080fd5b506102996004803603602081101561029257600080fd5b5035610df1565b60405180836001600160a01b0316815260200180602001828103825283818151815260200191508051906020019080838360005b838110156102e55781810151838201526020016102cd565b50505050905090810190601f1680156103125780820380516001836020036101000a031916815260200191505b50935050505060405180910390f35b34801561032d57600080fd5b50610336610eb6565b604080516001600160a01b039092168252519081900360200190f35b610414600480360360a081101561036857600080fd5b6001600160a01b038235169190810190604081016020820135600160201b81111561039257600080fd5b8201836020820111156103a457600080fd5b803590602001918460018302840111600160201b831117156103c557600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550508235935050506020810135906040013560ff16610ec5565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561044e578181015183820152602001610436565b50505050905090810190601f16801561047b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561049557600080fd5b5061050e600480360360408110156104ac57600080fd5b60ff8235169190810190604081016020820135600160201b8111156104d057600080fd5b8201836020820111156104e257600080fd5b803590602001918460018302840111600160201b8311171561050357600080fd5b5090925090506111d2565b005b34801561051c57600080fd5b5061050e6004803603602081101561053357600080fd5b503560ff16611255565b34801561054957600080fd5b5061055261139f565b60408051918252519081900360200190f35b34801561057057600080fd5b5061050e6004803603602081101561058757600080fd5b50356001600160a01b03166113a5565b3480156105a357600080fd5b50610299600480360360208110156105ba57600080fd5b5035611491565b3480156105cd57600080fd5b5061050e600480360360408110156105e457600080fd5b6001600160a01b038235169190810190604081016020820135600160201b81111561060e57600080fd5b82018360208201111561062057600080fd5b803590602001918460018302840111600160201b8311171561064157600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506114a1945050505050565b34801561068e57600080fd5b50610552600480360360208110156106a557600080fd5b50356001600160a01b0316611599565b3480156106c157600080fd5b506106f7600480360360608110156106d857600080fd5b5060ff813516906001600160a01b0360208201351690604001356115b4565b604080519115158252519081900360200190f35b34801561071757600080fd5b5061050e6004803603604081101561072e57600080fd5b60ff8235169190810190604081016020820135600160201b81111561075257600080fd5b82018360208201111561076457600080fd5b803590602001918460018302840111600160201b8311171561078557600080fd5b50909250905061164e565b34801561079c57600080fd5b5061050e600480360360408110156107b357600080fd5b50803560ff1690602001356001600160a01b03166116ad565b3480156107d857600080fd5b5061050e61173d565b3480156107ed57600080fd5b506106f76004803603606081101561080457600080fd5b5060ff813516906001600160a01b03602082013516906040013561180a565b34801561082f57600080fd5b506103366004803603602081101561084657600080fd5b503560ff166118f3565b34801561085c57600080fd5b506106f7611925565b34801561087157600080fd5b506105526004803603602081101561088857600080fd5b50356001600160a01b0316611935565b3480156108a457600080fd5b506106f7600480360360208110156108bb57600080fd5b5035611947565b3480156108ce57600080fd5b50610552600480360360208110156108e557600080fd5b50356001600160a01b03166119bb565b34801561090157600080fd5b506104146004803603602081101561091857600080fd5b503560ff166119cd565b34801561092e57600080fd5b5061050e6004803603606081101561094557600080fd5b6001600160a01b038235169190810190604081016020820135600160201b81111561096f57600080fd5b82018360208201111561098157600080fd5b803590602001918460018302840111600160201b831117156109a257600080fd5b9193509150351515611a90565b3480156109bb57600080fd5b506109dc600480360360208110156109d257600080fd5b503560ff16611c82565b604080516001600160801b039092168252519081900360200190f35b348015610a0457600080fd5b5061050e60048036036020811015610a1b57600080fd5b5035611cbf565b348015610a2e57600080fd5b5061050e60048036036020811015610a4557600080fd5b5035611d18565b348015610a5857600080fd5b5061050e611d29565b348015610a6d57600080fd5b5061050e60048036036020811015610a8457600080fd5b50356001600160a01b0316611e0f565b348015610aa057600080fd5b506106f760048036036020811015610ab757600080fd5b50356001600160a01b0316611e74565b348015610ad357600080fd5b5061050e60048036036020811015610aea57600080fd5b503560ff16611e91565b348015610b0057600080fd5b5061050e60048036036040811015610b1757600080fd5b50803560ff1690602001356001600160a01b0316612059565b348015610b3c57600080fd5b5061055260048036036040811015610b5357600080fd5b5060ff813581169160200135166122b8565b348015610b7157600080fd5b5061050e60048036036020811015610b8857600080fd5b50356001600160a01b031661237d565b348015610ba457600080fd5b5061050e60048036036020811015610bbb57600080fd5b503560ff1661247a565b348015610bd157600080fd5b5061055260048036036020811015610be857600080fd5b503560ff166125cf565b348015610bfe57600080fd5b5061050e60048036036060811015610c1557600080fd5b50803560ff90811691602081013590911690604001356001600160801b03166125ee565b348015610c4557600080fd5b50610336612712565b348015610c5a57600080fd5b5061050e60048036036060811015610c7157600080fd5b5060ff813581169160208101359091169060400135612721565b348015610c9757600080fd5b50610cbe60048036036020811015610cae57600080fd5b50356001600160a01b031661285c565b604051808360ff168152602001826002811115610cd757fe5b81526020019250505060405180910390f35b348015610cf557600080fd5b5061050e60048036036020811015610d0c57600080fd5b503560ff1661287a565b348015610d2257600080fd5b5061050e60048036036020811015610d3957600080fd5b503560ff16612993565b348015610d4f57600080fd5b5061050e60048036036060811015610d6657600080fd5b5060ff813581169160208101359091169060400135612a9b565b348015610d8c57600080fd5b5061055260048036036040811015610da357600080fd5b5080356001600160a01b0316906020013560ff16612af3565b348015610dc857600080fd5b5061055260048036036040811015610ddf57600080fd5b5060ff81358116916020013516612b8e565b60028181548110610e0157600080fd5b600091825260209182902060029182020180546001808301805460408051601f600019958416156101000295909501909216969096049283018790048702810187019095528185526001600160a01b0390921695509193909190830182828015610eac5780601f10610e8157610100808354040283529160200191610eac565b820191906000526020600020905b815481529060010190602001808311610e8f57829003601f168201915b5050505050905082565b6000546001600160a01b031681565b6060610ecf613468565b50604080516060810182526001600160a01b03881660008181526009602090815290849020548352820152908101869052610f0d8782878787612b9a565b610f485760405162461bcd60e51b815260040180806020018281038252602181526020018061377a6021913960400191505060405180910390fd5b6001600160a01b038716600090815260096020526040902054610f6c906001612c84565b60096000896001600160a01b03166001600160a01b031681526020019081526020016000208190555060006060306001600160a01b0316888a6040516020018083805190602001908083835b60208310610fd75780518252601f199092019160209182019101610fb8565b6001836020036101000a038019825116818451168082178552505050505050905001826001600160a01b031660601b8152601401925050506040516020818303038152906040526040518082805190602001908083835b6020831061104d5780518252601f19909201916020918201910161102e565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146110af576040519150601f19603f3d011682016040523d82523d6000602084013e6110b4565b606091505b50915091508161110b576040805162461bcd60e51b815260206004820152601c60248201527f46756e6374696f6e2063616c6c206e6f74207375636365737366756c00000000604482015290519081900360640190fd5b7f5845892132946850460bff5a0083f71031bc5bf9aadcd40f1de79423eac9b10b89338a60405180846001600160a01b03168152602001836001600160a01b0316815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561118a578181015183820152602001611172565b50505050905090810190601f1680156111b75780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a198975050505050505050565b6000546001600160a01b0316331461121f576040805162461bcd60e51b815260206004820181905260248201526000805160206136d3833981519152604482015290519081900360640190fd5b818160028560ff168154811061123157fe5b9060005260206000209060020201600101919061124f929190613492565b50505050565b6000546001600160a01b031633146112a2576040805162461bcd60e51b815260206004820181905260248201526000805160206136d3833981519152604482015290519081900360640190fd5b60006112ad826118f3565b9050806001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b1580156112fc57600080fd5b505afa158015611310573d6000803e3d6000fd5b505050506040513d602081101561132657600080fd5b5051156113645760405162461bcd60e51b81526004018080602001828103825260218152602001806137596021913960400191505060405180910390fd5b60068260ff168154811061137457fe5b60009182526020822060029091020180546001600160a01b03191681559061124f600183018261351e565b60075481565b6000546001600160a01b031633146113f2576040805162461bcd60e51b815260206004820181905260248201526000805160206136d3833981519152604482015290519081900360640190fd5b6001600160a01b0381166114375760405162461bcd60e51b81526004018080602001828103825260228152602001806136f36022913960400191505060405180910390fd5b600080546001600160a01b0319166001600160a01b03838116919091179182905560408051929091168252517ff97cbb4246b709036319093e5ff31674b9f6759076d153e1bea1f60392170fc0916020908290030190a150565b60068181548110610e0157600080fd5b6000546001600160a01b031633146114ee576040805162461bcd60e51b815260206004820181905260248201526000805160206136d3833981519152604482015290519081900360640190fd5b604080518082019091526001600160a01b03838116825260208083018481526006805460018101825560009190915284517ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f600290920291820180546001600160a01b0319169190951617845590518051611592937ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d40909301929190910190613562565b5050505050565b6001600160a01b031660009081526009602052604090205490565b6000826115c081611e74565b611611576040805162461bcd60e51b815260206004820152601b60248201527f54726561737572793a2064697361626c6564206163636f756e74210000000000604482015290519081900360640190fd5b600061161c33612cde565b90506000611629876118f3565b9050611636828887612d6d565b611641818787612dc2565b5060019695505050505050565b6000546001600160a01b0316331461169b576040805162461bcd60e51b815260206004820181905260248201526000805160206136d3833981519152604482015290519081900360640190fd5b818160068560ff168154811061123157fe5b6000546001600160a01b031633146116fa576040805162461bcd60e51b815260206004820181905260248201526000805160206136d3833981519152604482015290519081900360640190fd5b8060068360ff168154811061170b57fe5b6000918252602090912060029091020180546001600160a01b0319166001600160a01b03929092169190911790555050565b6000546001600160a01b0316331461178a576040805162461bcd60e51b815260206004820181905260248201526000805160206136d3833981519152604482015290519081900360640190fd5b600154600160a01b900460ff166117d25760405162461bcd60e51b81526004018080602001828103825260238152602001806137bb6023913960400191505060405180910390fd5b6001805460ff60a01b191690556040517fa45f47fdea8a1efdd9029a5691c7f759c32b7c698632b563573e155625d1693390600090a1565b60008261181681611e74565b8061183757506001600160a01b0381166000908152600a6020526040902054155b611888576040805162461bcd60e51b815260206004820152601b60248201527f54726561737572793a2064697361626c6564206163636f756e74210000000000604482015290519081900360640190fd5b600061189333612cde565b905060006118a0876118f3565b90506118ad828887612f55565b6118b981873088612f7f565b6118cc6118c5336130fc565b4290612c84565b6001600160a01b0387166000908152600a6020526040902055506001925050509392505050565b600060068260ff168154811061190557fe5b60009182526020909120600290910201546001600160a01b031692915050565b600154600160a01b900460ff1681565b600b6020526000908152604090205481565b6000600133600090815260036020526040902054610100900460ff16600281111561196e57fe5b146119aa5760405162461bcd60e51b81526004018080602001828103825260218152602001806137386021913960400191505060405180910390fd5b6119b382613141565b506001919050565b600a6020526000908152604090205481565b606060068260ff16815481106119df57fe5b90600052602060002090600202016001018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611a845780601f10611a5957610100808354040283529160200191611a84565b820191906000526020600020905b815481529060010190602001808311611a6757829003601f168201915b50505050509050919050565b6000546001600160a01b03163314611add576040805162461bcd60e51b815260206004820181905260248201526000805160206136d3833981519152604482015290519081900360640190fd5b60006001600160a01b038516600090815260036020526040902054610100900460ff166002811115611b0b57fe5b14611b5d576040805162461bcd60e51b815260206004820181905260248201527f54726561737572793a2067616d6520616c7265616479206465636c6172656421604482015290519081900360640190fd5b60026040518060400160405280866001600160a01b0316815260200185858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920182905250939094525050835460018082018655948252602091829020845160029092020180546001600160a01b0319166001600160a01b0390921691909117815583820151805194959194611c029450918501920190613562565b50506002546001600160a01b0386166000908152600360205260409020805460ff191660001990920160ff1691909117905550801515600114611c46576002611c49565b60015b6001600160a01b0385166000908152600360205260409020805461ff001916610100836002811115611c7757fe5b021790555050505050565b600080611c8e33612cde565b60ff9081166000908152600560209081526040808320938716835292905220546001600160801b0316915050919050565b6000546001600160a01b03163314611d0c576040805162461bcd60e51b815260206004820181905260248201526000805160206136d3833981519152604482015290519081900360640190fd5b611d15816131b6565b50565b611d15611d236131bb565b82613219565b6001546001600160a01b03163314611d725760405162461bcd60e51b81526004018080602001828103825260238152602001806137156023913960400191505060405180910390fd5b600154600160a01b900460ff1615611dd1576040805162461bcd60e51b815260206004820152601f60248201527f416363657373436f6e74726f6c3a2063757272656e746c792070617573656400604482015290519081900360640190fd5b6001805460ff60a01b1916600160a01b1790556040517f9e87fac88ff661f02d44f95383c817fece4bce600a3dab7a54406878b965e75290600090a1565b6001546001600160a01b03163314611e585760405162461bcd60e51b81526004018080602001828103825260238152602001806137156023913960400191505060405180910390fd5b6001600160a01b03166000908152600a60205260409020429055565b6001600160a01b03166000908152600a6020526040902054421090565b6000546001600160a01b03163314611ede576040805162461bcd60e51b815260206004820181905260248201526000805160206136d3833981519152604482015290519081900360640190fd5b6000611ee9826118f3565b90506000816001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015611f3a57600080fd5b505afa158015611f4e573d6000803e3d6000fd5b505050506040513d6020811015611f6457600080fd5b5051905060005b600254811015611fd75760006003600060028481548110611f8857fe5b600091825260208083206002909202909101546001600160a01b0316835282810193909352604091820181205460ff908116825260048452828220908916825290925281205550600101611f6b565b50600080546040805163a9059cbb60e01b81526001600160a01b0392831660048201526024810185905290519185169263a9059cbb926044808401936020939083900390910190829087803b15801561202f57600080fd5b505af1158015612043573d6000803e3d6000fd5b505050506040513d602081101561159257600080fd5b6000546001600160a01b031633146120a6576040805162461bcd60e51b815260206004820181905260248201526000805160206136d3833981519152604482015290519081900360640190fd5b8160006003600060028460ff16815481106120bd57fe5b60009182526020808320600292830201546001600160a01b031684528301939093526040909101902054610100900460ff16908111156120f957fe5b141561213a576040805162461bcd60e51b815260206004820152601f602482015260008051602061379b833981519152604482015290519081900360640190fd5b60006001600160a01b038316600090815260036020526040902054610100900460ff16600281111561216857fe5b146121a45760405162461bcd60e51b81526004018080602001828103825260318152602001806136a26031913960400191505060405180910390fd5b6003600060028560ff16815481106121b857fe5b60009182526020808320600292830201546001600160a01b03908116855284820195909552604093840183209487168352600390529190208254815460ff191660ff91821617808355845492936101009384900490921692849261ff001990921691849081111561222557fe5b02179055509050506003600060028560ff168154811061224157fe5b60009182526020808320600292830201546001600160a01b0316845283019390935260409091019020805461ffff19169055805483919060ff861690811061228557fe5b6000918252602090912060029091020180546001600160a01b0319166001600160a01b0392909216919091179055505050565b600082816003600060028460ff16815481106122d057fe5b60009182526020808320600292830201546001600160a01b031684528301939093526040909101902054610100900460ff169081111561230c57fe5b141561234d576040805162461bcd60e51b815260206004820152601f602482015260008051602061379b833981519152604482015290519081900360640190fd5b505060ff91821660009081526005602090815260408083209390941682529190915220546001600160801b031690565b6001600160a01b0381166123c25760405162461bcd60e51b81526004018080602001828103825260258152602001806135f46025913960400191505060405180910390fd5b6000546001600160a01b03163314806123e557506001546001600160a01b031633145b6124205760405162461bcd60e51b81526004018080602001828103825260258152602001806135f46025913960400191505060405180910390fd5b600180546001600160a01b0319166001600160a01b03838116919091179182905560408051929091168252517f54841e992da2f7bcaa3127409f02e1849c79072740593c398d6670f65f995fa7916020908290030190a150565b6000546001600160a01b031633146124c7576040805162461bcd60e51b815260206004820181905260248201526000805160206136d3833981519152604482015290519081900360640190fd5b8060026003600060028460ff16815481106124de57fe5b60009182526020808320600292830201546001600160a01b031684528301939093526040909101902054610100900460ff169081111561251a57fe5b1461256c576040805162461bcd60e51b815260206004820181905260248201527f54726561737572793a2067616d65206d7573742062652064697361626c656421604482015290519081900360640190fd5b60016003600060028560ff168154811061258257fe5b60009182526020808320600292830201546001600160a01b03168452830193909352604090910190208054909161ff0019909116906101009084908111156125c657fe5b02179055505050565b6000806125db33612cde565b90506125e781846132a2565b9392505050565b6000546001600160a01b0316331461263b576040805162461bcd60e51b815260206004820181905260248201526000805160206136d3833981519152604482015290519081900360640190fd5b8260006003600060028460ff168154811061265257fe5b60009182526020808320600292830201546001600160a01b031684528301939093526040909101902054610100900460ff169081111561268e57fe5b14156126cf576040805162461bcd60e51b815260206004820152601f602482015260008051602061379b833981519152604482015290519081900360640190fd5b5060ff92831660009081526005602090815260408083209490951682529290925291902080546001600160801b0319166001600160801b03909216919091179055565b6001546001600160a01b031681565b60025460ff84161061277a576040805162461bcd60e51b815260206004820181905260248201527f54726561737572793a20756e726567697374657265642067616d65496e646578604482015290519081900360640190fd5b60065460ff8316106127bd5760405162461bcd60e51b81526004018080602001828103825260218152602001806136196021913960400191505060405180910390fd5b60006127c8836118f3565b90506127d5848484612f55565b604080516323b872dd60e01b81523360048201523060248201526044810184905290516001600160a01b038316916323b872dd9160648083019260209291908290030181600087803b15801561282a57600080fd5b505af115801561283e573d6000803e3d6000fd5b505050506040513d602081101561285457600080fd5b505050505050565b60036020526000908152604090205460ff8082169161010090041682565b6000546001600160a01b031633146128c7576040805162461bcd60e51b815260206004820181905260248201526000805160206136d3833981519152604482015290519081900360640190fd5b60005b60065460ff821610156129525760ff80831660009081526004602090815260408083209385168352929052205461290490839083906132c7565b60ff80831660008181526004602090815260408083209486168084529482528083208390559282526005815282822093825292909252902080546001600160801b03191690556001016128ca565b5060028160ff168154811061296357fe5b60009182526020822060029091020180546001600160a01b03191681559061298e600183018261351e565b505050565b6000546001600160a01b031633146129e0576040805162461bcd60e51b815260206004820181905260248201526000805160206136d3833981519152604482015290519081900360640190fd5b8060016003600060028460ff16815481106129f757fe5b60009182526020808320600292830201546001600160a01b031684528301939093526040909101902054610100900460ff1690811115612a3357fe5b14612a85576040805162461bcd60e51b815260206004820152601f60248201527f54726561737572793a2067616d65206d75737420626520656e61626c65642100604482015290519081900360640190fd5b60026003600060028560ff168154811061258257fe5b6000546001600160a01b03163314612ae8576040805162461bcd60e51b815260206004820181905260248201526000805160206136d3833981519152604482015290519081900360640190fd5b61298e8383836132c7565b6000612afe826118f3565b6001600160a01b031663dd62ed3e84306040518363ffffffff1660e01b815260040180836001600160a01b03168152602001826001600160a01b031681526020019250505060206040518083038186803b158015612b5b57600080fd5b505afa158015612b6f573d6000803e3d6000fd5b505050506040513d6020811015612b8557600080fd5b50519392505050565b60006125e783836132a2565b6000806001612bb0612bab88613336565b6133b9565b84878760405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015612c07573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116612c63576040805162461bcd60e51b8152602060048201526011602482015270496e76616c6964207369676e617475726560781b604482015290519081900360640190fd5b866001600160a01b0316816001600160a01b03161491505095945050505050565b6000828201838110156125e7576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6000806001600160a01b038316600090815260036020526040902054610100900460ff166002811115612d0d57fe5b1415612d4e576040805162461bcd60e51b815260206004820152601f602482015260008051602061379b833981519152604482015290519081900360640190fd5b506001600160a01b031660009081526003602052604090205460ff1690565b60ff808416600090815260046020908152604080832093861683529290522054612d979082613405565b60ff938416600090815260046020908152604080832095909616825293909352929091209190915550565b604080518082018252601981527f7472616e7366657228616464726573732c75696e74323536290000000000000060209182015281516001600160a01b0385811660248301526044808301869052845180840390910181526064909201845291810180516001600160e01b031663a9059cbb60e01b1781529251815160009460609489169392918291908083835b60208310612e6f5780518252601f199092019160209182019101612e50565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114612ed1576040519150601f19603f3d011682016040523d82523d6000602084013e612ed6565b606091505b5091509150818015612f04575080511580612f045750808060200190516020811015612f0157600080fd5b50515b611592576040805162461bcd60e51b815260206004820152601f60248201527f5472616e7366657248656c7065723a205452414e534645525f4641494c454400604482015290519081900360640190fd5b60ff808416600090815260046020908152604080832093861683529290522054612d979082612c84565b60006060856001600160a01b031660405180606001604052806025815260200161363a602591398051602091820120604080516001600160a01b03808b166024830152891660448201526064808201899052825180830390910181526084909101825292830180516001600160e01b03166001600160e01b0319909316929092178252518251909182918083835b6020831061302c5780518252601f19909201916020918201910161300d565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d806000811461308e576040519150601f19603f3d011682016040523d82523d6000602084013e613093565b606091505b50915091508180156130c15750805115806130c157508080602001905160208110156130be57600080fd5b50515b6128545760405162461bcd60e51b81526004018080602001828103825260248152602001806137de6024913960400191505060405180910390fd5b6001600160a01b0381166000908152600b60205260408120546131215761a8c061313b565b6001600160a01b0382166000908152600b60205260409020545b92915050565b6007546040805160208082018590528251808303820181529183019092528051910120146131b6576040805162461bcd60e51b815260206004820152601860248201527f686173682d636861696e3a2077726f6e6720706172656e740000000000000000604482015290519081900360640190fd5b600755565b6000333014156132135760606000368080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050503601516001600160a01b031691506132169050565b50335b90565b604080516001600160a01b03841681526020810183905281517fc013b897e18cef75cd10c876b6b78ae296a1d877e477f5e51f021be6c5a9a4f1929181900390910190a16001600160a01b0382166000908152600b602052604090208190556132824282612c84565b6001600160a01b039092166000908152600a602052604090209190915550565b60ff918216600090815260046020908152604080832093909416825291909152205490565b60006132d2836118f3565b90506132df848484612d6d565b600080546040805163a9059cbb60e01b81526001600160a01b0392831660048201526024810186905290519184169263a9059cbb926044808401936020939083900390910190829087803b15801561282a57600080fd5b600060405180608001604052806043815260200161365f60439139805190602001208260000151836020015184604001518051906020012060405160200180858152602001848152602001836001600160a01b03168152602001828152602001945050505050604051602081830303815290604052805190602001209050919050565b60006133c3613462565b82604051602001808061190160f01b81525060020183815260200182815260200192505050604051602081830303815290604052805190602001209050919050565b60008282111561345c576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b60085490565b60405180606001604052806000815260200160006001600160a01b03168152602001606081525090565b828054600181600116156101000203166002900490600052602060002090601f0160209004810192826134c8576000855561350e565b82601f106134e15782800160ff1982351617855561350e565b8280016001018555821561350e579182015b8281111561350e5782358255916020019190600101906134f3565b5061351a9291506135de565b5090565b50805460018160011615610100020316600290046000825580601f106135445750611d15565b601f016020900490600052602060002090810190611d1591906135de565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282613598576000855561350e565b82601f106135b157805160ff191683800117855561350e565b8280016001018555821561350e579182015b8281111561350e5782518255916020019190600101906135c3565b5b8082111561351a57600081556001016135df56fe416363657373436f6e74726f6c3a20696e76616c696420776f726b6572206164647265737354726561737572793a20756e7265676973746572656420746f6b656e496e6465787472616e7366657246726f6d28616464726573732c616464726573732c75696e74323536294d6574615472616e73616374696f6e2875696e74323536206e6f6e63652c616464726573732066726f6d2c62797465732066756e6374696f6e5369676e61747572652954726561737572793a2067616d652077697468206e6577206164647265737320616c7265616479206465636c6172656421416363657373436f6e74726f6c3a2043454f206163636573732064656e696564416363657373436f6e74726f6c3a20696e76616c69642043454f2061646472657373416363657373436f6e74726f6c3a20776f726b6572206163636573732064656e69656454726561737572793a206163746976652d67616d65206e6f742070726573656e74546f6b656e436f6e74726f6c6c65723a2062616c616e63652064657465637465645369676e657220616e64207369676e617475726520646f206e6f74206d6174636854726561737572793a2067616d65206973206e6f74206465636c617265642100416363657373436f6e74726f6c3a2063757272656e6c7479206e6f74207061757365645472616e7366657248656c7065723a205452414e534645525f46524f4d5f4641494c4544a26469706673582212202ee39dea46b136aa399d6141ddd8b1ee21f15b63df7d65e5fdcb27eaae55a1bb64736f6c63430007040033454950373132446f6d61696e28737472696e67206e616d652c737472696e672076657273696f6e2c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e747261637429000000000000000000000000a1c57f48f0deb89f569dfbe6e2b7f46d33606fd4000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000044d414e4100000000000000000000000000000000000000000000000000000000

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

000000000000000000000000a1c57f48f0deb89f569dfbe6e2b7f46d33606fd4000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000044d414e4100000000000000000000000000000000000000000000000000000000

-----Encoded View---------------
4 Constructor Arguments found :
Arg [0] : 000000000000000000000000a1c57f48f0deb89f569dfbe6e2b7f46d33606fd4
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000040
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000004
Arg [3] : 4d414e4100000000000000000000000000000000000000000000000000000000


Deployed ByteCode Sourcemap

18942:6654:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22356:8;;;18942:6654;;;;13129:27;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13129:27:0;;:::i;:::-;;;;;-1:-1:-1;;;;;13129:27:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2327:25;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;2327:25:0;;;;;;;;;;;;;;6611:1317;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6611:1317:0;;;;;;;;;;;;;;;-1:-1:-1;;;6611:1317:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;6611:1317:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6611:1317:0;;-1:-1:-1;;6611:1317:0;;;-1:-1:-1;;;6611:1317:0;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15792:205;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;15792:205:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;15792:205:0;;;;;;;;;;-1:-1:-1;15792:205:0;;-1:-1:-1;15792:205:0;-1:-1:-1;15792:205:0;:::i;:::-;;18570:365;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;18570:365:0;;;;:::i;1938:19::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;3450:239;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3450:239:0;-1:-1:-1;;;;;3450:239:0;;:::i;17126:29::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17126:29:0;;:::i;17164:346::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;17164:346:0;;;;;;;;;;;;;;;-1:-1:-1;;;17164:346:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;17164:346:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17164:346:0;;-1:-1:-1;17164:346:0;;-1:-1:-1;;;;;17164:346:0:i;9950:156::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9950:156:0;-1:-1:-1;;;;;9950:156:0;;:::i;20175:549::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;20175:549:0;;;;;-1:-1:-1;;;;;20175:549:0;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;18350:212;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;18350:212:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;18350:212:0;;;;;;;;;;-1:-1:-1;18350:212:0;;-1:-1:-1;18350:212:0;-1:-1:-1;18350:212:0;:::i;18126:216::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;18126:216:0;;;;;;;;-1:-1:-1;;;;;18126:216:0;;:::i;4230:106::-;;;;;;;;;;;;;:::i;19516:651::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;19516:651:0;;;;;-1:-1:-1;;;;;19516:651:0;;;;;;;;;;:::i;17732:188::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17732:188:0;;;;:::i;2396:26::-;;;;;;;;;;;;;:::i;8420:44::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8420:44:0;-1:-1:-1;;;;;8420:44:0;;:::i;25281:312::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;25281:312:0;;:::i;8367:46::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8367:46:0;-1:-1:-1;;;;;8367:46:0;;:::i;17928:190::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17928:190:0;;;;:::i;14156:733::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;14156:733:0;;;;;;;;;;;;;;;-1:-1:-1;;;14156:733:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;14156:733:0;;;;;;;;;;;;-1:-1:-1;14156:733:0;-1:-1:-1;14156:733:0;;;;:::i;21258:237::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;21258:237:0;;;;:::i;:::-;;;;-1:-1:-1;;;;;21258:237:0;;;;;;;;;;;;;;25151:122;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;25151:122:0;;:::i;8891:189::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8891:189:0;;:::i;4115:107::-;;;;;;;;;;;;;:::i;19349:159::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;19349:159:0;-1:-1:-1;;;;;19349:159:0;;:::i;9765:177::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9765:177:0;-1:-1:-1;;;;;9765:177:0;;:::i;24593:550::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;24593:550:0;;;;:::i;15222:562::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;15222:562:0;;;;;;;;-1:-1:-1;;;;;15222:562:0;;:::i;21001:249::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;21001:249:0;;;;;;;;;;;:::i;3697:410::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3697:410:0;-1:-1:-1;;;;;3697:410:0;;:::i;16005:226::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16005:226:0;;;;:::i;23109:294::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;23109:294:0;;;;:::i;20732:261::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;20732:261:0;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;20732:261:0;;:::i;2359:28::-;;;;;;;;;;;;;:::i;22380:721::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;22380:721:0;;;;;;;;;;;;;;;;;;:::i;13163:48::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13163:48:0;-1:-1:-1;;;;;13163:48:0;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21503:515;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;21503:515:0;;;;:::i;16239:227::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16239:227:0;;;;:::i;24307:278::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;24307:278:0;;;;;;;;;;;;;;;;;;:::i;22026:284::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;22026:284:0;;-1:-1:-1;;;;;22026:284:0;;;;;;;;:::i;23605:260::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;23605:260:0;;;;;;;;;;;:::i;13129:27::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;13129:27:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;13129:27:0;;;;-1:-1:-1;13129:27:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2327:25::-;;;-1:-1:-1;;;;;2327:25:0;;:::o;6611:1317::-;6838:12;6868:29;;:::i;:::-;-1:-1:-1;6900:192:0;;;;;;;;-1:-1:-1;;;;;6956:19:0;;-1:-1:-1;6956:19:0;;;:6;:19;;;;;;;;;6900:192;;;;;;;;;;;7127:145;6963:11;6900:192;7207:4;7230;7253;7127:6;:145::i;:::-;7105:215;;;;-1:-1:-1;;;7105:215:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7358:19:0;;;;;;:6;:19;;;;;;:26;;7382:1;7358:23;:26::i;:::-;7330:6;:19;7337:11;-1:-1:-1;;;;;7330:19:0;-1:-1:-1;;;;;7330:19:0;;;;;;;;;;;;:54;;;;7475:12;7489:23;7524:4;-1:-1:-1;;;;;7516:18:0;7584:17;7620:11;7549:97;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7549:97:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7549:97:0;;;;;;;;;;;;;;;;;;;;;;;7516:141;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7516:141:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7474:183;;;;7692:7;7670:85;;;;;-1:-1:-1;;;7670:85:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;7773:117;7811:11;7837:10;7862:17;7773:117;;;;-1:-1:-1;;;;;7773:117:0;;;;;;-1:-1:-1;;;;;7773:117:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7910:10;6611:1317;-1:-1:-1;;;;;;;;6611:1317:0:o;15792:205::-;2877:10;;-1:-1:-1;;;;;2877:10:0;2863;:24;2841:106;;;;;-1:-1:-1;;;2841:106:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2841:106:0;;;;;;;;;;;;;;;15977:12:::1;;15940:13;15954:10;15940:25;;;;;;;;;;;;;;;;;;;;:34;;:49;;;;;;;:::i;:::-;;15792:205:::0;;;:::o;18570:365::-;2877:10;;-1:-1:-1;;;;;2877:10:0;2863;:24;2841:106;;;;;-1:-1:-1;;;2841:106:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2841:106:0;;;;;;;;;;;;;;;18677:16:::1;18696:53;18727:11;18696:16;:53::i;:::-;18677:72;;18784:5;-1:-1:-1::0;;;;;18784:15:0::1;;18808:4;18784:30;;;;;;;;;;;;;-1:-1:-1::0;;;;;18784:30:0::1;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;18784:30:0;:35;18762:118:::1;;;;-1:-1:-1::0;;;18762:118:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18900:14;18915:11;18900:27;;;;;;;;;;;::::0;;;::::1;::::0;;::::1;::::0;;::::1;;18893:34:::0;;-1:-1:-1;;;;;;18893:34:0::1;::::0;;18900:27;18893:34:::1;::::0;;::::1;18900:27:::0;18893:34:::1;:::i;1938:19::-:0;;;;:::o;3450:239::-;2877:10;;-1:-1:-1;;;;;2877:10:0;2863;:24;2841:106;;;;;-1:-1:-1;;;2841:106:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2841:106:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;3531:23:0;::::1;3509:107;;;;-1:-1:-1::0;;;3509:107:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3627:10;:20:::0;;-1:-1:-1;;;;;;3627:20:0::1;-1:-1:-1::0;;;;;3627:20:0;;::::1;::::0;;;::::1;::::0;;;;3663:18:::1;::::0;;3670:10;;;::::1;3663:18:::0;;;::::1;::::0;::::1;::::0;;;;;;::::1;3450:239:::0;:::o;17126:29::-;;;;;;;;;;;;17164:346;2877:10;;-1:-1:-1;;;;;2877:10:0;2863;:24;2841:106;;;;;-1:-1:-1;;;2841:106:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2841:106:0;;;;;;;;;;;;;;;17339:152:::1;::::0;;;;::::1;::::0;;;-1:-1:-1;;;;;17339:152:0;;::::1;::::0;;::::1;::::0;;::::1;::::0;;;17305:14:::1;:197:::0;;::::1;::::0;::::1;::::0;;-1:-1:-1;17305:197:0;;;;;;;::::1;::::0;;::::1;::::0;;::::1;::::0;;-1:-1:-1;;;;;;17305:197:0::1;::::0;;;::::1;;::::0;;;;;;::::1;::::0;;;;;;;;;::::1;::::0;::::1;:::i;:::-;;;;17164:346:::0;;:::o;9950:156::-;-1:-1:-1;;;;;10086:12:0;10047:13;10086:12;;;:6;:12;;;;;;;9950:156::o;20175:549::-;20364:4;20341:3;8787:19;8797:8;8787:9;:19::i;:::-;8765:96;;;;;-1:-1:-1;;;8765:96:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;20386:16:::1;20405:24;20418:10;20405:12;:24::i;:::-;20386:43;;20440:14;20457:28;20473:11;20457:15;:28::i;:::-;20440:45;;20498:97;20526:10;20551:11;20577:7;20498:13;:97::i;:::-;20608:84;20635:6;20656:3;20674:7;20608:12;:84::i;:::-;-1:-1:-1::0;20712:4:0::1;::::0;20175:549;-1:-1:-1;;;;;;20175:549:0:o;18350:212::-;2877:10;;-1:-1:-1;;;;;2877:10:0;2863;:24;2841:106;;;;;-1:-1:-1;;;2841:106:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2841:106:0;;;;;;;;;;;;;;;18541:13:::1;;18501:14;18516:11;18501:27;;;;;;;;;18126:216:::0;2877:10;;-1:-1:-1;;;;;2877:10:0;2863;:24;2841:106;;;;;-1:-1:-1;;;2841:106:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2841:106:0;;;;;;;;;;;;;;;18318:16:::1;18275:14;18290:11;18275:27;;;;;;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;;::::1;;:59:::0;;-1:-1:-1;;;;;;18275:59:0::1;-1:-1:-1::0;;;;;18275:59:0;;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;;18126:216:0:o;4230:106::-;2877:10;;-1:-1:-1;;;;;2877:10:0;2863;:24;2841:106;;;;;-1:-1:-1;;;2841:106:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2841:106:0;;;;;;;;;;;;;;;3353:6:::1;::::0;-1:-1:-1;;;3353:6:0;::::1;;;3331:91;;;;-1:-1:-1::0;;;3331:91:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4288:6:::2;:14:::0;;-1:-1:-1;;;;4288:14:0::2;::::0;;4318:10:::2;::::0;::::2;::::0;4297:5:::2;::::0;4318:10:::2;4230:106::o:0;19516:651::-;19707:4;19682:5;8557:19;8567:8;8557:9;:19::i;:::-;:62;;;-1:-1:-1;;;;;;8593:21:0;;;;;;:11;:21;;;;;;:26;8557:62;8535:139;;;;;-1:-1:-1;;;8535:139:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;19729:16:::1;19748:24;19761:10;19748:12;:24::i;:::-;19729:43;;19783:14;19800:28;19816:11;19800:15;:28::i;:::-;19783:45;;19841:97;19869:10;19894:11;19920:7;19841:13;:97::i;:::-;19951:105;19982:6;20003:5;20031:4;20038:7;19951:16;:105::i;:::-;20090:45;20110:24;20123:10;20110:12;:24::i;:::-;20090:15;::::0;:19:::1;:45::i;:::-;-1:-1:-1::0;;;;;20069:18:0;::::1;;::::0;;;:11:::1;:18;::::0;;;;:66;-1:-1:-1;20155:4:0::1;::::0;-1:-1:-1;;19516:651:0;;;;;;:::o;17732:188::-;17840:7;17872:14;17887:11;17872:27;;;;;;;;;;;;;;;;;;;;;;;:40;-1:-1:-1;;;;;17872:40:0;;17732:188;-1:-1:-1;;17732:188:0:o;2396:26::-;;;-1:-1:-1;;;2396:26:0;;;;;:::o;8420:44::-;;;;;;;;;;;;;:::o;25281:312::-;25374:4;25449:18;25427:10;25418:20;;;;:8;:20;;;;;:27;;;;;;:49;;;;;;;;;25396:132;;;;-1:-1:-1;;;25396:132:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25541:20;25550:10;25541:8;:20::i;:::-;-1:-1:-1;25581:4:0;25281:312;;;:::o;8367:46::-;;;;;;;;;;;;;:::o;17928:190::-;18035:13;18073:14;18088:11;18073:27;;;;;;;;;;;;;;;;;;;;:37;;18066:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17928:190;;;:::o;14156:733::-;2877:10;;-1:-1:-1;;;;;2877:10:0;2863;:24;2841:106;;;;;-1:-1:-1;;;2841:106:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2841:106:0;;;;;;;;;;;;;;;14387:16:::1;-1:-1:-1::0;;;;;14351:25:0;::::1;;::::0;;;:8:::1;:25;::::0;;;;:32;::::1;::::0;::::1;;;:52;::::0;::::1;;;;;;;14329:134;;;::::0;;-1:-1:-1;;;14329:134:0;;::::1;;::::0;::::1;::::0;;;;;;;::::1;::::0;;;;;;;;;;;;;::::1;;14476:13;14509:153;;;;;;;;14568:15;-1:-1:-1::0;;;;;14509:153:0::1;;;;;14616:12;;14509:153;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;-1:-1:-1;14509:153:0;;;;-1:-1:-1;;14476:197:0;;::::1;::::0;;::::1;::::0;;;;;::::1;::::0;;;;;;::::1;::::0;;::::1;;::::0;;-1:-1:-1;;;;;;14476:197:0::1;-1:-1:-1::0;;;;;14476:197:0;;::::1;::::0;;;::::1;::::0;;;;::::1;::::0;;;;;;;::::1;::::0;-1:-1:-1;14476:197:0;;::::1;::::0;::::1;::::0;::::1;:::i;:::-;-1:-1:-1::0;;14724:13:0::1;:20:::0;-1:-1:-1;;;;;14684:25:0;::::1;;::::0;;;:8:::1;:25;::::0;;;;:65;;-1:-1:-1;;14684:65:0::1;-1:-1:-1::0;;14724:24:0;;;14684:65:::1;;::::0;;;::::1;::::0;;-1:-1:-1;14795:17:0;::::1;;-1:-1:-1::0;14795:17:0::1;:86;;14862:19;14795:86;;;14828:18;14795:86;-1:-1:-1::0;;;;;14760:25:0;::::1;;::::0;;;:8:::1;:25;::::0;;;;:121;;-1:-1:-1;;14760:121:0::1;;::::0;::::1;::::0;::::1;;;;;;;;;;;14156:733:::0;;;;:::o;21258:237::-;21366:7;21391:16;21410:24;21423:10;21410:12;:24::i;:::-;21452:22;;;;;;;;:10;:22;;;;;;;;:35;;;;;;;;;;-1:-1:-1;;;;;21452:35:0;;-1:-1:-1;;21258:237:0;;;:::o;25151:122::-;2877:10;;-1:-1:-1;;;;;2877:10:0;2863;:24;2841:106;;;;;-1:-1:-1;;;2841:106:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2841:106:0;;;;;;;;;;;;;;;25250:15:::1;25259:5;25250:8;:15::i;:::-;25151:122:::0;:::o;8891:189::-;8990:82;9019:11;:9;:11::i;:::-;9045:16;8990:14;:82::i;4115:107::-;3044:13;;-1:-1:-1;;;;;3044:13:0;3030:10;:27;3008:112;;;;-1:-1:-1;;;3008:112:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3207:6:::1;::::0;-1:-1:-1;;;3207:6:0;::::1;;;3206:7;3184:88;;;::::0;;-1:-1:-1;;;3184:88:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;4186:4:::2;4177:13:::0;;-1:-1:-1;;;;4177:13:0::2;-1:-1:-1::0;;;4177:13:0::2;::::0;;4206:8:::2;::::0;::::2;::::0;4177:13;;4206:8:::2;4115:107::o:0;19349:159::-;3044:13;;-1:-1:-1;;;;;3044:13:0;3030:10;:27;3008:112;;;;-1:-1:-1;;;3008:112:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;19461:21:0::1;;::::0;;;:11:::1;:21;::::0;;;;19485:15:::1;19461:39:::0;;19349:159::o;9765:177::-;-1:-1:-1;;;;;9895:21:0;9866:4;9895:21;;;:11;:21;;;;;;9919:15;-1:-1:-1;;9765:177:0:o;24593:550::-;2877:10;;-1:-1:-1;;;;;2877:10:0;2863;:24;2841:106;;;;;-1:-1:-1;;;2841:106:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2841:106:0;;;;;;;;;;;;;;;24688:16:::1;24707:53;24738:11;24707:16;:53::i;:::-;24688:72;;24773:14;24790:5;-1:-1:-1::0;;;;;24790:15:0::1;;24828:4;24790:54;;;;;;;;;;;;;-1:-1:-1::0;;;;;24790:54:0::1;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;24790:54:0;;-1:-1:-1;24862:9:0::1;24857:195;24881:13;:20:::0;24877:24;::::1;24857:195;;;24923:16;24942:8;:38;24951:13;24965:1;24951:16;;;;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;;::::1;::::0;;::::1;:28:::0;-1:-1:-1;;;;;24951:28:0::1;24942:38:::0;;;;::::1;::::0;;;;;;;;;;:44;::::1;::::0;;::::1;25001:22:::0;;:10:::1;:22:::0;;;;;:35;;::::1;::::0;;;;;;;:39;-1:-1:-1;24951:28:0;24903:3:::1;24857:195;;;-1:-1:-1::0;25093:10:0::1;::::0;;25064:71:::1;::::0;;-1:-1:-1;;;25064:71:0;;-1:-1:-1;;;;;25093:10:0;;::::1;25064:71;::::0;::::1;::::0;;;;;;;;;:14;;::::1;::::0;::::1;::::0;:71;;;;;::::1;::::0;;;;;;;;;;;:14;:71;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;15222:562:::0;2877:10;;-1:-1:-1;;;;;2877:10:0;2863;:24;2841:106;;;;;-1:-1:-1;;;2841:106:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2841:106:0;;;;;;;;;;;;;;;15378:10;13509:16:::1;13419:8;:79;13446:13;13460:10;13446:25;;;;;;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;;::::1;;:37:::0;-1:-1:-1;;;;;13446:37:0::1;13419:79:::0;;;::::1;::::0;;;;;;;;;;:86;13446:37:::1;13419:86:::0;::::1;;;::::0;:106;::::1;;;;;;;;13397:187;;;::::0;;-1:-1:-1;;;13397:187:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;;;;;;;;;13397:187:0;;;;;;;;;;;;;::::1;;15464:16:::2;-1:-1:-1::0;;;;;15428:25:0;::::2;;::::0;;;:8:::2;:25;::::0;;;;:32;::::2;::::0;::::2;;;:52;::::0;::::2;;;;;;;15406:151;;;;-1:-1:-1::0;;;15406:151:0::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15598:8;:47;15607:13;15621:10;15607:25;;;;;;;;;;;::::0;;;::::2;::::0;;;::::2;::::0;;::::2;;:37:::0;-1:-1:-1;;;;;15607:37:0;;::::2;15598:47:::0;;;;::::2;::::0;;;;;;;;;;15570:25;;::::2;::::0;;:8:::2;:25:::0;;;;;:75;;;;-1:-1:-1;;15570:75:0::2;;::::0;;::::2;;::::0;;;;;:25;;15607:37:::2;15570:75:::0;;;::::2;::::0;;::::2;::::0;:25;;-1:-1:-1;;15570:75:0;;::::2;::::0;;;;::::2;;;;;;;;;;;;;;15663:8;:47;15672:13;15686:10;15672:25;;;;;;;;;;;::::0;;;::::2;::::0;;;::::2;::::0;;::::2;;:37:::0;-1:-1:-1;;;;;15672:37:0::2;15663:47:::0;;;::::2;::::0;;;;;;;;;;15656:54;;-1:-1:-1;;15656:54:0;;;15721:25;;15761:15;;15672:25;15656:54:::2;15721:25:::0;::::2;::::0;;::::2;;;;;;::::0;;;::::2;::::0;;;::::2;::::0;;::::2;;:55:::0;;-1:-1:-1;;;;;;15721:55:0::2;-1:-1:-1::0;;;;;15721:55:0;;;::::2;::::0;;;::::2;::::0;;-1:-1:-1;;;15222:562:0:o;21001:249::-;21175:7;21145:10;21175:7;13419:8;:79;13446:13;13460:10;13446:25;;;;;;;;;;;;;;;;;;;;;;;:37;-1:-1:-1;;;;;13446:37:0;13419:79;;;;;;;;;;;;;;:86;13446:37;13419:86;;;;;:106;;;;;;;;;13397:187;;;;;-1:-1:-1;;;13397:187:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;13397:187:0;;;;;;;;;;;;;;;-1:-1:-1;;21207:22:0::1;::::0;;::::1;;::::0;;;:10:::1;:22;::::0;;;;;;;:35;;;::::1;::::0;;;;;;;;-1:-1:-1;;;;;21207:35:0::1;::::0;21001:249::o;3697:410::-;-1:-1:-1;;;;;3778:26:0;;3756:113;;;;-1:-1:-1;;;3756:113:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3916:10;;-1:-1:-1;;;;;3916:10:0;3902;:24;;:55;;-1:-1:-1;3944:13:0;;-1:-1:-1;;;;;3944:13:0;3930:10;:27;3902:55;3880:142;;;;-1:-1:-1;;;3880:142:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4033:13;:26;;-1:-1:-1;;;;;;4033:26:0;-1:-1:-1;;;;;4033:26:0;;;;;;;;;;;4075:24;;;4085:13;;;;4075:24;;;;;;;;;;;;;3697:410;:::o;16005:226::-;2877:10;;-1:-1:-1;;;;;2877:10:0;2863;:24;2841:106;;;;;-1:-1:-1;;;2841:106:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2841:106:0;;;;;;;;;;;;;;;16120:10;14050:19:::1;13960:8;:79;13987:13;14001:10;13987:25;;;;;;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;;::::1;;:37:::0;-1:-1:-1;;;;;13987:37:0::1;13960:79:::0;;;::::1;::::0;;;;;;;;;;:86;13987:37:::1;13960:86:::0;::::1;;;::::0;:109;::::1;;;;;;;13938:191;;;::::0;;-1:-1:-1;;;13938:191:0;;::::1;;::::0;::::1;::::0;;;;;;;::::1;::::0;;;;;;;;;;;;;::::1;;16205:18:::2;16148:8;:47;16157:13;16171:10;16157:25;;;;;;;;;;;::::0;;;::::2;::::0;;;::::2;::::0;;::::2;;:37:::0;-1:-1:-1;;;;;16157:37:0::2;16148:47:::0;;;::::2;::::0;;;;;;;;;;:75;;:47;;-1:-1:-1;;16148:75:0;;::::2;::::0;16157:37:::2;::::0;16148:75;;;::::2;;;;;;;;;;;2958:1:::1;16005:226:::0;:::o;23109:294::-;23224:7;23249:16;23268:24;23281:10;23268:12;:24::i;:::-;23249:43;;23312:83;23348:10;23373:11;23312:21;:83::i;:::-;23305:90;23109:294;-1:-1:-1;;;23109:294:0:o;20732:261::-;2877:10;;-1:-1:-1;;;;;2877:10:0;2863;:24;2841:106;;;;;-1:-1:-1;;;2841:106:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2841:106:0;;;;;;;;;;;;;;;20908:10;13509:16:::1;13419:8;:79;13446:13;13460:10;13446:25;;;;;;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;;::::1;;:37:::0;-1:-1:-1;;;;;13446:37:0::1;13419:79:::0;;;::::1;::::0;;;;;;;;;;:86;13446:37:::1;13419:86:::0;::::1;;;::::0;:106;::::1;;;;;;;;13397:187;;;::::0;;-1:-1:-1;;;13397:187:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;;;;;;;;;13397:187:0;;;;;;;;;;;;;::::1;;-1:-1:-1::0;20936:22:0::2;::::0;;::::2;;::::0;;;:10:::2;:22;::::0;;;;;;;:35;;;::::2;::::0;;;;;;;;;:49;;-1:-1:-1;;;;;;20936:49:0::2;-1:-1:-1::0;;;;;20936:49:0;;::::2;::::0;;;::::2;::::0;;20732:261::o;2359:28::-;;;-1:-1:-1;;;;;2359:28:0;;:::o;22380:721::-;22560:13;:20;22547:33;;;;22525:115;;;;;-1:-1:-1;;;22525:115:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22689:14;:21;22675:35;;;;22653:118;;;;-1:-1:-1;;;22653:118:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22784:16;22803:53;22834:11;22803:16;:53::i;:::-;22784:72;;22869:102;22897:10;22922:11;22948:12;22869:13;:102::i;:::-;22984:109;;;-1:-1:-1;;;22984:109:0;;23017:10;22984:109;;;;23050:4;22984:109;;;;;;;;;;;;-1:-1:-1;;;;;22984:18:0;;;;;:109;;;;;;;;;;;;;;-1:-1:-1;22984:18:0;:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;22380:721:0:o;13163:48::-;;;;;;;;;;;;;;;;;;;;;;:::o;21503:515::-;2877:10;;-1:-1:-1;;;;;2877:10:0;2863;:24;2841:106;;;;;-1:-1:-1;;;2841:106:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2841:106:0;;;;;;;;;;;;;;;21611:17:::1;21606:362;21648:14;:21:::0;21634:35:::1;::::0;::::1;;21606:362;;;21798:22;::::0;;::::1;;::::0;;;:10:::1;:22;::::0;;;;;;;:35;;::::1;::::0;;;;;;;21701:147:::1;::::0;21739:10;;21768:11;;21701:19:::1;:147::i;:::-;21863:22;::::0;;::::1;21901:1;21863:22:::0;;;:10:::1;:22;::::0;;;;;;;:35;;::::1;::::0;;;;;;;;;:39;;;21917:22;;;:10:::1;:22:::0;;;;;:35;;;;;;;;;:39;;-1:-1:-1;;;;;;21917:39:0::1;::::0;;;21671:13:::1;21606:362;;;;21985:13;21999:10;21985:25;;;;;;;;;;;::::0;;;::::1;::::0;;::::1;::::0;;::::1;;21978:32:::0;;-1:-1:-1;;;;;;21978:32:0::1;::::0;;21985:25;21978:32:::1;::::0;;::::1;21985:25:::0;21978:32:::1;:::i;:::-;;;21503:515:::0;:::o;16239:227::-;2877:10;;-1:-1:-1;;;;;2877:10:0;2863;:24;2841:106;;;;;-1:-1:-1;;;2841:106:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2841:106:0;;;;;;;;;;;;;;;16354:10;13778:18:::1;13688:8;:79;13715:13;13729:10;13715:25;;;;;;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;;::::1;;:37:::0;-1:-1:-1;;;;;13715:37:0::1;13688:79:::0;;;::::1;::::0;;;;;;;;;;:86;13715:37:::1;13688:86:::0;::::1;;;::::0;:108;::::1;;;;;;;13666:189;;;::::0;;-1:-1:-1;;;13666:189:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;16439:19:::2;16382:8;:47;16391:13;16405:10;16391:25;;;;;;;;;24307:278:::0;2877:10;;-1:-1:-1;;;;;2877:10:0;2863;:24;2841:106;;;;;-1:-1:-1;;;2841:106:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2841:106:0;;;;;;;;;;;;;;;24474:103:::1;24508:10;24533:11;24559:7;24474:19;:103::i;22026:284::-:0;22165:7;22197:29;22214:11;22197:16;:29::i;:::-;-1:-1:-1;;;;;22197:39:0;;22251:12;22286:4;22197:105;;;;;;;;;;;;;-1:-1:-1;;;;;22197:105:0;;;;;;-1:-1:-1;;;;;22197:105:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;22197:105:0;;22026:284;-1:-1:-1;;;22026:284:0:o;23605:260::-;23742:7;23774:83;23810:10;23835:11;23774:21;:83::i;10114:546::-;10317:4;10339:14;10356:171;10380:79;10417:27;10437:6;10417:19;:27::i;:::-;10380:18;:79::i;:::-;10474:4;10493;10512;10356:171;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;10356:171:0;;-1:-1:-1;;10356:171:0;;;-1:-1:-1;;;;;;;10562:22:0;;10540:89;;;;;-1:-1:-1;;;10540:89:0;;;;;;;;;;;;-1:-1:-1;;;10540:89:0;;;;;;;;;;;;;;;10651:4;-1:-1:-1;;;;;10641:14:0;:6;-1:-1:-1;;;;;10641:14:0;;10634:21;;;10114:546;;;;;;;:::o;95:179::-;153:7;185:5;;;209:6;;;;201:46;;;;;-1:-1:-1;;;201:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;14897:317;15007:5;;-1:-1:-1;;;;;15052:22:0;;;;;;:8;:22;;;;;:29;;;;;;:49;;;;;;;;;;15030:130;;;;;-1:-1:-1;;;15030:130:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;15030:130:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;;15178:22:0;;;;;:8;:22;;;;;:28;;;;14897:317::o;16730:248::-;16922:22;;;;;;;;:10;:22;;;;;;;;:35;;;;;;;;;;:48;;16962:7;16922:39;:48::i;:::-;16875:22;;;;;;;;:10;:22;;;;;;;;:35;;;;;;;;;;;;;;:95;;;;-1:-1:-1;16730:248:0:o;11629:564::-;11322:80;;;;;;;;;;;;;;;;;11826:125;;-1:-1:-1;;;;;11826:125:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;11826:125:0;-1:-1:-1;;;11826:125:0;;;11800:162;;;;11765:12;;11779:17;;11800:11;;;11826:125;11800:162;;;11826:125;11800:162;;11826:125;11800:162;;;;;;;;;;-1:-1:-1;;11800:162:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11764:198;;;;11997:7;:129;;;;-1:-1:-1;12027:11:0;;:16;;:84;;;12080:4;12047:64;;;;;;;;;;;;;;;-1:-1:-1;12047:64:0;12027:84;11975:210;;;;;-1:-1:-1;;;11975:210:0;;;;;;;;;;;;;;;;;;;;;;;;;;;16474:248;16666:22;;;;;;;;:10;:22;;;;;;;;:35;;;;;;;;;;:48;;16706:7;16666:39;:48::i;12201:609::-;12362:12;12376:17;12397:6;-1:-1:-1;;;;;12397:11:0;11510:92;;;;;;;;;;;;;;;;;11486:127;;;;;;;12423:140;;;-1:-1:-1;;;;;12423:140:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;12423:140:0;-1:-1:-1;;;;;;12423:140:0;;;;;;;;;12397:177;;;;;;;;;12423:140;12397:177;;;;;;;;;;-1:-1:-1;;12397:177:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12361:213;;;;12609:7;:129;;;;-1:-1:-1;12639:11:0;;:16;;:84;;;12692:4;12659:64;;;;;;;;;;;;;;;-1:-1:-1;12659:64:0;12639:84;12587:215;;;;-1:-1:-1;;;12587:215:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9521:236;-1:-1:-1;;;;;9672:19:0;;9627:7;9672:19;;;:9;:19;;;;;;:77;;8350:8;9672:77;;;-1:-1:-1;;;;;9711:19:0;;;;;;:9;:19;;;;;;9672:77;9652:97;9521:236;-1:-1:-1;;9521:236:0:o;2047:238::-;2196:4;;2152:25;;;;;;;;;;;;;;;;;;;;;;;;;2124:68;;;;;:76;2102:150;;;;;-1:-1:-1;;;2102:150:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;2263:4;:14;2047:238::o;10668:538::-;10711:14;10741:10;10763:4;10741:27;10738:437;;;10785:18;10806:8;;10785:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;10845:8:0;11034:17;11028:24;-1:-1:-1;;;;;11024:73:0;;-1:-1:-1;10884:228:0;;-1:-1:-1;10884:228:0;;-1:-1:-1;11153:10:0;10738:437;10668:538;:::o;9183:330::-;9312:76;;;-1:-1:-1;;;;;9312:76:0;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9401:16:0;;;;;;:9;:16;;;;;:35;;;9468:37;:15;9420:16;9468:19;:37::i;:::-;-1:-1:-1;;;;;9447:18:0;;;;;;;:11;:18;;;;;:58;;;;-1:-1:-1;9183:330:0:o;23411:186::-;23554:22;;;;23527:7;23554:22;;;:10;:22;;;;;;;;:35;;;;;;;;;;;;;23411:186::o;23873:426::-;24024:16;24043:53;24074:11;24043:16;:53::i;:::-;24024:72;;24109:97;24137:10;24162:11;24188:7;24109:13;:97::i;:::-;24248:10;;;24219:72;;;-1:-1:-1;;;24219:72:0;;-1:-1:-1;;;;;24248:10:0;;;24219:72;;;;;;;;;;;;:14;;;;;;:72;;;;;;;;;;;;;;;;;:14;:72;;;;;;;;;;7936:370;8062:7;5937:108;;;;;;;;;;;;;;;;;5913:143;;;;;;8179:6;:12;;;8210:6;:11;;;8250:6;:24;;;8240:35;;;;;;8106:184;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8106:184:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;8088:213;;;;;;8081:220;;7936:370;;;:::o;5564:180::-;5635:7;5701:20;:18;:20::i;:::-;5723:11;5672:63;;;;;;-1:-1:-1;;;5672:63:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5662:74;;;;;;5655:81;;5564:180;;;:::o;282:182::-;340:7;373:1;368;:6;;360:49;;;;;-1:-1:-1;;;360:49:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;432:5:0;;;282:182::o;5109:92::-;5181:15;;5109:92;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

Swarm Source

ipfs://2ee39dea46b136aa399d6141ddd8b1ee21f15b63df7d65e5fdcb27eaae55a1bb
Block Transaction Gas Used Reward
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
Block Uncle Number Difficulty Gas Used Reward
Loading
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.