BEP-20
Venus Protocol
Overview
Max Total Supply
30,000,000,000VRT
Holders
42,315 (0.00%)
Market
Price
$0.00 @ 0.000000 BNB (-0.28%)
Onchain Market Cap
$642,148.02
Circulating Supply Market Cap
$470,908.15
Other Info
Token Contract (WITH 18 Decimals)
Balance
283.45675 VRTValue
$0.01 ( ~1.43739062312152E-05 BNB) [0.0000%]Loading...
Loading
Loading...
Loading
Loading...
Loading
Contract Name:
VRT
Compiler Version
v0.5.17+commit.d19bba13
Contract Source Code (Solidity)
/** *Submitted for verification at BscScan.com on 2021-04-29 */ pragma solidity ^0.5.16; contract Owned { address public owner; event OwnershipTransferred(address indexed _from, address indexed _to); constructor() public { owner = msg.sender; } modifier onlyOwner { require(msg.sender == owner, "Should be owner"); _; } function transferOwnership(address newOwner) public onlyOwner { owner = newOwner; emit OwnershipTransferred(owner, newOwner); } } contract Tokenlock is Owned { /// @notice Indicates if token is locked uint8 isLocked = 0; event Freezed(); event UnFreezed(); modifier validLock { require(isLocked == 0, "Token is locked"); _; } function freeze() public onlyOwner { isLocked = 1; emit Freezed(); } function unfreeze() public onlyOwner { isLocked = 0; emit UnFreezed(); } } contract VRT is Tokenlock { /// @notice BEP-20 token name for this token string public constant name = "Venus Reward Token"; /// @notice BEP-20 token symbol for this token string public constant symbol = "VRT"; /// @notice BEP-20 token decimals for this token uint8 public constant decimals = 18; /// @notice Total number of tokens in circulation uint public constant totalSupply = 30000000000e18; // 30 billion VRT /// @notice Allowance amounts on behalf of others mapping (address => mapping (address => uint96)) internal allowances; /// @notice Official record of token balances for each account mapping (address => uint96) internal balances; /// @notice A record of each accounts delegate mapping (address => address) public delegates; /// @notice A checkpoint for marking number of votes from a given block struct Checkpoint { uint32 fromBlock; uint96 votes; } /// @notice A record of votes checkpoints for each account, by index mapping (address => mapping (uint32 => Checkpoint)) public checkpoints; /// @notice The number of checkpoints for each account mapping (address => uint32) public numCheckpoints; /// @notice The EIP-712 typehash for the contract's domain bytes32 public constant DOMAIN_TYPEHASH = keccak256("EIP712Domain(string name,uint256 chainId,address verifyingContract)"); /// @notice The EIP-712 typehash for the delegation struct used by the contract bytes32 public constant DELEGATION_TYPEHASH = keccak256("Delegation(address delegatee,uint256 nonce,uint256 expiry)"); /// @notice A record of states for signing / validating signatures mapping (address => uint) public nonces; /// @notice An event thats emitted when an account changes its delegate event DelegateChanged(address indexed delegator, address indexed fromDelegate, address indexed toDelegate); /// @notice An event thats emitted when a delegate account's vote balance changes event DelegateVotesChanged(address indexed delegate, uint previousBalance, uint newBalance); /// @notice The standard BEP-20 transfer event event Transfer(address indexed from, address indexed to, uint256 amount); /// @notice The standard BEP-20 approval event event Approval(address indexed owner, address indexed spender, uint256 amount); /** * @notice Construct a new VRT token * @param account The initial account to grant all the tokens */ constructor(address account) public { balances[account] = uint96(totalSupply); emit Transfer(address(0), account, totalSupply); } /** * @notice Get the number of tokens `spender` is approved to spend on behalf of `account` * @param account The address of the account holding the funds * @param spender The address of the account spending the funds * @return The number of tokens approved */ function allowance(address account, address spender) external view returns (uint) { return allowances[account][spender]; } /** * @notice Approve `spender` to transfer up to `amount` from `src` * @dev This will overwrite the approval amount for `spender` * @param spender The address of the account which may transfer tokens * @param rawAmount The number of tokens that are approved (2^256-1 means infinite) * @return Whether or not the approval succeeded */ function approve(address spender, uint rawAmount) external validLock returns (bool) { uint96 amount; if (rawAmount == uint(-1)) { amount = uint96(-1); } else { amount = safe96(rawAmount, "VRT::approve: amount exceeds 96 bits"); } allowances[msg.sender][spender] = amount; emit Approval(msg.sender, spender, amount); return true; } /** * @notice Get the number of tokens held by the `account` * @param account The address of the account to get the balance of * @return The number of tokens held */ function balanceOf(address account) external view returns (uint) { return balances[account]; } /** * @notice Transfer `amount` tokens from `msg.sender` to `dst` * @param dst The address of the destination account * @param rawAmount The number of tokens to transfer * @return Whether or not the transfer succeeded */ function transfer(address dst, uint rawAmount) external validLock returns (bool) { uint96 amount = safe96(rawAmount, "VRT::transfer: amount exceeds 96 bits"); _transferTokens(msg.sender, dst, amount); return true; } /** * @notice Transfer `amount` tokens from `src` to `dst` * @param src The address of the source account * @param dst The address of the destination account * @param rawAmount The number of tokens to transfer * @return Whether or not the transfer succeeded */ function transferFrom(address src, address dst, uint rawAmount) external validLock returns (bool) { address spender = msg.sender; uint96 spenderAllowance = allowances[src][spender]; uint96 amount = safe96(rawAmount, "VRT::approve: amount exceeds 96 bits"); if (spender != src && spenderAllowance != uint96(-1)) { uint96 newAllowance = sub96(spenderAllowance, amount, "VRT::transferFrom: transfer amount exceeds spender allowance"); allowances[src][spender] = newAllowance; emit Approval(src, spender, newAllowance); } _transferTokens(src, dst, amount); return true; } /** * @notice Delegate votes from `msg.sender` to `delegatee` * @param delegatee The address to delegate votes to */ function delegate(address delegatee) public validLock { return _delegate(msg.sender, delegatee); } /** * @notice Delegates votes from signatory to `delegatee` * @param delegatee The address to delegate votes to * @param nonce The contract state required to match the signature * @param expiry The time at which to expire the signature * @param v The recovery byte of the signature * @param r Half of the ECDSA signature pair * @param s Half of the ECDSA signature pair */ function delegateBySig(address delegatee, uint nonce, uint expiry, uint8 v, bytes32 r, bytes32 s) public validLock { bytes32 domainSeparator = keccak256(abi.encode(DOMAIN_TYPEHASH, keccak256(bytes(name)), getChainId(), address(this))); bytes32 structHash = keccak256(abi.encode(DELEGATION_TYPEHASH, delegatee, nonce, expiry)); bytes32 digest = keccak256(abi.encodePacked("\x19\x01", domainSeparator, structHash)); address signatory = ecrecover(digest, v, r, s); require(signatory != address(0), "VRT::delegateBySig: invalid signature"); require(nonce == nonces[signatory]++, "VRT::delegateBySig: invalid nonce"); require(now <= expiry, "VRT::delegateBySig: signature expired"); return _delegate(signatory, delegatee); } /** * @notice Gets the current votes balance for `account` * @param account The address to get votes balance * @return The number of current votes for `account` */ function getCurrentVotes(address account) external view returns (uint96) { uint32 nCheckpoints = numCheckpoints[account]; return nCheckpoints > 0 ? checkpoints[account][nCheckpoints - 1].votes : 0; } /** * @notice Determine the prior number of votes for an account as of a block number * @dev Block number must be a finalized block or else this function will revert to prevent misinformation. * @param account The address of the account to check * @param blockNumber The block number to get the vote balance at * @return The number of votes the account had as of the given block */ function getPriorVotes(address account, uint blockNumber) public view returns (uint96) { require(blockNumber < block.number, "VRT::getPriorVotes: not yet determined"); uint32 nCheckpoints = numCheckpoints[account]; if (nCheckpoints == 0) { return 0; } // First check most recent balance if (checkpoints[account][nCheckpoints - 1].fromBlock <= blockNumber) { return checkpoints[account][nCheckpoints - 1].votes; } // Next check implicit zero balance if (checkpoints[account][0].fromBlock > blockNumber) { return 0; } uint32 lower = 0; uint32 upper = nCheckpoints - 1; while (upper > lower) { uint32 center = upper - (upper - lower) / 2; // ceil, avoiding overflow Checkpoint memory cp = checkpoints[account][center]; if (cp.fromBlock == blockNumber) { return cp.votes; } else if (cp.fromBlock < blockNumber) { lower = center; } else { upper = center - 1; } } return checkpoints[account][lower].votes; } function _delegate(address delegator, address delegatee) internal { address currentDelegate = delegates[delegator]; uint96 delegatorBalance = balances[delegator]; delegates[delegator] = delegatee; emit DelegateChanged(delegator, currentDelegate, delegatee); _moveDelegates(currentDelegate, delegatee, delegatorBalance); } function _transferTokens(address src, address dst, uint96 amount) internal { require(src != address(0), "VRT::_transferTokens: cannot transfer from the zero address"); require(dst != address(0), "VRT::_transferTokens: cannot transfer to the zero address"); balances[src] = sub96(balances[src], amount, "VRT::_transferTokens: transfer amount exceeds balance"); balances[dst] = add96(balances[dst], amount, "VRT::_transferTokens: transfer amount overflows"); emit Transfer(src, dst, amount); _moveDelegates(delegates[src], delegates[dst], amount); } function _moveDelegates(address srcRep, address dstRep, uint96 amount) internal { if (srcRep != dstRep && amount > 0) { if (srcRep != address(0)) { uint32 srcRepNum = numCheckpoints[srcRep]; uint96 srcRepOld = srcRepNum > 0 ? checkpoints[srcRep][srcRepNum - 1].votes : 0; uint96 srcRepNew = sub96(srcRepOld, amount, "VRT::_moveVotes: vote amount underflows"); _writeCheckpoint(srcRep, srcRepNum, srcRepOld, srcRepNew); } if (dstRep != address(0)) { uint32 dstRepNum = numCheckpoints[dstRep]; uint96 dstRepOld = dstRepNum > 0 ? checkpoints[dstRep][dstRepNum - 1].votes : 0; uint96 dstRepNew = add96(dstRepOld, amount, "VRT::_moveVotes: vote amount overflows"); _writeCheckpoint(dstRep, dstRepNum, dstRepOld, dstRepNew); } } } function _writeCheckpoint(address delegatee, uint32 nCheckpoints, uint96 oldVotes, uint96 newVotes) internal { uint32 blockNumber = safe32(block.number, "VRT::_writeCheckpoint: block number exceeds 32 bits"); if (nCheckpoints > 0 && checkpoints[delegatee][nCheckpoints - 1].fromBlock == blockNumber) { checkpoints[delegatee][nCheckpoints - 1].votes = newVotes; } else { checkpoints[delegatee][nCheckpoints] = Checkpoint(blockNumber, newVotes); numCheckpoints[delegatee] = nCheckpoints + 1; } emit DelegateVotesChanged(delegatee, oldVotes, newVotes); } function safe32(uint n, string memory errorMessage) internal pure returns (uint32) { require(n < 2**32, errorMessage); return uint32(n); } function safe96(uint n, string memory errorMessage) internal pure returns (uint96) { require(n < 2**96, errorMessage); return uint96(n); } function add96(uint96 a, uint96 b, string memory errorMessage) internal pure returns (uint96) { uint96 c = a + b; require(c >= a, errorMessage); return c; } function sub96(uint96 a, uint96 b, string memory errorMessage) internal pure returns (uint96) { require(b <= a, errorMessage); return a - b; } function getChainId() internal pure returns (uint) { uint256 chainId; assembly { chainId := chainid() } return chainId; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"account","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"delegator","type":"address"},{"indexed":true,"internalType":"address","name":"fromDelegate","type":"address"},{"indexed":true,"internalType":"address","name":"toDelegate","type":"address"}],"name":"DelegateChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"delegate","type":"address"},{"indexed":false,"internalType":"uint256","name":"previousBalance","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newBalance","type":"uint256"}],"name":"DelegateVotesChanged","type":"event"},{"anonymous":false,"inputs":[],"name":"Freezed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_from","type":"address"},{"indexed":true,"internalType":"address","name":"_to","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[],"name":"UnFreezed","type":"event"},{"constant":true,"inputs":[],"name":"DELEGATION_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"DOMAIN_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"rawAmount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint32","name":"","type":"uint32"}],"name":"checkpoints","outputs":[{"internalType":"uint32","name":"fromBlock","type":"uint32"},{"internalType":"uint96","name":"votes","type":"uint96"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"delegatee","type":"address"}],"name":"delegate","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"delegatee","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"expiry","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"delegateBySig","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"delegates","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"freeze","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getCurrentVotes","outputs":[{"internalType":"uint96","name":"","type":"uint96"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"getPriorVotes","outputs":[{"internalType":"uint96","name":"","type":"uint96"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"numCheckpoints","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"dst","type":"address"},{"internalType":"uint256","name":"rawAmount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"src","type":"address"},{"internalType":"address","name":"dst","type":"address"},{"internalType":"uint256","name":"rawAmount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"unfreeze","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
608060405260008060146101000a81548160ff021916908360ff16021790555034801561002b57600080fd5b506040516133893803806133898339818101604052602081101561004e57600080fd5b8101908080519060200190929190505050336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506b60ef6b1aba6f072330000000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6b60ef6b1aba6f0723300000006040518082815260200191505060405180910390a3506131ee8061019b6000396000f3fe608060405234801561001057600080fd5b506004361061014d5760003560e01c806370a08231116100c3578063b4b5ea571161007c578063b4b5ea57146106c2578063c3cda52014610736578063dd62ed3e146107af578063e7a324dc14610827578063f1127ed814610845578063f2fde38b146108dc5761014d565b806370a0823114610461578063782d6fe1146104b95780637ecebe00146105375780638da5cb5b1461058f57806395d89b41146105d9578063a9059cbb1461065c5761014d565b8063313ce56711610115578063313ce567146102fd578063587cde1e146103215780635c19a95c146103a557806362a5af3b146103e95780636a28f000146103f35780636fcfff45146103fd5761014d565b806306fdde0314610152578063095ea7b3146101d557806318160ddd1461023b57806320606b701461025957806323b872dd14610277575b600080fd5b61015a610920565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561019a57808201518184015260208101905061017f565b50505050905090810190601f1680156101c75780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610221600480360360408110156101eb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610959565b604051808215151515815260200191505060405180910390f35b610243610b82565b6040518082815260200191505060405180910390f35b610261610b92565b6040518082815260200191505060405180910390f35b6102e36004803603606081101561028d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610bae565b604051808215151515815260200191505060405180910390f35b610305610ed8565b604051808260ff1660ff16815260200191505060405180910390f35b6103636004803603602081101561033757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610edd565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6103e7600480360360208110156103bb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610f10565b005b6103f1610fa4565b005b6103fb6110b0565b005b61043f6004803603602081101561041357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506111bb565b604051808263ffffffff1663ffffffff16815260200191505060405180910390f35b6104a36004803603602081101561047757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506111de565b6040518082815260200191505060405180910390f35b610505600480360360408110156104cf57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061124d565b60405180826bffffffffffffffffffffffff166bffffffffffffffffffffffff16815260200191505060405180910390f35b6105796004803603602081101561054d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611676565b6040518082815260200191505060405180910390f35b61059761168e565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6105e16116b3565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610621578082015181840152602081019050610606565b50505050905090810190601f16801561064e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6106a86004803603604081101561067257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506116ec565b604051808215151515815260200191505060405180910390f35b610704600480360360208110156106d857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506117b1565b60405180826bffffffffffffffffffffffff166bffffffffffffffffffffffff16815260200191505060405180910390f35b6107ad600480360360c081101561074c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190803560ff169060200190929190803590602001909291908035906020019092919050505061189f565b005b610811600480360360408110156107c557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611cd7565b6040518082815260200191505060405180910390f35b61082f611d84565b6040518082815260200191505060405180910390f35b6108976004803603604081101561085b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803563ffffffff169060200190929190505050611da0565b604051808363ffffffff1663ffffffff168152602001826bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020019250505060405180910390f35b61091e600480360360208110156108f257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611df9565b005b6040518060400160405280601281526020017f56656e75732052657761726420546f6b656e000000000000000000000000000081525081565b600080600060149054906101000a900460ff1660ff16146109e2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f546f6b656e206973206c6f636b6564000000000000000000000000000000000081525060200191505060405180910390fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831415610a34577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9050610a59565b610a56836040518060600160405280602481526020016130cf60249139611f79565b90505b80600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405180826bffffffffffffffffffffffff16815260200191505060405180910390a3600191505092915050565b6b60ef6b1aba6f07233000000081565b6040518080612fd6604391396043019050604051809103902081565b600080600060149054906101000a900460ff1660ff1614610c37576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f546f6b656e206973206c6f636b6564000000000000000000000000000000000081525060200191505060405180910390fd5b60003390506000600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a90046bffffffffffffffffffffffff1690506000610cf9856040518060600160405280602481526020016130cf60249139611f79565b90508673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015610d7357507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6bffffffffffffffffffffffff16826bffffffffffffffffffffffff1614155b15610ebf576000610d9d83836040518060600160405280603c8152602001612f9a603c913961203c565b905080600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055508373ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405180826bffffffffffffffffffffffff16815260200191505060405180910390a3505b610eca878783612112565b600193505050509392505050565b601281565b60036020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060149054906101000a900460ff1660ff1614610f97576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f546f6b656e206973206c6f636b6564000000000000000000000000000000000081525060200191505060405180910390fd5b610fa1338261252d565b50565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611066576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f53686f756c64206265206f776e6572000000000000000000000000000000000081525060200191505060405180910390fd5b6001600060146101000a81548160ff021916908360ff1602179055507f962a6139ca22015759d0878e2cf5d770dcb8152e1d5ba08e46a969dd9b154a9c60405160405180910390a1565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611172576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f53686f756c64206265206f776e6572000000000000000000000000000000000081525060200191505060405180910390fd5b60008060146101000a81548160ff021916908360ff1602179055507ff0daac2271a735ea786b9adf80dfcbd6a3cbd52f3cab0a78337114692d5faf5d60405160405180910390a1565b60056020528060005260406000206000915054906101000a900463ffffffff1681565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff169050919050565b60004382106112a7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180612f536026913960400191505060405180910390fd5b6000600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900463ffffffff16905060008163ffffffff161415611314576000915050611670565b82600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001840363ffffffff1663ffffffff16815260200190815260200160002060000160009054906101000a900463ffffffff1663ffffffff161161141657600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001830363ffffffff1663ffffffff16815260200190815260200160002060000160049054906101000a90046bffffffffffffffffffffffff16915050611670565b82600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008063ffffffff16815260200190815260200160002060000160009054906101000a900463ffffffff1663ffffffff161115611497576000915050611670565b600080905060006001830390505b8163ffffffff168163ffffffff1611156115f2576000600283830363ffffffff16816114cd57fe5b04820390506114da612ea0565b600460008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008363ffffffff1663ffffffff1681526020019081526020016000206040518060400160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff1681525050905086816000015163ffffffff1614156115ca57806020015195505050505050611670565b86816000015163ffffffff1610156115e4578193506115eb565b6001820392505b50506114a5565b600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008363ffffffff1663ffffffff16815260200190815260200160002060000160049054906101000a90046bffffffffffffffffffffffff1693505050505b92915050565b60066020528060005260406000206000915090505481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6040518060400160405280600381526020017f565254000000000000000000000000000000000000000000000000000000000081525081565b600080600060149054906101000a900460ff1660ff1614611775576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f546f6b656e206973206c6f636b6564000000000000000000000000000000000081525060200191505060405180910390fd5b60006117998360405180606001604052806025815260200161308360259139611f79565b90506117a6338583612112565b600191505092915050565b600080600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900463ffffffff16905060008163ffffffff161161181b576000611897565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001830363ffffffff1663ffffffff16815260200190815260200160002060000160049054906101000a90046bffffffffffffffffffffffff165b915050919050565b60008060149054906101000a900460ff1660ff1614611926576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f546f6b656e206973206c6f636b6564000000000000000000000000000000000081525060200191505060405180910390fd5b60006040518080612fd660439139604301905060405180910390206040518060400160405280601281526020017f56656e75732052657761726420546f6b656e0000000000000000000000000000815250805190602001206119866126ed565b30604051602001808581526020018481526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001945050505050604051602081830303815290604052805190602001209050600060405180806130f3603a9139603a0190506040518091039020888888604051602001808581526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018281526020019450505050506040516020818303038152906040528051906020012090506000828260405160200180807f190100000000000000000000000000000000000000000000000000000000000081525060020183815260200182815260200192505050604051602081830303815290604052805190602001209050600060018288888860405160008152602001604052604051808581526020018460ff1660ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015611b31573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611bc3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806131956025913960400191505060405180910390fd5b600660008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190600101919050558914611c68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180612f796021913960400191505060405180910390fd5b87421115611cc1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180612f2e6025913960400191505060405180910390fd5b611ccb818b61252d565b50505050505050505050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff16905092915050565b60405180806130f3603a9139603a019050604051809103902081565b6004602052816000526040600020602052806000526040600020600091509150508060000160009054906101000a900463ffffffff16908060000160049054906101000a90046bffffffffffffffffffffffff16905082565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611ebb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f53686f756c64206265206f776e6572000000000000000000000000000000000081525060200191505060405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350565b60006c0100000000000000000000000083108290612032576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611ff7578082015181840152602081019050611fdc565b50505050905090810190601f1680156120245780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5082905092915050565b6000836bffffffffffffffffffffffff16836bffffffffffffffffffffffff1611158290612105576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156120ca5780820151818401526020810190506120af565b50505050905090810190601f1680156120f75780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5082840390509392505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612198576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603b815260200180613048603b913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561221e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526039815260200180612ef56039913960400191505060405180910390fd5b612298600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a90046bffffffffffffffffffffffff16826040518060600160405280603581526020016131606035913961203c565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff16021790555061237f600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a90046bffffffffffffffffffffffff16826040518060600160405280602f8152602001613019602f91396126fa565b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405180826bffffffffffffffffffffffff16815260200191505060405180910390a3612528600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836127d5565b505050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a90046bffffffffffffffffffffffff16905082600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f60405160405180910390a46126e78284836127d5565b50505050565b6000804690508091505090565b6000808385019050846bffffffffffffffffffffffff16816bffffffffffffffffffffffff16101583906127c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561278e578082015181840152602081019050612773565b50505050905090810190601f1680156127bb5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50809150509392505050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561281f57506000816bffffffffffffffffffffffff16115b15612acb57600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614612977576000600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900463ffffffff1690506000808263ffffffff16116128c257600061293e565b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001840363ffffffff1663ffffffff16815260200190815260200160002060000160049054906101000a90046bffffffffffffffffffffffff165b9050600061296582856040518060600160405280602781526020016130a86027913961203c565b905061297386848484612ad0565b5050505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614612aca576000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900463ffffffff1690506000808263ffffffff1611612a15576000612a91565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001840363ffffffff1663ffffffff16815260200190815260200160002060000160049054906101000a90046bffffffffffffffffffffffff165b90506000612ab88285604051806060016040528060268152602001612ecf602691396126fa565b9050612ac685848484612ad0565b5050505b5b505050565b6000612af44360405180606001604052806033815260200161312d60339139612de5565b905060008463ffffffff16118015612b8957508063ffffffff16600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001870363ffffffff1663ffffffff16815260200190815260200160002060000160009054906101000a900463ffffffff1663ffffffff16145b15612c245781600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001870363ffffffff1663ffffffff16815260200190815260200160002060000160046101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550612d6c565b60405180604001604052808263ffffffff168152602001836bffffffffffffffffffffffff16815250600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008663ffffffff1663ffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff16021790555090505060018401600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548163ffffffff021916908363ffffffff1602179055505b8473ffffffffffffffffffffffffffffffffffffffff167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724848460405180836bffffffffffffffffffffffff168152602001826bffffffffffffffffffffffff1681526020019250505060405180910390a25050505050565b600064010000000083108290612e96576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612e5b578082015181840152602081019050612e40565b50505050905090810190601f168015612e885780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5082905092915050565b6040518060400160405280600063ffffffff16815260200160006bffffffffffffffffffffffff168152509056fe5652543a3a5f6d6f7665566f7465733a20766f746520616d6f756e74206f766572666c6f77735652543a3a5f7472616e73666572546f6b656e733a2063616e6e6f74207472616e7366657220746f20746865207a65726f20616464726573735652543a3a64656c656761746542795369673a207369676e617475726520657870697265645652543a3a6765745072696f72566f7465733a206e6f74207965742064657465726d696e65645652543a3a64656c656761746542795369673a20696e76616c6964206e6f6e63655652543a3a7472616e7366657246726f6d3a207472616e7366657220616d6f756e742065786365656473207370656e64657220616c6c6f77616e6365454950373132446f6d61696e28737472696e67206e616d652c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e7472616374295652543a3a5f7472616e73666572546f6b656e733a207472616e7366657220616d6f756e74206f766572666c6f77735652543a3a5f7472616e73666572546f6b656e733a2063616e6e6f74207472616e736665722066726f6d20746865207a65726f20616464726573735652543a3a7472616e736665723a20616d6f756e74206578636565647320393620626974735652543a3a5f6d6f7665566f7465733a20766f746520616d6f756e7420756e646572666c6f77735652543a3a617070726f76653a20616d6f756e742065786365656473203936206269747344656c65676174696f6e28616464726573732064656c6567617465652c75696e74323536206e6f6e63652c75696e7432353620657870697279295652543a3a5f7772697465436865636b706f696e743a20626c6f636b206e756d626572206578636565647320333220626974735652543a3a5f7472616e73666572546f6b656e733a207472616e7366657220616d6f756e7420657863656564732062616c616e63655652543a3a64656c656761746542795369673a20696e76616c6964207369676e6174757265a265627a7a723158203494f815882953d92a7b64bd99851a866b2ea45bf18682a1852accff81d796e964736f6c634300051100320000000000000000000000001ca3ac3686071be692be7f1fbecd668641476d7e
Deployed Bytecode
0x608060405234801561001057600080fd5b506004361061014d5760003560e01c806370a08231116100c3578063b4b5ea571161007c578063b4b5ea57146106c2578063c3cda52014610736578063dd62ed3e146107af578063e7a324dc14610827578063f1127ed814610845578063f2fde38b146108dc5761014d565b806370a0823114610461578063782d6fe1146104b95780637ecebe00146105375780638da5cb5b1461058f57806395d89b41146105d9578063a9059cbb1461065c5761014d565b8063313ce56711610115578063313ce567146102fd578063587cde1e146103215780635c19a95c146103a557806362a5af3b146103e95780636a28f000146103f35780636fcfff45146103fd5761014d565b806306fdde0314610152578063095ea7b3146101d557806318160ddd1461023b57806320606b701461025957806323b872dd14610277575b600080fd5b61015a610920565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561019a57808201518184015260208101905061017f565b50505050905090810190601f1680156101c75780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610221600480360360408110156101eb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610959565b604051808215151515815260200191505060405180910390f35b610243610b82565b6040518082815260200191505060405180910390f35b610261610b92565b6040518082815260200191505060405180910390f35b6102e36004803603606081101561028d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610bae565b604051808215151515815260200191505060405180910390f35b610305610ed8565b604051808260ff1660ff16815260200191505060405180910390f35b6103636004803603602081101561033757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610edd565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6103e7600480360360208110156103bb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610f10565b005b6103f1610fa4565b005b6103fb6110b0565b005b61043f6004803603602081101561041357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506111bb565b604051808263ffffffff1663ffffffff16815260200191505060405180910390f35b6104a36004803603602081101561047757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506111de565b6040518082815260200191505060405180910390f35b610505600480360360408110156104cf57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061124d565b60405180826bffffffffffffffffffffffff166bffffffffffffffffffffffff16815260200191505060405180910390f35b6105796004803603602081101561054d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611676565b6040518082815260200191505060405180910390f35b61059761168e565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6105e16116b3565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610621578082015181840152602081019050610606565b50505050905090810190601f16801561064e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6106a86004803603604081101561067257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506116ec565b604051808215151515815260200191505060405180910390f35b610704600480360360208110156106d857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506117b1565b60405180826bffffffffffffffffffffffff166bffffffffffffffffffffffff16815260200191505060405180910390f35b6107ad600480360360c081101561074c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190803560ff169060200190929190803590602001909291908035906020019092919050505061189f565b005b610811600480360360408110156107c557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611cd7565b6040518082815260200191505060405180910390f35b61082f611d84565b6040518082815260200191505060405180910390f35b6108976004803603604081101561085b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803563ffffffff169060200190929190505050611da0565b604051808363ffffffff1663ffffffff168152602001826bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020019250505060405180910390f35b61091e600480360360208110156108f257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611df9565b005b6040518060400160405280601281526020017f56656e75732052657761726420546f6b656e000000000000000000000000000081525081565b600080600060149054906101000a900460ff1660ff16146109e2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f546f6b656e206973206c6f636b6564000000000000000000000000000000000081525060200191505060405180910390fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831415610a34577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9050610a59565b610a56836040518060600160405280602481526020016130cf60249139611f79565b90505b80600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405180826bffffffffffffffffffffffff16815260200191505060405180910390a3600191505092915050565b6b60ef6b1aba6f07233000000081565b6040518080612fd6604391396043019050604051809103902081565b600080600060149054906101000a900460ff1660ff1614610c37576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f546f6b656e206973206c6f636b6564000000000000000000000000000000000081525060200191505060405180910390fd5b60003390506000600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a90046bffffffffffffffffffffffff1690506000610cf9856040518060600160405280602481526020016130cf60249139611f79565b90508673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015610d7357507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6bffffffffffffffffffffffff16826bffffffffffffffffffffffff1614155b15610ebf576000610d9d83836040518060600160405280603c8152602001612f9a603c913961203c565b905080600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055508373ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405180826bffffffffffffffffffffffff16815260200191505060405180910390a3505b610eca878783612112565b600193505050509392505050565b601281565b60036020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060149054906101000a900460ff1660ff1614610f97576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f546f6b656e206973206c6f636b6564000000000000000000000000000000000081525060200191505060405180910390fd5b610fa1338261252d565b50565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611066576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f53686f756c64206265206f776e6572000000000000000000000000000000000081525060200191505060405180910390fd5b6001600060146101000a81548160ff021916908360ff1602179055507f962a6139ca22015759d0878e2cf5d770dcb8152e1d5ba08e46a969dd9b154a9c60405160405180910390a1565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611172576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f53686f756c64206265206f776e6572000000000000000000000000000000000081525060200191505060405180910390fd5b60008060146101000a81548160ff021916908360ff1602179055507ff0daac2271a735ea786b9adf80dfcbd6a3cbd52f3cab0a78337114692d5faf5d60405160405180910390a1565b60056020528060005260406000206000915054906101000a900463ffffffff1681565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff169050919050565b60004382106112a7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180612f536026913960400191505060405180910390fd5b6000600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900463ffffffff16905060008163ffffffff161415611314576000915050611670565b82600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001840363ffffffff1663ffffffff16815260200190815260200160002060000160009054906101000a900463ffffffff1663ffffffff161161141657600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001830363ffffffff1663ffffffff16815260200190815260200160002060000160049054906101000a90046bffffffffffffffffffffffff16915050611670565b82600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008063ffffffff16815260200190815260200160002060000160009054906101000a900463ffffffff1663ffffffff161115611497576000915050611670565b600080905060006001830390505b8163ffffffff168163ffffffff1611156115f2576000600283830363ffffffff16816114cd57fe5b04820390506114da612ea0565b600460008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008363ffffffff1663ffffffff1681526020019081526020016000206040518060400160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff1681525050905086816000015163ffffffff1614156115ca57806020015195505050505050611670565b86816000015163ffffffff1610156115e4578193506115eb565b6001820392505b50506114a5565b600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008363ffffffff1663ffffffff16815260200190815260200160002060000160049054906101000a90046bffffffffffffffffffffffff1693505050505b92915050565b60066020528060005260406000206000915090505481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6040518060400160405280600381526020017f565254000000000000000000000000000000000000000000000000000000000081525081565b600080600060149054906101000a900460ff1660ff1614611775576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f546f6b656e206973206c6f636b6564000000000000000000000000000000000081525060200191505060405180910390fd5b60006117998360405180606001604052806025815260200161308360259139611f79565b90506117a6338583612112565b600191505092915050565b600080600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900463ffffffff16905060008163ffffffff161161181b576000611897565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001830363ffffffff1663ffffffff16815260200190815260200160002060000160049054906101000a90046bffffffffffffffffffffffff165b915050919050565b60008060149054906101000a900460ff1660ff1614611926576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f546f6b656e206973206c6f636b6564000000000000000000000000000000000081525060200191505060405180910390fd5b60006040518080612fd660439139604301905060405180910390206040518060400160405280601281526020017f56656e75732052657761726420546f6b656e0000000000000000000000000000815250805190602001206119866126ed565b30604051602001808581526020018481526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001945050505050604051602081830303815290604052805190602001209050600060405180806130f3603a9139603a0190506040518091039020888888604051602001808581526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018281526020019450505050506040516020818303038152906040528051906020012090506000828260405160200180807f190100000000000000000000000000000000000000000000000000000000000081525060020183815260200182815260200192505050604051602081830303815290604052805190602001209050600060018288888860405160008152602001604052604051808581526020018460ff1660ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015611b31573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611bc3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806131956025913960400191505060405180910390fd5b600660008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190600101919050558914611c68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180612f796021913960400191505060405180910390fd5b87421115611cc1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180612f2e6025913960400191505060405180910390fd5b611ccb818b61252d565b50505050505050505050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff16905092915050565b60405180806130f3603a9139603a019050604051809103902081565b6004602052816000526040600020602052806000526040600020600091509150508060000160009054906101000a900463ffffffff16908060000160049054906101000a90046bffffffffffffffffffffffff16905082565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611ebb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f53686f756c64206265206f776e6572000000000000000000000000000000000081525060200191505060405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350565b60006c0100000000000000000000000083108290612032576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611ff7578082015181840152602081019050611fdc565b50505050905090810190601f1680156120245780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5082905092915050565b6000836bffffffffffffffffffffffff16836bffffffffffffffffffffffff1611158290612105576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156120ca5780820151818401526020810190506120af565b50505050905090810190601f1680156120f75780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5082840390509392505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612198576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603b815260200180613048603b913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561221e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526039815260200180612ef56039913960400191505060405180910390fd5b612298600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a90046bffffffffffffffffffffffff16826040518060600160405280603581526020016131606035913961203c565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff16021790555061237f600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a90046bffffffffffffffffffffffff16826040518060600160405280602f8152602001613019602f91396126fa565b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405180826bffffffffffffffffffffffff16815260200191505060405180910390a3612528600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836127d5565b505050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a90046bffffffffffffffffffffffff16905082600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f60405160405180910390a46126e78284836127d5565b50505050565b6000804690508091505090565b6000808385019050846bffffffffffffffffffffffff16816bffffffffffffffffffffffff16101583906127c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561278e578082015181840152602081019050612773565b50505050905090810190601f1680156127bb5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50809150509392505050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561281f57506000816bffffffffffffffffffffffff16115b15612acb57600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614612977576000600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900463ffffffff1690506000808263ffffffff16116128c257600061293e565b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001840363ffffffff1663ffffffff16815260200190815260200160002060000160049054906101000a90046bffffffffffffffffffffffff165b9050600061296582856040518060600160405280602781526020016130a86027913961203c565b905061297386848484612ad0565b5050505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614612aca576000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900463ffffffff1690506000808263ffffffff1611612a15576000612a91565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001840363ffffffff1663ffffffff16815260200190815260200160002060000160049054906101000a90046bffffffffffffffffffffffff165b90506000612ab88285604051806060016040528060268152602001612ecf602691396126fa565b9050612ac685848484612ad0565b5050505b5b505050565b6000612af44360405180606001604052806033815260200161312d60339139612de5565b905060008463ffffffff16118015612b8957508063ffffffff16600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001870363ffffffff1663ffffffff16815260200190815260200160002060000160009054906101000a900463ffffffff1663ffffffff16145b15612c245781600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001870363ffffffff1663ffffffff16815260200190815260200160002060000160046101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550612d6c565b60405180604001604052808263ffffffff168152602001836bffffffffffffffffffffffff16815250600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008663ffffffff1663ffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff16021790555090505060018401600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548163ffffffff021916908363ffffffff1602179055505b8473ffffffffffffffffffffffffffffffffffffffff167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724848460405180836bffffffffffffffffffffffff168152602001826bffffffffffffffffffffffff1681526020019250505060405180910390a25050505050565b600064010000000083108290612e96576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612e5b578082015181840152602081019050612e40565b50505050905090810190601f168015612e885780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5082905092915050565b6040518060400160405280600063ffffffff16815260200160006bffffffffffffffffffffffff168152509056fe5652543a3a5f6d6f7665566f7465733a20766f746520616d6f756e74206f766572666c6f77735652543a3a5f7472616e73666572546f6b656e733a2063616e6e6f74207472616e7366657220746f20746865207a65726f20616464726573735652543a3a64656c656761746542795369673a207369676e617475726520657870697265645652543a3a6765745072696f72566f7465733a206e6f74207965742064657465726d696e65645652543a3a64656c656761746542795369673a20696e76616c6964206e6f6e63655652543a3a7472616e7366657246726f6d3a207472616e7366657220616d6f756e742065786365656473207370656e64657220616c6c6f77616e6365454950373132446f6d61696e28737472696e67206e616d652c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e7472616374295652543a3a5f7472616e73666572546f6b656e733a207472616e7366657220616d6f756e74206f766572666c6f77735652543a3a5f7472616e73666572546f6b656e733a2063616e6e6f74207472616e736665722066726f6d20746865207a65726f20616464726573735652543a3a7472616e736665723a20616d6f756e74206578636565647320393620626974735652543a3a5f6d6f7665566f7465733a20766f746520616d6f756e7420756e646572666c6f77735652543a3a617070726f76653a20616d6f756e742065786365656473203936206269747344656c65676174696f6e28616464726573732064656c6567617465652c75696e74323536206e6f6e63652c75696e7432353620657870697279295652543a3a5f7772697465436865636b706f696e743a20626c6f636b206e756d626572206578636565647320333220626974735652543a3a5f7472616e73666572546f6b656e733a207472616e7366657220616d6f756e7420657863656564732062616c616e63655652543a3a64656c656761746542795369673a20696e76616c6964207369676e6174757265a265627a7a723158203494f815882953d92a7b64bd99851a866b2ea45bf18682a1852accff81d796e964736f6c63430005110032
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000001ca3ac3686071be692be7f1fbecd668641476d7e
-----Decoded View---------------
Arg [0] : account (address): 0x1ca3Ac3686071be692be7f1FBeCd668641476D7e
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000001ca3ac3686071be692be7f1fbecd668641476d7e
Deployed Bytecode Sourcemap
948:12795:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;948:12795:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1031:50;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;1031:50:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4489:428;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4489:428:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1341:49;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2273:122;;;:::i;:::-;;;;;;;;;;;;;;;;;;;6049:680;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6049:680:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1242:35;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1723:45;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1723:45:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;6877:112;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6877:112:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;743:93;;;:::i;:::-;;844:97;;;:::i;:::-;;2151:49;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2151:49:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;5120:108;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5120:108:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;9073:1217;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9073:1217:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;2687:39;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2687:39:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;52:20;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1142:37;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;1142:37:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5492:247;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5492:247:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;8420:222;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;8420:222:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;7423:796;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;7423:796:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;3969:136;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3969:136:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2489:117;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2012:70;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2012:70:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;331:150;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;331:150:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;1031:50;;;;;;;;;;;;;;;;;;;:::o;4489:428::-;4567:4;694:1;682:8;;;;;;;;;;;:13;;;674:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4584:13;4630:2;4612:9;:21;4608:172;;;4666:2;4650:19;;4608:172;;;4711:57;4718:9;4711:57;;;;;;;;;;;;;;;;;:6;:57::i;:::-;4702:66;;4608:172;4826:6;4792:10;:22;4803:10;4792:22;;;;;;;;;;;;;;;:31;4815:7;4792:31;;;;;;;;;;;;;;;;:40;;;;;;;;;;;;;;;;;;4871:7;4850:37;;4859:10;4850:37;;;4880:6;4850:37;;;;;;;;;;;;;;;;;;;;4905:4;4898:11;;;4489:428;;;;:::o;1341:49::-;1376:14;1341:49;:::o;2273:122::-;2315:80;;;;;;;;;;;;;;;;;;;2273:122;:::o;6049:680::-;6141:4;694:1;682:8;;;;;;;;;;;:13;;;674:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6158:15;6176:10;6158:28;;6197:23;6223:10;:15;6234:3;6223:15;;;;;;;;;;;;;;;:24;6239:7;6223:24;;;;;;;;;;;;;;;;;;;;;;;;;6197:50;;6258:13;6274:57;6281:9;6274:57;;;;;;;;;;;;;;;;;:6;:57::i;:::-;6258:73;;6359:3;6348:14;;:7;:14;;;;:48;;;;;6393:2;6366:30;;:16;:30;;;;6348:48;6344:310;;;6413:19;6435:95;6441:16;6459:6;6435:95;;;;;;;;;;;;;;;;;:5;:95::i;:::-;6413:117;;6572:12;6545:10;:15;6556:3;6545:15;;;;;;;;;;;;;;;:24;6561:7;6545:24;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;6620:7;6606:36;;6615:3;6606:36;;;6629:12;6606:36;;;;;;;;;;;;;;;;;;;;6344:310;;6666:33;6682:3;6687;6692:6;6666:15;:33::i;:::-;6717:4;6710:11;;;;;6049:680;;;;;:::o;1242:35::-;1275:2;1242:35;:::o;1723:45::-;;;;;;;;;;;;;;;;;;;;;;:::o;6877:112::-;694:1;682:8;;;;;;;;;;;:13;;;674:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6949:32;6959:10;6971:9;6949;:32::i;:::-;6877:112;:::o;743:93::-;278:5;;;;;;;;;;;264:19;;:10;:19;;;256:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;800:1;789:8;;:12;;;;;;;;;;;;;;;;;;819:9;;;;;;;;;;743:93::o;844:97::-;278:5;;;;;;;;;;;264:19;;:10;:19;;;256:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;903:1;892:8;;:12;;;;;;;;;;;;;;;;;;922:11;;;;;;;;;;844:97::o;2151:49::-;;;;;;;;;;;;;;;;;;;;;;:::o;5120:108::-;5179:4;5203:8;:17;5212:7;5203:17;;;;;;;;;;;;;;;;;;;;;;;;;5196:24;;;;5120:108;;;:::o;9073:1217::-;9152:6;9193:12;9179:11;:26;9171:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9261:19;9283:14;:23;9298:7;9283:23;;;;;;;;;;;;;;;;;;;;;;;;;9261:45;;9337:1;9321:12;:17;;;9317:58;;;9362:1;9355:8;;;;;9317:58;9487:11;9435;:20;9447:7;9435:20;;;;;;;;;;;;;;;:38;9471:1;9456:12;:16;9435:38;;;;;;;;;;;;;;;:48;;;;;;;;;;;;:63;;;9431:147;;9522:11;:20;9534:7;9522:20;;;;;;;;;;;;;;;:38;9558:1;9543:12;:16;9522:38;;;;;;;;;;;;;;;:44;;;;;;;;;;;;9515:51;;;;;9431:147;9675:11;9639;:20;9651:7;9639:20;;;;;;;;;;;;;;;:23;9660:1;9639:23;;;;;;;;;;;;;:33;;;;;;;;;;;;:47;;;9635:88;;;9710:1;9703:8;;;;;9635:88;9735:12;9750:1;9735:16;;9762:12;9792:1;9777:12;:16;9762:31;;9804:428;9819:5;9811:13;;:5;:13;;;9804:428;;;9841:13;9883:1;9874:5;9866;:13;9865:19;;;;;;;;9857:5;:27;9841:43;;9926:20;;:::i;:::-;9949:11;:20;9961:7;9949:20;;;;;;;;;;;;;;;:28;9970:6;9949:28;;;;;;;;;;;;;;;9926:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10012:11;9996:2;:12;;;:27;;;9992:229;;;10051:2;:8;;;10044:15;;;;;;;;;9992:229;10100:11;10085:2;:12;;;:26;;;10081:140;;;10140:6;10132:14;;10081:140;;;10204:1;10195:6;:10;10187:18;;10081:140;9804:428;;;;;10249:11;:20;10261:7;10249:20;;;;;;;;;;;;;;;:27;10270:5;10249:27;;;;;;;;;;;;;;;:33;;;;;;;;;;;;10242:40;;;;;9073:1217;;;;;:::o;2687:39::-;;;;;;;;;;;;;;;;;:::o;52:20::-;;;;;;;;;;;;;:::o;1142:37::-;;;;;;;;;;;;;;;;;;;:::o;5492:247::-;5567:4;694:1;682:8;;;;;;;;;;;:13;;;674:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5584:13;5600:58;5607:9;5600:58;;;;;;;;;;;;;;;;;:6;:58::i;:::-;5584:74;;5669:40;5685:10;5697:3;5702:6;5669:15;:40::i;:::-;5727:4;5720:11;;;5492:247;;;;:::o;8420:222::-;8485:6;8504:19;8526:14;:23;8541:7;8526:23;;;;;;;;;;;;;;;;;;;;;;;;;8504:45;;8582:1;8567:12;:16;;;:67;;8633:1;8567:67;;;8586:11;:20;8598:7;8586:20;;;;;;;;;;;;;;;:38;8622:1;8607:12;:16;8586:38;;;;;;;;;;;;;;;:44;;;;;;;;;;;;8567:67;8560:74;;;8420:222;;;:::o;7423:796::-;694:1;682:8;;;;;;;;;;;:13;;;674:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7549:23;2315:80;;;;;;;;;;;;;;;;;;;7629:4;;;;;;;;;;;;;;;;;7613:22;;;;;;7637:12;:10;:12::i;:::-;7659:4;7585:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;7585:80:0;;;7575:91;;;;;;7549:117;;7677:18;2535:71;;;;;;;;;;;;;;;;;;;7740:9;7751:5;7758:6;7708:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;7708:57:0;;;7698:68;;;;;;7677:89;;7777:14;7833:15;7850:10;7804:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;7804:57:0;;;7794:68;;;;;;7777:85;;7873:17;7893:26;7903:6;7911:1;7914;7917;7893:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7893:26:0;;;;;;;;7873:46;;7959:1;7938:23;;:9;:23;;;;7930:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8031:6;:17;8038:9;8031:17;;;;;;;;;;;;;;;;:19;;;;;;;;;;;;8022:5;:28;8014:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8114:6;8107:3;:13;;8099:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8180:31;8190:9;8201;8180;:31::i;:::-;8173:38;;;;7423:796;;;;;;:::o;3969:136::-;4045:4;4069:10;:19;4080:7;4069:19;;;;;;;;;;;;;;;:28;4089:7;4069:28;;;;;;;;;;;;;;;;;;;;;;;;;4062:35;;;;3969:136;;;;:::o;2489:117::-;2535:71;;;;;;;;;;;;;;;;;;;2489:117;:::o;2012:70::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;331:150::-;278:5;;;;;;;;;;;264:19;;:10;:19;;;256:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;412:8;404:5;;:16;;;;;;;;;;;;;;;;;;464:8;436:37;;457:5;;;;;;;;;;;436:37;;;;;;;;;;;;331:150;:::o;13049:161::-;13124:6;13155:5;13151:1;:9;13162:12;13143:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;13143:32:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13200:1;13186:16;;13049:161;;;;:::o;13414:165::-;13500:6;13532:1;13527:6;;:1;:6;;;;13535:12;13519:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;13519:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13570:1;13566;:5;13559:12;;13414:165;;;;;:::o;10681:610::-;10790:1;10775:17;;:3;:17;;;;10767:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10890:1;10875:17;;:3;:17;;;;10867:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10983:85;10989:8;:13;10998:3;10989:13;;;;;;;;;;;;;;;;;;;;;;;;;11004:6;10983:85;;;;;;;;;;;;;;;;;:5;:85::i;:::-;10967:8;:13;10976:3;10967:13;;;;;;;;;;;;;;;;:101;;;;;;;;;;;;;;;;;;11095:79;11101:8;:13;11110:3;11101:13;;;;;;;;;;;;;;;;;;;;;;;;;11116:6;11095:79;;;;;;;;;;;;;;;;;:5;:79::i;:::-;11079:8;:13;11088:3;11079:13;;;;;;;;;;;;;;;;:95;;;;;;;;;;;;;;;;;;11204:3;11190:26;;11199:3;11190:26;;;11209:6;11190:26;;;;;;;;;;;;;;;;;;;;11229:54;11244:9;:14;11254:3;11244:14;;;;;;;;;;;;;;;;;;;;;;;;;11260:9;:14;11270:3;11260:14;;;;;;;;;;;;;;;;;;;;;;;;;11276:6;11229:14;:54::i;:::-;10681:610;;;:::o;10298:375::-;10375:23;10401:9;:20;10411:9;10401:20;;;;;;;;;;;;;;;;;;;;;;;;;10375:46;;10432:23;10458:8;:19;10467:9;10458:19;;;;;;;;;;;;;;;;;;;;;;;;;10432:45;;10511:9;10488;:20;10498:9;10488:20;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;10582:9;10538:54;;10565:15;10538:54;;10554:9;10538:54;;;;;;;;;;;;10605:60;10620:15;10637:9;10648:16;10605:14;:60::i;:::-;10298:375;;;;:::o;13587:153::-;13632:4;13649:15;13697:9;13686:20;;13725:7;13718:14;;;13587:153;:::o;13218:188::-;13304:6;13323:8;13338:1;13334;:5;13323:16;;13363:1;13358:6;;:1;:6;;;;13366:12;13350:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;13350:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13397:1;13390:8;;;13218:188;;;;;:::o;11299:937::-;11404:6;11394:16;;:6;:16;;;;:30;;;;;11423:1;11414:6;:10;;;11394:30;11390:839;;;11463:1;11445:20;;:6;:20;;;11441:381;;11486:16;11505:14;:22;11520:6;11505:22;;;;;;;;;;;;;;;;;;;;;;;;;11486:41;;11546:16;11577:1;11565:9;:13;;;:60;;11624:1;11565:60;;;11581:11;:19;11593:6;11581:19;;;;;;;;;;;;;;;:34;11613:1;11601:9;:13;11581:34;;;;;;;;;;;;;;;:40;;;;;;;;;;;;11565:60;11546:79;;11644:16;11663:67;11669:9;11680:6;11663:67;;;;;;;;;;;;;;;;;:5;:67::i;:::-;11644:86;;11749:57;11766:6;11774:9;11785;11796;11749:16;:57::i;:::-;11441:381;;;;11860:1;11842:20;;:6;:20;;;11838:380;;11883:16;11902:14;:22;11917:6;11902:22;;;;;;;;;;;;;;;;;;;;;;;;;11883:41;;11943:16;11974:1;11962:9;:13;;;:60;;12021:1;11962:60;;;11978:11;:19;11990:6;11978:19;;;;;;;;;;;;;;;:34;12010:1;11998:9;:13;11978:34;;;;;;;;;;;;;;;:40;;;;;;;;;;;;11962:60;11943:79;;12041:16;12060:66;12066:9;12077:6;12060:66;;;;;;;;;;;;;;;;;:5;:66::i;:::-;12041:85;;12145:57;12162:6;12170:9;12181;12192;12145:16;:57::i;:::-;11838:380;;;;11390:839;11299:937;;;:::o;12244:628::-;12362:18;12383:75;12390:12;12383:75;;;;;;;;;;;;;;;;;:6;:75::i;:::-;12362:96;;12488:1;12473:12;:16;;;:85;;;;;12547:11;12493:65;;:11;:22;12505:9;12493:22;;;;;;;;;;;;;;;:40;12531:1;12516:12;:16;12493:40;;;;;;;;;;;;;;;:50;;;;;;;;;;;;:65;;;12473:85;12469:329;;;12622:8;12573:11;:22;12585:9;12573:22;;;;;;;;;;;;;;;:40;12611:1;12596:12;:16;12573:40;;;;;;;;;;;;;;;:46;;;:57;;;;;;;;;;;;;;;;;;12469:329;;;12698:33;;;;;;;;12709:11;12698:33;;;;;;12722:8;12698:33;;;;;12659:11;:22;12671:9;12659:22;;;;;;;;;;;;;;;:36;12682:12;12659:36;;;;;;;;;;;;;;;:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12787:1;12772:12;:16;12744:14;:25;12759:9;12744:25;;;;;;;;;;;;;;;;:44;;;;;;;;;;;;;;;;;;12469:329;12834:9;12813:51;;;12845:8;12855;12813:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;12244:628;;;;;:::o;12880:161::-;12955:6;12986:5;12982:1;:9;12993:12;12974:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;12974:32:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13031:1;13017:16;;12880:161;;;;:::o;948:12795::-;;;;;;;;;;;;;;;;;;;;;;;:::o
Swarm Source
bzzr://3494f815882953d92a7b64bd99851a866b2ea45bf18682a1852accff81d796e9
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.