Source Code
Overview
ETH Balance
0 ETH
Token Holdings
More Info
ContractCreator
TokenTracker
Multi Chain
Multichain Addresses
6 addresses found via
Latest 25 from a total of 131 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
Value | ||||
---|---|---|---|---|---|---|---|---|---|
Approve | 9369325 | 68 days 14 hrs ago | IN | 0 ETH | 0.00007058 | ||||
Approve | 9369325 | 68 days 14 hrs ago | IN | 0 ETH | 0.00004705 | ||||
Approve | 9350727 | 72 days 3 hrs ago | IN | 0 ETH | 0.00013683 | ||||
Approve | 9350678 | 72 days 3 hrs ago | IN | 0 ETH | 0.00013759 | ||||
Approve | 9350662 | 72 days 3 hrs ago | IN | 0 ETH | 0.00015908 | ||||
Approve | 9350602 | 72 days 3 hrs ago | IN | 0 ETH | 0.00013276 | ||||
Approve | 9337541 | 74 days 12 hrs ago | IN | 0 ETH | 0.00009414 | ||||
Approve | 9337528 | 74 days 13 hrs ago | IN | 0 ETH | 0.00009414 | ||||
Approve | 9336741 | 74 days 16 hrs ago | IN | 0 ETH | 0.00007207 | ||||
Approve | 9336728 | 74 days 16 hrs ago | IN | 0 ETH | 0.00009411 | ||||
Approve | 9336725 | 74 days 16 hrs ago | IN | 0 ETH | 0.00009411 | ||||
Approve | 9336374 | 74 days 17 hrs ago | IN | 0 ETH | 0.00005989 | ||||
Approve | 9331220 | 75 days 16 hrs ago | IN | 0 ETH | 0.00009414 | ||||
Approve | 9331200 | 75 days 16 hrs ago | IN | 0 ETH | 0.00009414 | ||||
Approve | 9331185 | 75 days 16 hrs ago | IN | 0 ETH | 0.00009409 | ||||
Approve | 9331178 | 75 days 16 hrs ago | IN | 0 ETH | 0.00009411 | ||||
Approve | 9331165 | 75 days 16 hrs ago | IN | 0 ETH | 0.0000706 | ||||
Approve | 9329960 | 75 days 21 hrs ago | IN | 0 ETH | 0.00004705 | ||||
Approve | 9329949 | 75 days 21 hrs ago | IN | 0 ETH | 0.00004493 | ||||
Approve | 9329863 | 75 days 22 hrs ago | IN | 0 ETH | 0.0000706 | ||||
Approve | 9329672 | 75 days 22 hrs ago | IN | 0 ETH | 0.00009414 | ||||
Approve | 9329482 | 75 days 23 hrs ago | IN | 0 ETH | 0.00007058 | ||||
Approve | 9328861 | 76 days 2 hrs ago | IN | 0 ETH | 0.00009414 | ||||
Approve | 9328852 | 76 days 2 hrs ago | IN | 0 ETH | 0.00005417 | ||||
Approve | 9328841 | 76 days 2 hrs ago | IN | 0 ETH | 0.00000379 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Txn Hash | Block | From | To | Value | ||
---|---|---|---|---|---|---|
9487270 | 47 days 12 hrs ago | 0 ETH | ||||
9369327 | 68 days 14 hrs ago | 0 ETH | ||||
9369327 | 68 days 14 hrs ago | 0 ETH | ||||
9359240 | 70 days 12 hrs ago | 0 ETH | ||||
9359231 | 70 days 13 hrs ago | 0 ETH | ||||
9356263 | 71 days 2 hrs ago | 0 ETH | ||||
9356247 | 71 days 2 hrs ago | 0 ETH | ||||
9351364 | 72 days 23 mins ago | 0 ETH | ||||
9350839 | 72 days 2 hrs ago | 0 ETH | ||||
9350835 | 72 days 2 hrs ago | 0 ETH | ||||
9350732 | 72 days 3 hrs ago | 0 ETH | ||||
9350681 | 72 days 3 hrs ago | 0 ETH | ||||
9350667 | 72 days 3 hrs ago | 0 ETH | ||||
9350606 | 72 days 3 hrs ago | 0 ETH | ||||
9347921 | 72 days 15 hrs ago | 0 ETH | ||||
9337559 | 74 days 12 hrs ago | 0 ETH | ||||
9337531 | 74 days 13 hrs ago | 0 ETH | ||||
9337523 | 74 days 13 hrs ago | 0 ETH | ||||
9336378 | 74 days 17 hrs ago | 0 ETH | ||||
9335668 | 74 days 20 hrs ago | 0 ETH | ||||
9335121 | 74 days 23 hrs ago | 0 ETH | ||||
9332655 | 75 days 10 hrs ago | 0 ETH | ||||
9331224 | 75 days 16 hrs ago | 0 ETH | ||||
9331204 | 75 days 16 hrs ago | 0 ETH | ||||
9331189 | 75 days 16 hrs ago | 0 ETH |
Loading...
Loading
Contract Name:
vEth2
Compiler Version
v0.7.5+commit.eb77ed08
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-05-24 */ pragma solidity 0.7.5; pragma experimental ABIEncoderV2; // SPDX-License-Identifier: MIT // From https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/math/Math.sol // Subject to the MIT license. /** * @dev Wrappers over Solidity's arithmetic operations with added overflow * checks. * * Arithmetic operations in Solidity wrap on overflow. This can easily result * in bugs, because programmers usually assume that an overflow raises an * error, which is the standard behavior in high level programming languages. * `SafeMath` restores this intuition by reverting the transaction when an * operation overflows. * * Using this library instead of the unchecked operations eliminates an entire * class of bugs, so it's recommended to use it always. */ library SafeMath { /** * @dev Returns the addition of two unsigned integers, reverting on overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } /** * @dev Returns the addition of two unsigned integers, reverting with custom message on overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * - Addition cannot overflow. */ function add( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, errorMessage); return c; } /** * @dev Returns the subtraction of two unsigned integers, reverting on underflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * - Subtraction cannot underflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction underflow"); } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on underflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * - Subtraction cannot underflow. */ function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } /** * @dev Returns the multiplication of two unsigned integers, reverting on overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } /** * @dev Returns the multiplication of two unsigned integers, reverting on overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * - Multiplication cannot overflow. */ function mul( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, errorMessage); return c; } /** * @dev Returns the integer division of two unsigned integers. * Reverts on division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } /** * @dev Returns the integer division of two unsigned integers. * Reverts with custom message on division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * - The divisor cannot be zero. */ function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { // Solidity only automatically asserts when dividing by 0 require(b > 0, errorMessage); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts with custom message when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * - The divisor cannot be zero. */ function mod( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } } contract vEth2 { /// @notice EIP-20 token name for this token string public constant name = "validator-Eth2"; /// @notice EIP-20 token symbol for this token string public constant symbol = "vETH2"; /// @notice EIP-20 token decimals for this token uint8 public constant decimals = 18; /// @notice Total number of tokens in circulation uint256 public totalSupply; /// @notice Address which may mint new tokens address public minter; /// @notice The timestamp after which minting may occur uint256 public mintingAllowedAfter; /// @notice Minimum time between mints // Flash mint protection uint32 public constant minimumTimeBetweenMints = 1; //Allowance amounts on behalf of others mapping(address => mapping(address => uint96)) internal allowances; // 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 The EIP-712 typehash for the permit struct used by the contract bytes32 public constant PERMIT_TYPEHASH = keccak256("Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)"); /// @notice A record of states for signing / validating signatures mapping(address => uint256) public nonces; /// @notice An event thats emitted when the minter address is changed event MinterChanged(address minter, address newMinter); /// @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, uint256 previousBalance, uint256 newBalance); /// @notice The standard EIP-20 transfer event event Transfer(address indexed from, address indexed to, uint256 amount); /// @notice The standard EIP-20 approval event event Approval(address indexed owner, address indexed spender, uint256 amount); /** * @notice Construct a new Uni token * @param account The initial account to grant all the tokens * @param minter_ The account with minting ability * @param mintingAllowedAfter_ The timestamp after which minting may occur */ constructor( address account, address minter_, uint256 mintingAllowedAfter_ ) { require(mintingAllowedAfter_ >= block.timestamp, "vETH2::constructor: minting can only begin after deployment"); balances[account] = uint96(totalSupply); emit Transfer(address(0), account, totalSupply); minter = minter_; emit MinterChanged(address(0), minter); mintingAllowedAfter = mintingAllowedAfter_; } /** * @notice Change the minter address * @param minter_ The address of the new minter */ function setMinter(address minter_) external { require(msg.sender == minter, "vETH2::setMinter: only the minter can change the minter address"); emit MinterChanged(minter, minter_); minter = minter_; } /** * @notice Mint new tokens * @param dst The address of the destination account * @param rawAmount The number of tokens to be minted */ function mint(address dst, uint256 rawAmount) external { require(msg.sender == minter, "vETH2::mint: only the minter can mint"); require(block.timestamp >= mintingAllowedAfter, "vETH2::mint: minting not allowed yet"); require(dst != address(0), "vETH2::mint: cannot transfer to the zero address"); // record the mint mintingAllowedAfter = SafeMath.add(block.timestamp, minimumTimeBetweenMints); // mint the amount uint96 amount = safe96(rawAmount, "vETH2::mint: amount exceeds 96 bits"); totalSupply = safe96(SafeMath.add(totalSupply, amount), "vETH2::mint: totalSupply exceeds 96 bits"); // transfer the amount to the recipient balances[dst] = add96(balances[dst], amount, "vETH2::mint: transfer amount overflows"); emit Transfer(address(0), dst, amount); // move delegates _moveDelegates(address(0), delegates[dst], amount); } function burn(address src, uint256 rawAmount) external { require(msg.sender == minter, "vETH2::burn: only the minter can burn"); require(block.timestamp >= mintingAllowedAfter, "vETH2::burn: minting not allowed yet"); uint96 amount = safe96(rawAmount, "vETH2::burn: amount exceeds 96 bits"); require(amount <= totalSupply, "vETH2::burn: exceededed total supply"); mintingAllowedAfter = SafeMath.add(block.timestamp, minimumTimeBetweenMints); totalSupply = safe96(SafeMath.sub(totalSupply, amount), "vETH2::burn: totalSupply exceeds 96 bits"); // transfer the amount to the recipient balances[src] = sub96(balances[src], amount, "vETH2::burn: transfer amount overflows"); emit Transfer(src, address(0), amount); // move delegates _moveDelegates(delegates[src], address(0), amount); } /** * @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 (uint256) { return allowances[account][spender]; } /** * @notice Approve `spender` to transfer up to `amount` from `src` * @dev This will overwrite the approval amount for `spender` * and is subject to issues noted [here](https://eips.ethereum.org/EIPS/eip-20#approve) * @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, uint256 rawAmount) external returns (bool) { uint96 amount; if (rawAmount == uint256(-1)) { amount = uint96(-1); } else { amount = safe96(rawAmount, "vETH2::approve: amount exceeds 96 bits"); } allowances[msg.sender][spender] = amount; emit Approval(msg.sender, spender, amount); return true; } /** * @notice Triggers an approval from owner to spends * @param owner The address to approve from * @param spender The address to be approved * @param rawAmount The number of tokens that are approved (2^256-1 means infinite) * @param deadline 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 permit( address owner, address spender, uint256 rawAmount, uint256 deadline, uint8 v, bytes32 r, bytes32 s ) external { uint96 amount; if (rawAmount == uint256(-1)) { amount = uint96(-1); } else { amount = safe96(rawAmount, "vETH2::permit: amount exceeds 96 bits"); } bytes32 domainSeparator = keccak256( abi.encode(DOMAIN_TYPEHASH, keccak256(bytes(name)), getChainId(), address(this)) ); bytes32 structHash = keccak256( abi.encode(PERMIT_TYPEHASH, owner, spender, rawAmount, nonces[owner]++, deadline) ); bytes32 digest = keccak256(abi.encodePacked("\x19\x01", domainSeparator, structHash)); address signatory = ecrecover(digest, v, r, s); require(signatory != address(0), "vETH2::permit: invalid signature"); require(signatory == owner, "vETH2::permit: unauthorized"); require(block.timestamp <= deadline, "vETH2::permit: signature expired"); allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } /** * @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 (uint256) { 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, uint256 rawAmount) external returns (bool) { uint96 amount = safe96(rawAmount, "vETH2::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, uint256 rawAmount ) external returns (bool) { address spender = msg.sender; uint96 spenderAllowance = allowances[src][spender]; uint96 amount = safe96(rawAmount, "vETH2::approve: amount exceeds 96 bits"); if (spender != src && spenderAllowance != uint96(-1)) { uint96 newAllowance = sub96( spenderAllowance, amount, "vETH2::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 { 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, uint256 nonce, uint256 expiry, uint8 v, bytes32 r, bytes32 s ) public { 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), "vETH2::delegateBySig: invalid signature"); require(nonce == nonces[signatory]++, "vETH2::delegateBySig: invalid nonce"); require(block.timestamp <= expiry, "vETH2::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, uint256 blockNumber) public view returns (uint96) { require(blockNumber < block.number, "vETH2::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), "vETH2::_transferTokens: cannot transfer from the zero address"); require(dst != address(0), "vETH2::_transferTokens: cannot transfer to the zero address"); balances[src] = sub96(balances[src], amount, "vETH2::_transferTokens: transfer amount exceeds balance"); balances[dst] = add96(balances[dst], amount, "vETH2::_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, "vETH2::_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, "vETH2::_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, "vETH2::_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(uint256 n, string memory errorMessage) internal pure returns (uint32) { require(n < 2**32, errorMessage); return uint32(n); } function safe96(uint256 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 (uint256) { uint256 chainId; assembly { chainId := chainid() } return chainId; } }
[{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"minter_","type":"address"},{"internalType":"uint256","name":"mintingAllowedAfter_","type":"uint256"}],"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":[{"indexed":false,"internalType":"address","name":"minter","type":"address"},{"indexed":false,"internalType":"address","name":"newMinter","type":"address"}],"name":"MinterChanged","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"},{"inputs":[],"name":"DELEGATION_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DOMAIN_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PERMIT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"rawAmount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"src","type":"address"},{"internalType":"uint256","name":"rawAmount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"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"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"delegatee","type":"address"}],"name":"delegate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"delegatee","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"expiry","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"delegateBySig","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"delegates","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getCurrentVotes","outputs":[{"internalType":"uint96","name":"","type":"uint96"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"getPriorVotes","outputs":[{"internalType":"uint96","name":"","type":"uint96"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minimumTimeBetweenMints","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"dst","type":"address"},{"internalType":"uint256","name":"rawAmount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"minter","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mintingAllowedAfter","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"numCheckpoints","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"rawAmount","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"minter_","type":"address"}],"name":"setMinter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"dst","type":"address"},{"internalType":"uint256","name":"rawAmount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"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"}],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60806040523480156200001157600080fd5b506040516200473938038062004739833981810160405281019062000037919062000234565b428110156200007d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620000749062000352565b60405180910390fd5b600054600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055508273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6000546040516200014f919062000374565b60405180910390a381600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f3b0007eb941cf645526cbb3a4fdaecda9d28ce4843167d9263b536a1f1edc0f66000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051620001ee92919062000325565b60405180910390a18060028190555050505062000450565b60008151905062000217816200041c565b92915050565b6000815190506200022e8162000436565b92915050565b6000806000606084860312156200024a57600080fd5b60006200025a8682870162000206565b93505060206200026d8682870162000206565b925050604062000280868287016200021d565b9150509250925092565b6200029581620003e0565b82525050565b620002a681620003a2565b82525050565b6000620002bb603b8362000391565b91507f76455448323a3a636f6e7374727563746f723a206d696e74696e672063616e2060008301527f6f6e6c7920626567696e206166746572206465706c6f796d656e7400000000006020830152604082019050919050565b6200031f81620003d6565b82525050565b60006040820190506200033c60008301856200028a565b6200034b60208301846200029b565b9392505050565b600060208201905081810360008301526200036d81620002ac565b9050919050565b60006020820190506200038b600083018462000314565b92915050565b600082825260208201905092915050565b6000620003af82620003b6565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000620003ed82620003f4565b9050919050565b6000620004018262000408565b9050919050565b60006200041582620003b6565b9050919050565b6200042781620003a2565b81146200043357600080fd5b50565b6200044181620003d6565b81146200044d57600080fd5b50565b6142d980620004606000396000f3fe608060405234801561001057600080fd5b50600436106101a95760003560e01c80636fcfff45116100f9578063b4b5ea5711610097578063dd62ed3e11610071578063dd62ed3e146104f8578063e7a324dc14610528578063f1127ed814610546578063fca3b5aa14610577576101a9565b8063b4b5ea5714610490578063c3cda520146104c0578063d505accf146104dc576101a9565b80637ecebe00116100d35780637ecebe00146103f657806395d89b41146104265780639dc29fac14610444578063a9059cbb14610460576101a9565b80636fcfff451461036657806370a0823114610396578063782d6fe1146103c6576101a9565b806330adf81f1161016657806340c10f191161014057806340c10f19146102e0578063587cde1e146102fc5780635c11d62f1461032c5780635c19a95c1461034a576101a9565b806330adf81f1461028657806330b36cef146102a4578063313ce567146102c2576101a9565b806306fdde03146101ae57806307546172146101cc578063095ea7b3146101ea57806318160ddd1461021a57806320606b701461023857806323b872dd14610256575b600080fd5b6101b6610593565b6040516101c39190613b87565b60405180910390f35b6101d46105cc565b6040516101e191906139dd565b60405180910390f35b61020460048036038101906101ff919061316f565b6105f2565b6040516102119190613a21565b60405180910390f35b610222610785565b60405161022f9190613dc9565b60405180910390f35b61024061078b565b60405161024d9190613a3c565b60405180910390f35b610270600480360381019061026b9190613082565b6107af565b60405161027d9190613a21565b60405180910390f35b61028e610a43565b60405161029b9190613a3c565b60405180910390f35b6102ac610a67565b6040516102b99190613dc9565b60405180910390f35b6102ca610a6d565b6040516102d79190613e28565b60405180910390f35b6102fa60048036038101906102f5919061316f565b610a72565b005b6103166004803603810190610311919061301d565b610e00565b60405161032391906139dd565b60405180910390f35b610334610e33565b6040516103419190613de4565b60405180910390f35b610364600480360381019061035f919061301d565b610e38565b005b610380600480360381019061037b919061301d565b610e45565b60405161038d9190613de4565b60405180910390f35b6103b060048036038101906103ab919061301d565b610e68565b6040516103bd9190613dc9565b60405180910390f35b6103e060048036038101906103db919061316f565b610ed7565b6040516103ed9190613e5e565b60405180910390f35b610410600480360381019061040b919061301d565b6112e6565b60405161041d9190613dc9565b60405180910390f35b61042e6112fe565b60405161043b9190613b87565b60405180910390f35b61045e6004803603810190610459919061316f565b611337565b005b61047a6004803603810190610475919061316f565b6116a8565b6040516104879190613a21565b60405180910390f35b6104aa60048036038101906104a5919061301d565b6116e5565b6040516104b79190613e5e565b60405180910390f35b6104da60048036038101906104d591906131ab565b6117d3565b005b6104f660048036038101906104f191906130d1565b611a90565b005b610512600480360381019061050d9190613046565b611efc565b60405161051f9190613dc9565b60405180910390f35b610530611fa9565b60405161053d9190613a3c565b60405180910390f35b610560600480360381019061055b9190613234565b611fcd565b60405161056e929190613dff565b60405180910390f35b610591600480360381019061058c919061301d565b612026565b005b6040518060400160405280600e81526020017f76616c696461746f722d4574683200000000000000000000000000000000000081525081565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831415610645577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff905061066a565b6106678360405180606001604052806026815260200161412b60269139612155565b90505b80600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516107729190613e43565b60405180910390a3600191505092915050565b60005481565b7f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b6000803390506000600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a90046bffffffffffffffffffffffff16905060006108728560405180606001604052806026815260200161412b60269139612155565b90508673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156108ec57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6bffffffffffffffffffffffff16826bffffffffffffffffffffffff1614155b15610a2a57600061091683836040518060600160405280603e8152602001614055603e91396121b3565b905080600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055508373ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610a209190613e43565b60405180910390a3505b610a35878783612224565b600193505050509392505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b60025481565b601281565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610b02576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610af990613c69565b60405180910390fd5b600254421015610b47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3e90613ce9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610bb7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bae90613ba9565b60405180910390fd5b610bc842600163ffffffff16612605565b6002819055506000610bf28260405180606001604052806023815260200161415160239139612155565b9050610c2f610c11600054836bffffffffffffffffffffffff16612605565b6040518060600160405280602881526020016141d160289139612155565b6bffffffffffffffffffffffff16600081905550610cbd600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a90046bffffffffffffffffffffffff168260405180606001604052806026815260200161427e6026913961265a565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055508273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610d889190613e43565b60405180910390a3610dfb6000600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836126d0565b505050565b60056020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600181565b610e4233826129cb565b50565b60076020528060005260406000206000915054906101000a900463ffffffff1681565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff169050919050565b6000438210610f1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1290613d49565b60405180910390fd5b6000600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900463ffffffff16905060008163ffffffff161415610f885760009150506112e0565b82600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001840363ffffffff1663ffffffff16815260200190815260200160002060000160009054906101000a900463ffffffff1663ffffffff161161108a57600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001830363ffffffff1663ffffffff16815260200190815260200160002060000160049054906101000a90046bffffffffffffffffffffffff169150506112e0565b82600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008063ffffffff16815260200190815260200160002060000160009054906101000a900463ffffffff1663ffffffff16111561110b5760009150506112e0565b6000806001830390505b8163ffffffff168163ffffffff161115611262576000600283830363ffffffff168161113d57fe5b048203905061114a612f86565b600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008363ffffffff1663ffffffff1681526020019081526020016000206040518060400160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff1681525050905086816000015163ffffffff16141561123a578060200151955050505050506112e0565b86816000015163ffffffff1610156112545781935061125b565b6001820392505b5050611115565b600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008363ffffffff1663ffffffff16815260200190815260200160002060000160049054906101000a90046bffffffffffffffffffffffff1693505050505b92915050565b60086020528060005260406000206000915090505481565b6040518060400160405280600581526020017f764554483200000000000000000000000000000000000000000000000000000081525081565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146113c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113be90613d29565b60405180910390fd5b60025442101561140c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140390613cc9565b60405180910390fd5b6000611430826040518060600160405280602381526020016140ba60239139612155565b9050600054816bffffffffffffffffffffffff161115611485576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147c90613c89565b60405180910390fd5b61149642600163ffffffff16612605565b6002819055506114d76114b9600054836bffffffffffffffffffffffff16612b8b565b6040518060600160405280602881526020016140dd60289139612155565b6bffffffffffffffffffffffff16600081905550611565600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a90046bffffffffffffffffffffffff1682604051806060016040528060268152602001614105602691396121b3565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516116309190613e43565b60405180910390a36116a3600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000836126d0565b505050565b6000806116cd8360405180606001604052806027815260200161409360279139612155565b90506116da338583612224565b600191505092915050565b600080600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900463ffffffff16905060008163ffffffff161161174f5760006117cb565b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001830363ffffffff1663ffffffff16815260200190815260200160002060000160049054906101000a90046bffffffffffffffffffffffff165b915050919050565b60007f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a8666040518060400160405280600e81526020017f76616c696461746f722d457468320000000000000000000000000000000000008152508051906020012061183b612bd5565b3060405160200161184f9493929190613afd565b60405160208183030381529060405280519060200120905060007fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf8888886040516020016118a09493929190613ab8565b604051602081830303815290604052805190602001209050600082826040516020016118cd9291906139a6565b60405160208183030381529060405280519060200120905060006001828888886040516000815260200160405260405161190a9493929190613b42565b6020604051602081039080840390855afa15801561192c573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156119a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161199f90613c09565b60405180910390fd5b600860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190600101919050558914611a37576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a2e90613c29565b60405180910390fd5b87421115611a7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a7190613d09565b60405180910390fd5b611a84818b6129cb565b50505050505050505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff861415611ae2577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9050611b07565b611b04866040518060600160405280602581526020016141f960259139612155565b90505b60007f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a8666040518060400160405280600e81526020017f76616c696461746f722d4574683200000000000000000000000000000000000081525080519060200120611b6f612bd5565b30604051602001611b839493929190613afd565b60405160208183030381529060405280519060200120905060007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98a8a8a600860008f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190600101919050558b604051602001611c2596959493929190613a57565b60405160208183030381529060405280519060200120905060008282604051602001611c529291906139a6565b604051602081830303815290604052805190602001209050600060018289898960405160008152602001604052604051611c8f9493929190613b42565b6020604051602081039080840390855afa158015611cb1573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611d2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d2490613da9565b60405180910390fd5b8b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614611d9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d9290613d89565b60405180910390fd5b88421115611dde576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dd590613ca9565b60405180910390fd5b84600360008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055508a73ffffffffffffffffffffffffffffffffffffffff168c73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92587604051611ee69190613e43565b60405180910390a3505050505050505050505050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff16905092915050565b7fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf81565b6006602052816000526040600020602052806000526040600020600091509150508060000160009054906101000a900463ffffffff16908060000160049054906101000a90046bffffffffffffffffffffffff16905082565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146120b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120ad90613d69565b60405180910390fd5b7f3b0007eb941cf645526cbb3a4fdaecda9d28ce4843167d9263b536a1f1edc0f6600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16826040516121099291906139f8565b60405180910390a180600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60006c01000000000000000000000000831082906121a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121a09190613b87565b60405180910390fd5b5082905092915050565b6000836bffffffffffffffffffffffff16836bffffffffffffffffffffffff1611158290612217576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161220e9190613b87565b60405180910390fd5b5082840390509392505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612294576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161228b90613c49565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612304576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122fb90613be9565b60405180910390fd5b61237e600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a90046bffffffffffffffffffffffff1682604051806060016040528060378152602001614247603791396121b3565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550612465600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a90046bffffffffffffffffffffffff16826040518060600160405280603181526020016140246031913961265a565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161252f9190613e43565b60405180910390a3612600600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836126d0565b505050565b600080828401905083811015612650576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161264790613bc9565b60405180910390fd5b8091505092915050565b6000808385019050846bffffffffffffffffffffffff16816bffffffffffffffffffffffff16101583906126c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126bb9190613b87565b60405180910390fd5b50809150509392505050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561271a57506000816bffffffffffffffffffffffff16115b156129c657600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614612872576000600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900463ffffffff1690506000808263ffffffff16116127bd576000612839565b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001840363ffffffff1663ffffffff16815260200190815260200160002060000160049054906101000a90046bffffffffffffffffffffffff165b90506000612860828560405180606001604052806029815260200161421e602991396121b3565b905061286e86848484612be2565b5050505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146129c5576000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900463ffffffff1690506000808263ffffffff161161291057600061298c565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001840363ffffffff1663ffffffff16815260200190815260200160002060000160049054906101000a90046bffffffffffffffffffffffff165b905060006129b382856040518060600160405280602881526020016141a96028913961265a565b90506129c185848484612be2565b5050505b5b505050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a90046bffffffffffffffffffffffff16905082600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f60405160405180910390a4612b858284836126d0565b50505050565b6000612bcd83836040518060400160405280601f81526020017f536166654d6174683a207375627472616374696f6e20756e646572666c6f7700815250612ed5565b905092915050565b6000804690508091505090565b6000612c064360405180606001604052806035815260200161417460359139612f30565b905060008463ffffffff16118015612c9b57508063ffffffff16600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001870363ffffffff1663ffffffff16815260200190815260200160002060000160009054906101000a900463ffffffff1663ffffffff16145b15612d365781600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001870363ffffffff1663ffffffff16815260200190815260200160002060000160046101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550612e7e565b60405180604001604052808263ffffffff168152602001836bffffffffffffffffffffffff16815250600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008663ffffffff1663ffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff16021790555090505060018401600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548163ffffffff021916908363ffffffff1602179055505b8473ffffffffffffffffffffffffffffffffffffffff167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a7248484604051612ec6929190613e79565b60405180910390a25050505050565b6000838311158290612f1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f149190613b87565b60405180910390fd5b5060008385039050809150509392505050565b600064010000000083108290612f7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f739190613b87565b60405180910390fd5b5082905092915050565b6040518060400160405280600063ffffffff16815260200160006bffffffffffffffffffffffff1681525090565b600081359050612fc381613fb0565b92915050565b600081359050612fd881613fc7565b92915050565b600081359050612fed81613fde565b92915050565b60008135905061300281613ff5565b92915050565b6000813590506130178161400c565b92915050565b60006020828403121561302f57600080fd5b600061303d84828501612fb4565b91505092915050565b6000806040838503121561305957600080fd5b600061306785828601612fb4565b925050602061307885828601612fb4565b9150509250929050565b60008060006060848603121561309757600080fd5b60006130a586828701612fb4565b93505060206130b686828701612fb4565b92505060406130c786828701612fde565b9150509250925092565b600080600080600080600060e0888a0312156130ec57600080fd5b60006130fa8a828b01612fb4565b975050602061310b8a828b01612fb4565b965050604061311c8a828b01612fde565b955050606061312d8a828b01612fde565b945050608061313e8a828b01613008565b93505060a061314f8a828b01612fc9565b92505060c06131608a828b01612fc9565b91505092959891949750929550565b6000806040838503121561318257600080fd5b600061319085828601612fb4565b92505060206131a185828601612fde565b9150509250929050565b60008060008060008060c087890312156131c457600080fd5b60006131d289828a01612fb4565b96505060206131e389828a01612fde565b95505060406131f489828a01612fde565b945050606061320589828a01613008565b935050608061321689828a01612fc9565b92505060a061322789828a01612fc9565b9150509295509295509295565b6000806040838503121561324757600080fd5b600061325585828601612fb4565b925050602061326685828601612ff3565b9150509250929050565b61327981613ec9565b82525050565b61328881613edb565b82525050565b61329781613ee7565b82525050565b6132ae6132a982613ee7565b613f95565b82525050565b60006132bf82613ea2565b6132c98185613ead565b93506132d9818560208601613f62565b6132e281613f9f565b840191505092915050565b60006132fa603083613ead565b91507f76455448323a3a6d696e743a2063616e6e6f74207472616e7366657220746f2060008301527f746865207a65726f2061646472657373000000000000000000000000000000006020830152604082019050919050565b6000613360600283613ebe565b91507f19010000000000000000000000000000000000000000000000000000000000006000830152600282019050919050565b60006133a0601b83613ead565b91507f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006000830152602082019050919050565b60006133e0603b83613ead565b91507f76455448323a3a5f7472616e73666572546f6b656e733a2063616e6e6f74207460008301527f72616e7366657220746f20746865207a65726f206164647265737300000000006020830152604082019050919050565b6000613446602783613ead565b91507f76455448323a3a64656c656761746542795369673a20696e76616c696420736960008301527f676e6174757265000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006134ac602383613ead565b91507f76455448323a3a64656c656761746542795369673a20696e76616c6964206e6f60008301527f6e636500000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613512603d83613ead565b91507f76455448323a3a5f7472616e73666572546f6b656e733a2063616e6e6f74207460008301527f72616e736665722066726f6d20746865207a65726f20616464726573730000006020830152604082019050919050565b6000613578602583613ead565b91507f76455448323a3a6d696e743a206f6e6c7920746865206d696e7465722063616e60008301527f206d696e740000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006135de602483613ead565b91507f76455448323a3a6275726e3a206578636565646564656420746f74616c20737560008301527f70706c79000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613644602083613ead565b91507f76455448323a3a7065726d69743a207369676e617475726520657870697265646000830152602082019050919050565b6000613684602483613ead565b91507f76455448323a3a6275726e3a206d696e74696e67206e6f7420616c6c6f77656460008301527f20796574000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006136ea602483613ead565b91507f76455448323a3a6d696e743a206d696e74696e67206e6f7420616c6c6f77656460008301527f20796574000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613750602783613ead565b91507f76455448323a3a64656c656761746542795369673a207369676e61747572652060008301527f65787069726564000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006137b6602583613ead565b91507f76455448323a3a6275726e3a206f6e6c7920746865206d696e7465722063616e60008301527f206275726e0000000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061381c602883613ead565b91507f76455448323a3a6765745072696f72566f7465733a206e6f742079657420646560008301527f7465726d696e65640000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613882603f83613ead565b91507f76455448323a3a7365744d696e7465723a206f6e6c7920746865206d696e746560008301527f722063616e206368616e676520746865206d696e7465722061646472657373006020830152604082019050919050565b60006138e8601b83613ead565b91507f76455448323a3a7065726d69743a20756e617574686f72697a656400000000006000830152602082019050919050565b6000613928602083613ead565b91507f76455448323a3a7065726d69743a20696e76616c6964207369676e61747572656000830152602082019050919050565b61396481613f11565b82525050565b61397381613f1b565b82525050565b61398281613f2b565b82525050565b61399181613f50565b82525050565b6139a081613f38565b82525050565b60006139b182613353565b91506139bd828561329d565b6020820191506139cd828461329d565b6020820191508190509392505050565b60006020820190506139f26000830184613270565b92915050565b6000604082019050613a0d6000830185613270565b613a1a6020830184613270565b9392505050565b6000602082019050613a36600083018461327f565b92915050565b6000602082019050613a51600083018461328e565b92915050565b600060c082019050613a6c600083018961328e565b613a796020830188613270565b613a866040830187613270565b613a93606083018661395b565b613aa0608083018561395b565b613aad60a083018461395b565b979650505050505050565b6000608082019050613acd600083018761328e565b613ada6020830186613270565b613ae7604083018561395b565b613af4606083018461395b565b95945050505050565b6000608082019050613b12600083018761328e565b613b1f602083018661328e565b613b2c604083018561395b565b613b396060830184613270565b95945050505050565b6000608082019050613b57600083018761328e565b613b646020830186613979565b613b71604083018561328e565b613b7e606083018461328e565b95945050505050565b60006020820190508181036000830152613ba181846132b4565b905092915050565b60006020820190508181036000830152613bc2816132ed565b9050919050565b60006020820190508181036000830152613be281613393565b9050919050565b60006020820190508181036000830152613c02816133d3565b9050919050565b60006020820190508181036000830152613c2281613439565b9050919050565b60006020820190508181036000830152613c428161349f565b9050919050565b60006020820190508181036000830152613c6281613505565b9050919050565b60006020820190508181036000830152613c828161356b565b9050919050565b60006020820190508181036000830152613ca2816135d1565b9050919050565b60006020820190508181036000830152613cc281613637565b9050919050565b60006020820190508181036000830152613ce281613677565b9050919050565b60006020820190508181036000830152613d02816136dd565b9050919050565b60006020820190508181036000830152613d2281613743565b9050919050565b60006020820190508181036000830152613d42816137a9565b9050919050565b60006020820190508181036000830152613d628161380f565b9050919050565b60006020820190508181036000830152613d8281613875565b9050919050565b60006020820190508181036000830152613da2816138db565b9050919050565b60006020820190508181036000830152613dc28161391b565b9050919050565b6000602082019050613dde600083018461395b565b92915050565b6000602082019050613df9600083018461396a565b92915050565b6000604082019050613e14600083018561396a565b613e216020830184613997565b9392505050565b6000602082019050613e3d6000830184613979565b92915050565b6000602082019050613e586000830184613988565b92915050565b6000602082019050613e736000830184613997565b92915050565b6000604082019050613e8e6000830185613988565b613e9b6020830184613988565b9392505050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b6000613ed482613ef1565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600063ffffffff82169050919050565b600060ff82169050919050565b60006bffffffffffffffffffffffff82169050919050565b6000613f5b82613f38565b9050919050565b60005b83811015613f80578082015181840152602081019050613f65565b83811115613f8f576000848401525b50505050565b6000819050919050565b6000601f19601f8301169050919050565b613fb981613ec9565b8114613fc457600080fd5b50565b613fd081613ee7565b8114613fdb57600080fd5b50565b613fe781613f11565b8114613ff257600080fd5b50565b613ffe81613f1b565b811461400957600080fd5b50565b61401581613f2b565b811461402057600080fd5b5056fe76455448323a3a5f7472616e73666572546f6b656e733a207472616e7366657220616d6f756e74206f766572666c6f777376455448323a3a7472616e7366657246726f6d3a207472616e7366657220616d6f756e742065786365656473207370656e64657220616c6c6f77616e636576455448323a3a7472616e736665723a20616d6f756e742065786365656473203936206269747376455448323a3a6275726e3a20616d6f756e742065786365656473203936206269747376455448323a3a6275726e3a20746f74616c537570706c792065786365656473203936206269747376455448323a3a6275726e3a207472616e7366657220616d6f756e74206f766572666c6f777376455448323a3a617070726f76653a20616d6f756e742065786365656473203936206269747376455448323a3a6d696e743a20616d6f756e742065786365656473203936206269747376455448323a3a5f7772697465436865636b706f696e743a20626c6f636b206e756d6265722065786365656473203332206269747376455448323a3a5f6d6f7665566f7465733a20766f746520616d6f756e74206f766572666c6f777376455448323a3a6d696e743a20746f74616c537570706c792065786365656473203936206269747376455448323a3a7065726d69743a20616d6f756e742065786365656473203936206269747376455448323a3a5f6d6f7665566f7465733a20766f746520616d6f756e7420756e646572666c6f777376455448323a3a5f7472616e73666572546f6b656e733a207472616e7366657220616d6f756e7420657863656564732062616c616e636576455448323a3a6d696e743a207472616e7366657220616d6f756e74206f766572666c6f7773a2646970667358221220d37881655b0532937a60b910d495285333d16d0b320149ba4c4163c2bfef3ca564736f6c634300070500330000000000000000000000004f2bd410b81ea24f83d1e807511baec204c4cf7a0000000000000000000000004f2bd410b81ea24f83d1e807511baec204c4cf7a00000000000000000000000000000000000000000000000000000000646e8107
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101a95760003560e01c80636fcfff45116100f9578063b4b5ea5711610097578063dd62ed3e11610071578063dd62ed3e146104f8578063e7a324dc14610528578063f1127ed814610546578063fca3b5aa14610577576101a9565b8063b4b5ea5714610490578063c3cda520146104c0578063d505accf146104dc576101a9565b80637ecebe00116100d35780637ecebe00146103f657806395d89b41146104265780639dc29fac14610444578063a9059cbb14610460576101a9565b80636fcfff451461036657806370a0823114610396578063782d6fe1146103c6576101a9565b806330adf81f1161016657806340c10f191161014057806340c10f19146102e0578063587cde1e146102fc5780635c11d62f1461032c5780635c19a95c1461034a576101a9565b806330adf81f1461028657806330b36cef146102a4578063313ce567146102c2576101a9565b806306fdde03146101ae57806307546172146101cc578063095ea7b3146101ea57806318160ddd1461021a57806320606b701461023857806323b872dd14610256575b600080fd5b6101b6610593565b6040516101c39190613b87565b60405180910390f35b6101d46105cc565b6040516101e191906139dd565b60405180910390f35b61020460048036038101906101ff919061316f565b6105f2565b6040516102119190613a21565b60405180910390f35b610222610785565b60405161022f9190613dc9565b60405180910390f35b61024061078b565b60405161024d9190613a3c565b60405180910390f35b610270600480360381019061026b9190613082565b6107af565b60405161027d9190613a21565b60405180910390f35b61028e610a43565b60405161029b9190613a3c565b60405180910390f35b6102ac610a67565b6040516102b99190613dc9565b60405180910390f35b6102ca610a6d565b6040516102d79190613e28565b60405180910390f35b6102fa60048036038101906102f5919061316f565b610a72565b005b6103166004803603810190610311919061301d565b610e00565b60405161032391906139dd565b60405180910390f35b610334610e33565b6040516103419190613de4565b60405180910390f35b610364600480360381019061035f919061301d565b610e38565b005b610380600480360381019061037b919061301d565b610e45565b60405161038d9190613de4565b60405180910390f35b6103b060048036038101906103ab919061301d565b610e68565b6040516103bd9190613dc9565b60405180910390f35b6103e060048036038101906103db919061316f565b610ed7565b6040516103ed9190613e5e565b60405180910390f35b610410600480360381019061040b919061301d565b6112e6565b60405161041d9190613dc9565b60405180910390f35b61042e6112fe565b60405161043b9190613b87565b60405180910390f35b61045e6004803603810190610459919061316f565b611337565b005b61047a6004803603810190610475919061316f565b6116a8565b6040516104879190613a21565b60405180910390f35b6104aa60048036038101906104a5919061301d565b6116e5565b6040516104b79190613e5e565b60405180910390f35b6104da60048036038101906104d591906131ab565b6117d3565b005b6104f660048036038101906104f191906130d1565b611a90565b005b610512600480360381019061050d9190613046565b611efc565b60405161051f9190613dc9565b60405180910390f35b610530611fa9565b60405161053d9190613a3c565b60405180910390f35b610560600480360381019061055b9190613234565b611fcd565b60405161056e929190613dff565b60405180910390f35b610591600480360381019061058c919061301d565b612026565b005b6040518060400160405280600e81526020017f76616c696461746f722d4574683200000000000000000000000000000000000081525081565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831415610645577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff905061066a565b6106678360405180606001604052806026815260200161412b60269139612155565b90505b80600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516107729190613e43565b60405180910390a3600191505092915050565b60005481565b7f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b6000803390506000600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a90046bffffffffffffffffffffffff16905060006108728560405180606001604052806026815260200161412b60269139612155565b90508673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156108ec57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6bffffffffffffffffffffffff16826bffffffffffffffffffffffff1614155b15610a2a57600061091683836040518060600160405280603e8152602001614055603e91396121b3565b905080600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055508373ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610a209190613e43565b60405180910390a3505b610a35878783612224565b600193505050509392505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b60025481565b601281565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610b02576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610af990613c69565b60405180910390fd5b600254421015610b47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3e90613ce9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610bb7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bae90613ba9565b60405180910390fd5b610bc842600163ffffffff16612605565b6002819055506000610bf28260405180606001604052806023815260200161415160239139612155565b9050610c2f610c11600054836bffffffffffffffffffffffff16612605565b6040518060600160405280602881526020016141d160289139612155565b6bffffffffffffffffffffffff16600081905550610cbd600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a90046bffffffffffffffffffffffff168260405180606001604052806026815260200161427e6026913961265a565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055508273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610d889190613e43565b60405180910390a3610dfb6000600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836126d0565b505050565b60056020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600181565b610e4233826129cb565b50565b60076020528060005260406000206000915054906101000a900463ffffffff1681565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff169050919050565b6000438210610f1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1290613d49565b60405180910390fd5b6000600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900463ffffffff16905060008163ffffffff161415610f885760009150506112e0565b82600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001840363ffffffff1663ffffffff16815260200190815260200160002060000160009054906101000a900463ffffffff1663ffffffff161161108a57600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001830363ffffffff1663ffffffff16815260200190815260200160002060000160049054906101000a90046bffffffffffffffffffffffff169150506112e0565b82600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008063ffffffff16815260200190815260200160002060000160009054906101000a900463ffffffff1663ffffffff16111561110b5760009150506112e0565b6000806001830390505b8163ffffffff168163ffffffff161115611262576000600283830363ffffffff168161113d57fe5b048203905061114a612f86565b600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008363ffffffff1663ffffffff1681526020019081526020016000206040518060400160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff1681525050905086816000015163ffffffff16141561123a578060200151955050505050506112e0565b86816000015163ffffffff1610156112545781935061125b565b6001820392505b5050611115565b600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008363ffffffff1663ffffffff16815260200190815260200160002060000160049054906101000a90046bffffffffffffffffffffffff1693505050505b92915050565b60086020528060005260406000206000915090505481565b6040518060400160405280600581526020017f764554483200000000000000000000000000000000000000000000000000000081525081565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146113c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113be90613d29565b60405180910390fd5b60025442101561140c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140390613cc9565b60405180910390fd5b6000611430826040518060600160405280602381526020016140ba60239139612155565b9050600054816bffffffffffffffffffffffff161115611485576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147c90613c89565b60405180910390fd5b61149642600163ffffffff16612605565b6002819055506114d76114b9600054836bffffffffffffffffffffffff16612b8b565b6040518060600160405280602881526020016140dd60289139612155565b6bffffffffffffffffffffffff16600081905550611565600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a90046bffffffffffffffffffffffff1682604051806060016040528060268152602001614105602691396121b3565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516116309190613e43565b60405180910390a36116a3600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000836126d0565b505050565b6000806116cd8360405180606001604052806027815260200161409360279139612155565b90506116da338583612224565b600191505092915050565b600080600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900463ffffffff16905060008163ffffffff161161174f5760006117cb565b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001830363ffffffff1663ffffffff16815260200190815260200160002060000160049054906101000a90046bffffffffffffffffffffffff165b915050919050565b60007f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a8666040518060400160405280600e81526020017f76616c696461746f722d457468320000000000000000000000000000000000008152508051906020012061183b612bd5565b3060405160200161184f9493929190613afd565b60405160208183030381529060405280519060200120905060007fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf8888886040516020016118a09493929190613ab8565b604051602081830303815290604052805190602001209050600082826040516020016118cd9291906139a6565b60405160208183030381529060405280519060200120905060006001828888886040516000815260200160405260405161190a9493929190613b42565b6020604051602081039080840390855afa15801561192c573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156119a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161199f90613c09565b60405180910390fd5b600860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190600101919050558914611a37576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a2e90613c29565b60405180910390fd5b87421115611a7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a7190613d09565b60405180910390fd5b611a84818b6129cb565b50505050505050505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff861415611ae2577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9050611b07565b611b04866040518060600160405280602581526020016141f960259139612155565b90505b60007f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a8666040518060400160405280600e81526020017f76616c696461746f722d4574683200000000000000000000000000000000000081525080519060200120611b6f612bd5565b30604051602001611b839493929190613afd565b60405160208183030381529060405280519060200120905060007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98a8a8a600860008f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190600101919050558b604051602001611c2596959493929190613a57565b60405160208183030381529060405280519060200120905060008282604051602001611c529291906139a6565b604051602081830303815290604052805190602001209050600060018289898960405160008152602001604052604051611c8f9493929190613b42565b6020604051602081039080840390855afa158015611cb1573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611d2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d2490613da9565b60405180910390fd5b8b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614611d9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d9290613d89565b60405180910390fd5b88421115611dde576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dd590613ca9565b60405180910390fd5b84600360008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055508a73ffffffffffffffffffffffffffffffffffffffff168c73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92587604051611ee69190613e43565b60405180910390a3505050505050505050505050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff16905092915050565b7fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf81565b6006602052816000526040600020602052806000526040600020600091509150508060000160009054906101000a900463ffffffff16908060000160049054906101000a90046bffffffffffffffffffffffff16905082565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146120b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120ad90613d69565b60405180910390fd5b7f3b0007eb941cf645526cbb3a4fdaecda9d28ce4843167d9263b536a1f1edc0f6600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16826040516121099291906139f8565b60405180910390a180600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60006c01000000000000000000000000831082906121a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121a09190613b87565b60405180910390fd5b5082905092915050565b6000836bffffffffffffffffffffffff16836bffffffffffffffffffffffff1611158290612217576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161220e9190613b87565b60405180910390fd5b5082840390509392505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612294576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161228b90613c49565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612304576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122fb90613be9565b60405180910390fd5b61237e600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a90046bffffffffffffffffffffffff1682604051806060016040528060378152602001614247603791396121b3565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550612465600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a90046bffffffffffffffffffffffff16826040518060600160405280603181526020016140246031913961265a565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161252f9190613e43565b60405180910390a3612600600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836126d0565b505050565b600080828401905083811015612650576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161264790613bc9565b60405180910390fd5b8091505092915050565b6000808385019050846bffffffffffffffffffffffff16816bffffffffffffffffffffffff16101583906126c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126bb9190613b87565b60405180910390fd5b50809150509392505050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561271a57506000816bffffffffffffffffffffffff16115b156129c657600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614612872576000600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900463ffffffff1690506000808263ffffffff16116127bd576000612839565b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001840363ffffffff1663ffffffff16815260200190815260200160002060000160049054906101000a90046bffffffffffffffffffffffff165b90506000612860828560405180606001604052806029815260200161421e602991396121b3565b905061286e86848484612be2565b5050505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146129c5576000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900463ffffffff1690506000808263ffffffff161161291057600061298c565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001840363ffffffff1663ffffffff16815260200190815260200160002060000160049054906101000a90046bffffffffffffffffffffffff165b905060006129b382856040518060600160405280602881526020016141a96028913961265a565b90506129c185848484612be2565b5050505b5b505050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a90046bffffffffffffffffffffffff16905082600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f60405160405180910390a4612b858284836126d0565b50505050565b6000612bcd83836040518060400160405280601f81526020017f536166654d6174683a207375627472616374696f6e20756e646572666c6f7700815250612ed5565b905092915050565b6000804690508091505090565b6000612c064360405180606001604052806035815260200161417460359139612f30565b905060008463ffffffff16118015612c9b57508063ffffffff16600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001870363ffffffff1663ffffffff16815260200190815260200160002060000160009054906101000a900463ffffffff1663ffffffff16145b15612d365781600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001870363ffffffff1663ffffffff16815260200190815260200160002060000160046101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550612e7e565b60405180604001604052808263ffffffff168152602001836bffffffffffffffffffffffff16815250600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008663ffffffff1663ffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff16021790555090505060018401600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548163ffffffff021916908363ffffffff1602179055505b8473ffffffffffffffffffffffffffffffffffffffff167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a7248484604051612ec6929190613e79565b60405180910390a25050505050565b6000838311158290612f1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f149190613b87565b60405180910390fd5b5060008385039050809150509392505050565b600064010000000083108290612f7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f739190613b87565b60405180910390fd5b5082905092915050565b6040518060400160405280600063ffffffff16815260200160006bffffffffffffffffffffffff1681525090565b600081359050612fc381613fb0565b92915050565b600081359050612fd881613fc7565b92915050565b600081359050612fed81613fde565b92915050565b60008135905061300281613ff5565b92915050565b6000813590506130178161400c565b92915050565b60006020828403121561302f57600080fd5b600061303d84828501612fb4565b91505092915050565b6000806040838503121561305957600080fd5b600061306785828601612fb4565b925050602061307885828601612fb4565b9150509250929050565b60008060006060848603121561309757600080fd5b60006130a586828701612fb4565b93505060206130b686828701612fb4565b92505060406130c786828701612fde565b9150509250925092565b600080600080600080600060e0888a0312156130ec57600080fd5b60006130fa8a828b01612fb4565b975050602061310b8a828b01612fb4565b965050604061311c8a828b01612fde565b955050606061312d8a828b01612fde565b945050608061313e8a828b01613008565b93505060a061314f8a828b01612fc9565b92505060c06131608a828b01612fc9565b91505092959891949750929550565b6000806040838503121561318257600080fd5b600061319085828601612fb4565b92505060206131a185828601612fde565b9150509250929050565b60008060008060008060c087890312156131c457600080fd5b60006131d289828a01612fb4565b96505060206131e389828a01612fde565b95505060406131f489828a01612fde565b945050606061320589828a01613008565b935050608061321689828a01612fc9565b92505060a061322789828a01612fc9565b9150509295509295509295565b6000806040838503121561324757600080fd5b600061325585828601612fb4565b925050602061326685828601612ff3565b9150509250929050565b61327981613ec9565b82525050565b61328881613edb565b82525050565b61329781613ee7565b82525050565b6132ae6132a982613ee7565b613f95565b82525050565b60006132bf82613ea2565b6132c98185613ead565b93506132d9818560208601613f62565b6132e281613f9f565b840191505092915050565b60006132fa603083613ead565b91507f76455448323a3a6d696e743a2063616e6e6f74207472616e7366657220746f2060008301527f746865207a65726f2061646472657373000000000000000000000000000000006020830152604082019050919050565b6000613360600283613ebe565b91507f19010000000000000000000000000000000000000000000000000000000000006000830152600282019050919050565b60006133a0601b83613ead565b91507f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006000830152602082019050919050565b60006133e0603b83613ead565b91507f76455448323a3a5f7472616e73666572546f6b656e733a2063616e6e6f74207460008301527f72616e7366657220746f20746865207a65726f206164647265737300000000006020830152604082019050919050565b6000613446602783613ead565b91507f76455448323a3a64656c656761746542795369673a20696e76616c696420736960008301527f676e6174757265000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006134ac602383613ead565b91507f76455448323a3a64656c656761746542795369673a20696e76616c6964206e6f60008301527f6e636500000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613512603d83613ead565b91507f76455448323a3a5f7472616e73666572546f6b656e733a2063616e6e6f74207460008301527f72616e736665722066726f6d20746865207a65726f20616464726573730000006020830152604082019050919050565b6000613578602583613ead565b91507f76455448323a3a6d696e743a206f6e6c7920746865206d696e7465722063616e60008301527f206d696e740000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006135de602483613ead565b91507f76455448323a3a6275726e3a206578636565646564656420746f74616c20737560008301527f70706c79000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613644602083613ead565b91507f76455448323a3a7065726d69743a207369676e617475726520657870697265646000830152602082019050919050565b6000613684602483613ead565b91507f76455448323a3a6275726e3a206d696e74696e67206e6f7420616c6c6f77656460008301527f20796574000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006136ea602483613ead565b91507f76455448323a3a6d696e743a206d696e74696e67206e6f7420616c6c6f77656460008301527f20796574000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613750602783613ead565b91507f76455448323a3a64656c656761746542795369673a207369676e61747572652060008301527f65787069726564000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006137b6602583613ead565b91507f76455448323a3a6275726e3a206f6e6c7920746865206d696e7465722063616e60008301527f206275726e0000000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061381c602883613ead565b91507f76455448323a3a6765745072696f72566f7465733a206e6f742079657420646560008301527f7465726d696e65640000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613882603f83613ead565b91507f76455448323a3a7365744d696e7465723a206f6e6c7920746865206d696e746560008301527f722063616e206368616e676520746865206d696e7465722061646472657373006020830152604082019050919050565b60006138e8601b83613ead565b91507f76455448323a3a7065726d69743a20756e617574686f72697a656400000000006000830152602082019050919050565b6000613928602083613ead565b91507f76455448323a3a7065726d69743a20696e76616c6964207369676e61747572656000830152602082019050919050565b61396481613f11565b82525050565b61397381613f1b565b82525050565b61398281613f2b565b82525050565b61399181613f50565b82525050565b6139a081613f38565b82525050565b60006139b182613353565b91506139bd828561329d565b6020820191506139cd828461329d565b6020820191508190509392505050565b60006020820190506139f26000830184613270565b92915050565b6000604082019050613a0d6000830185613270565b613a1a6020830184613270565b9392505050565b6000602082019050613a36600083018461327f565b92915050565b6000602082019050613a51600083018461328e565b92915050565b600060c082019050613a6c600083018961328e565b613a796020830188613270565b613a866040830187613270565b613a93606083018661395b565b613aa0608083018561395b565b613aad60a083018461395b565b979650505050505050565b6000608082019050613acd600083018761328e565b613ada6020830186613270565b613ae7604083018561395b565b613af4606083018461395b565b95945050505050565b6000608082019050613b12600083018761328e565b613b1f602083018661328e565b613b2c604083018561395b565b613b396060830184613270565b95945050505050565b6000608082019050613b57600083018761328e565b613b646020830186613979565b613b71604083018561328e565b613b7e606083018461328e565b95945050505050565b60006020820190508181036000830152613ba181846132b4565b905092915050565b60006020820190508181036000830152613bc2816132ed565b9050919050565b60006020820190508181036000830152613be281613393565b9050919050565b60006020820190508181036000830152613c02816133d3565b9050919050565b60006020820190508181036000830152613c2281613439565b9050919050565b60006020820190508181036000830152613c428161349f565b9050919050565b60006020820190508181036000830152613c6281613505565b9050919050565b60006020820190508181036000830152613c828161356b565b9050919050565b60006020820190508181036000830152613ca2816135d1565b9050919050565b60006020820190508181036000830152613cc281613637565b9050919050565b60006020820190508181036000830152613ce281613677565b9050919050565b60006020820190508181036000830152613d02816136dd565b9050919050565b60006020820190508181036000830152613d2281613743565b9050919050565b60006020820190508181036000830152613d42816137a9565b9050919050565b60006020820190508181036000830152613d628161380f565b9050919050565b60006020820190508181036000830152613d8281613875565b9050919050565b60006020820190508181036000830152613da2816138db565b9050919050565b60006020820190508181036000830152613dc28161391b565b9050919050565b6000602082019050613dde600083018461395b565b92915050565b6000602082019050613df9600083018461396a565b92915050565b6000604082019050613e14600083018561396a565b613e216020830184613997565b9392505050565b6000602082019050613e3d6000830184613979565b92915050565b6000602082019050613e586000830184613988565b92915050565b6000602082019050613e736000830184613997565b92915050565b6000604082019050613e8e6000830185613988565b613e9b6020830184613988565b9392505050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b6000613ed482613ef1565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600063ffffffff82169050919050565b600060ff82169050919050565b60006bffffffffffffffffffffffff82169050919050565b6000613f5b82613f38565b9050919050565b60005b83811015613f80578082015181840152602081019050613f65565b83811115613f8f576000848401525b50505050565b6000819050919050565b6000601f19601f8301169050919050565b613fb981613ec9565b8114613fc457600080fd5b50565b613fd081613ee7565b8114613fdb57600080fd5b50565b613fe781613f11565b8114613ff257600080fd5b50565b613ffe81613f1b565b811461400957600080fd5b50565b61401581613f2b565b811461402057600080fd5b5056fe76455448323a3a5f7472616e73666572546f6b656e733a207472616e7366657220616d6f756e74206f766572666c6f777376455448323a3a7472616e7366657246726f6d3a207472616e7366657220616d6f756e742065786365656473207370656e64657220616c6c6f77616e636576455448323a3a7472616e736665723a20616d6f756e742065786365656473203936206269747376455448323a3a6275726e3a20616d6f756e742065786365656473203936206269747376455448323a3a6275726e3a20746f74616c537570706c792065786365656473203936206269747376455448323a3a6275726e3a207472616e7366657220616d6f756e74206f766572666c6f777376455448323a3a617070726f76653a20616d6f756e742065786365656473203936206269747376455448323a3a6d696e743a20616d6f756e742065786365656473203936206269747376455448323a3a5f7772697465436865636b706f696e743a20626c6f636b206e756d6265722065786365656473203332206269747376455448323a3a5f6d6f7665566f7465733a20766f746520616d6f756e74206f766572666c6f777376455448323a3a6d696e743a20746f74616c537570706c792065786365656473203936206269747376455448323a3a7065726d69743a20616d6f756e742065786365656473203936206269747376455448323a3a5f6d6f7665566f7465733a20766f746520616d6f756e7420756e646572666c6f777376455448323a3a5f7472616e73666572546f6b656e733a207472616e7366657220616d6f756e7420657863656564732062616c616e636576455448323a3a6d696e743a207472616e7366657220616d6f756e74206f766572666c6f7773a2646970667358221220d37881655b0532937a60b910d495285333d16d0b320149ba4c4163c2bfef3ca564736f6c63430007050033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000004f2bd410b81ea24f83d1e807511baec204c4cf7a0000000000000000000000004f2bd410b81ea24f83d1e807511baec204c4cf7a00000000000000000000000000000000000000000000000000000000646e8107
-----Decoded View---------------
Arg [0] : account (address): 0x4f2bD410B81Ea24F83D1E807511BAec204c4Cf7a
Arg [1] : minter_ (address): 0x4f2bD410B81Ea24F83D1E807511BAec204c4Cf7a
Arg [2] : mintingAllowedAfter_ (uint256): 1684963591
-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 0000000000000000000000004f2bd410b81ea24f83d1e807511baec204c4cf7a
Arg [1] : 0000000000000000000000004f2bd410b81ea24f83d1e807511baec204c4cf7a
Arg [2] : 00000000000000000000000000000000000000000000000000000000646e8107
Deployed Bytecode Sourcemap
6838:18494:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6910:46;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7304:21;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13964:426;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7218:26;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8401:131;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17207:777;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8842:146;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7395:34;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7119:35;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11185:958;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7855:44;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7512:50;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18132:102;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8280:48;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16280:111;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20417:1222;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9069:41;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7017:39;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12151:892;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16655:242;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19764:222;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18668:895;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14880:1197;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13347:139;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8626:126;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8143:68;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;10777:233;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6910:46;;;;;;;;;;;;;;;;;;;:::o;7304:21::-;;;;;;;;;;;;;:::o;13964:426::-;14035:4;14052:13;14101:2;14080:9;:24;14076:177;;;14137:2;14121:19;;14076:177;;;14182:59;14189:9;14182:59;;;;;;;;;;;;;;;;;:6;:59::i;:::-;14173:68;;14076:177;14299:6;14265:10;:22;14276:10;14265:22;;;;;;;;;;;;;;;:31;14288:7;14265:31;;;;;;;;;;;;;;;;:40;;;;;;;;;;;;;;;;;;14344:7;14323:37;;14332:10;14323:37;;;14353:6;14323:37;;;;;;:::i;:::-;;;;;;;;14378:4;14371:11;;;13964:426;;;;:::o;7218:26::-;;;;:::o;8401:131::-;8452:80;8401:131;:::o;17207:777::-;17326:4;17343:15;17361:10;17343:28;;17382:23;17408:10;:15;17419:3;17408:15;;;;;;;;;;;;;;;:24;17424:7;17408:24;;;;;;;;;;;;;;;;;;;;;;;;;17382:50;;17443:13;17459:59;17466:9;17459:59;;;;;;;;;;;;;;;;;:6;:59::i;:::-;17443:75;;17546:3;17535:14;;:7;:14;;;;:48;;;;;17580:2;17553:30;;:16;:30;;;;17535:48;17531:378;;;17600:19;17622:163;17646:16;17681:6;17622:163;;;;;;;;;;;;;;;;;:5;:163::i;:::-;17600:185;;17827:12;17800:10;:15;17811:3;17800:15;;;;;;;;;;;;;;;:24;17816:7;17800:24;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;17875:7;17861:36;;17870:3;17861:36;;;17884:12;17861:36;;;;;;:::i;:::-;;;;;;;;17531:378;;17921:33;17937:3;17942;17947:6;17921:15;:33::i;:::-;17972:4;17965:11;;;;;17207:777;;;;;:::o;8842:146::-;8893:95;8842:146;:::o;7395:34::-;;;;:::o;7119:35::-;7152:2;7119:35;:::o;11185:958::-;11273:6;;;;;;;;;;;11259:20;;:10;:20;;;11251:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;11359:19;;11340:15;:38;;11332:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;11453:1;11438:17;;:3;:17;;;;11430:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;11571:54;11584:15;7561:1;11571:54;;:12;:54::i;:::-;11549:19;:76;;;;11666:13;11682:56;11689:9;11682:56;;;;;;;;;;;;;;;;;:6;:56::i;:::-;11666:72;;11763:85;11770:33;11783:11;;11796:6;11770:33;;:12;:33::i;:::-;11763:85;;;;;;;;;;;;;;;;;:6;:85::i;:::-;11749:99;;:11;:99;;;;11926:70;11932:8;:13;11941:3;11932:13;;;;;;;;;;;;;;;;;;;;;;;;;11947:6;11926:70;;;;;;;;;;;;;;;;;:5;:70::i;:::-;11910:8;:13;11919:3;11910:13;;;;;;;;;;;;;;;;:86;;;;;;;;;;;;;;;;;;12033:3;12012:33;;12029:1;12012:33;;;12038:6;12012:33;;;;;;:::i;:::-;;;;;;;;12085:50;12108:1;12112:9;:14;12122:3;12112:14;;;;;;;;;;;;;;;;;;;;;;;;;12128:6;12085:14;:50::i;:::-;11185:958;;;:::o;7855:44::-;;;;;;;;;;;;;;;;;;;;;;:::o;7512:50::-;7561:1;7512:50;:::o;18132:102::-;18194:32;18204:10;18216:9;18194;:32::i;:::-;18132:102;:::o;8280:48::-;;;;;;;;;;;;;;;;;;;;;;:::o;16280:111::-;16339:7;16366:8;:17;16375:7;16366:17;;;;;;;;;;;;;;;;;;;;;;;;;16359:24;;;;16280:111;;;:::o;20417:1222::-;20499:6;20540:12;20526:11;:26;20518:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;20610:19;20632:14;:23;20647:7;20632:23;;;;;;;;;;;;;;;;;;;;;;;;;20610:45;;20686:1;20670:12;:17;;;20666:58;;;20711:1;20704:8;;;;;20666:58;20836:11;20784;:20;20796:7;20784:20;;;;;;;;;;;;;;;:38;20820:1;20805:12;:16;20784:38;;;;;;;;;;;;;;;:48;;;;;;;;;;;;:63;;;20780:147;;20871:11;:20;20883:7;20871:20;;;;;;;;;;;;;;;:38;20907:1;20892:12;:16;20871:38;;;;;;;;;;;;;;;:44;;;;;;;;;;;;20864:51;;;;;20780:147;21024:11;20988;:20;21000:7;20988:20;;;;;;;;;;;;;;;:23;21009:1;20988:23;;;;;;;;;;;;;:33;;;;;;;;;;;;:47;;;20984:88;;;21059:1;21052:8;;;;;20984:88;21084:12;21111;21141:1;21126:12;:16;21111:31;;21153:428;21168:5;21160:13;;:5;:13;;;21153:428;;;21190:13;21232:1;21223:5;21215;:13;21214:19;;;;;;;;21206:5;:27;21190:43;;21275:20;;:::i;:::-;21298:11;:20;21310:7;21298:20;;;;;;;;;;;;;;;:28;21319:6;21298:28;;;;;;;;;;;;;;;21275:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21361:11;21345:2;:12;;;:27;;;21341:229;;;21400:2;:8;;;21393:15;;;;;;;;;21341:229;21449:11;21434:2;:12;;;:26;;;21430:140;;;21489:6;21481:14;;21430:140;;;21553:1;21544:6;:10;21536:18;;21430:140;21153:428;;;;;21598:11;:20;21610:7;21598:20;;;;;;;;;;;;;;;:27;21619:5;21598:27;;;;;;;;;;;;;;;:33;;;;;;;;;;;;21591:40;;;;;20417:1222;;;;;:::o;9069:41::-;;;;;;;;;;;;;;;;;:::o;7017:39::-;;;;;;;;;;;;;;;;;;;:::o;12151:892::-;12239:6;;;;;;;;;;;12225:20;;:10;:20;;;12217:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;12325:19;;12306:15;:38;;12298:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;12396:13;12412:56;12419:9;12412:56;;;;;;;;;;;;;;;;;:6;:56::i;:::-;12396:72;;12497:11;;12487:6;:21;;;;12479:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;12582:54;12595:15;7561:1;12582:54;;:12;:54::i;:::-;12560:19;:76;;;;12663:85;12670:33;12683:11;;12696:6;12670:33;;:12;:33::i;:::-;12663:85;;;;;;;;;;;;;;;;;:6;:85::i;:::-;12649:99;;:11;:99;;;;12826:70;12832:8;:13;12841:3;12832:13;;;;;;;;;;;;;;;;;;;;;;;;;12847:6;12826:70;;;;;;;;;;;;;;;;;:5;:70::i;:::-;12810:8;:13;12819:3;12810:13;;;;;;;;;;;;;;;;:86;;;;;;;;;;;;;;;;;;12934:1;12912:33;;12921:3;12912:33;;;12938:6;12912:33;;;;;;:::i;:::-;;;;;;;;12985:50;13000:9;:14;13010:3;13000:14;;;;;;;;;;;;;;;;;;;;;;;;;13024:1;13028:6;12985:14;:50::i;:::-;12151:892;;;:::o;16655:242::-;16723:4;16740:13;16756:60;16763:9;16756:60;;;;;;;;;;;;;;;;;:6;:60::i;:::-;16740:76;;16827:40;16843:10;16855:3;16860:6;16827:15;:40::i;:::-;16885:4;16878:11;;;16655:242;;;;:::o;19764:222::-;19829:6;19848:19;19870:14;:23;19885:7;19870:23;;;;;;;;;;;;;;;;;;;;;;;;;19848:45;;19926:1;19911:12;:16;;;:67;;19977:1;19911:67;;;19930:11;:20;19942:7;19930:20;;;;;;;;;;;;;;;:38;19966:1;19951:12;:16;19930:38;;;;;;;;;;;;;;;:44;;;;;;;;;;;;19911:67;19904:74;;;19764:222;;;:::o;18668:895::-;18851:23;8452:80;18945:4;;;;;;;;;;;;;;;;;18929:22;;;;;;18953:12;:10;:12::i;:::-;18975:4;18901:80;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;18877:115;;;;;;18851:141;;19003:18;8681:71;19066:9;19077:5;19084:6;19034:57;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;19024:68;;;;;;19003:89;;19103:14;19159:15;19176:10;19130:57;;;;;;;;;:::i;:::-;;;;;;;;;;;;;19120:68;;;;;;19103:85;;19199:17;19219:26;19229:6;19237:1;19240;19243;19219:26;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19199:46;;19285:1;19264:23;;:9;:23;;;;19256:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;19359:6;:17;19366:9;19359:17;;;;;;;;;;;;;;;;:19;;;;;;;;;;;;19350:5;:28;19342:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;19456:6;19437:15;:25;;19429:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;19524:31;19534:9;19545;19524;:31::i;:::-;19517:38;;;;18668:895;;;;;;:::o;14880:1197::-;15086:13;15135:2;15114:9;:24;15110:176;;;15171:2;15155:19;;15110:176;;;15216:58;15223:9;15216:58;;;;;;;;;;;;;;;;;:6;:58::i;:::-;15207:67;;15110:176;15298:23;8452:80;15392:4;;;;;;;;;;;;;;;;;15376:22;;;;;;15400:12;:10;:12::i;:::-;15422:4;15348:80;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;15324:115;;;;;;15298:141;;15450:18;8893:95;15523:5;15530:7;15539:9;15550:6;:13;15557:5;15550:13;;;;;;;;;;;;;;;;:15;;;;;;;;;;;;15567:8;15495:81;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;15471:116;;;;;;15450:137;;15598:14;15654:15;15671:10;15625:57;;;;;;;;;:::i;:::-;;;;;;;;;;;;;15615:68;;;;;;15598:85;;15694:17;15714:26;15724:6;15732:1;15735;15738;15714:26;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15694:46;;15780:1;15759:23;;:9;:23;;;;15751:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15851:5;15838:18;;:9;:18;;;15830:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;15926:8;15907:15;:27;;15899:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;16013:6;15984:10;:17;15995:5;15984:17;;;;;;;;;;;;;;;:26;16002:7;15984:26;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;16053:7;16037:32;;16046:5;16037:32;;;16062:6;16037:32;;;;;;:::i;:::-;;;;;;;;14880:1197;;;;;;;;;;;;:::o;13347:139::-;13423:7;13450:10;:19;13461:7;13450:19;;;;;;;;;;;;;;;:28;13470:7;13450:28;;;;;;;;;;;;;;;;;;;;;;;;;13443:35;;;;13347:139;;;;:::o;8626:126::-;8681:71;8626:126;:::o;8143:68::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;10777:233::-;10855:6;;;;;;;;;;;10841:20;;:10;:20;;;10833:96;;;;;;;;;;;;:::i;:::-;;;;;;;;;10945:30;10959:6;;;;;;;;;;;10967:7;10945:30;;;;;;;:::i;:::-;;;;;;;;10995:7;10986:6;;:16;;;;;;;;;;;;;;;;;;10777:233;:::o;24542:164::-;24620:6;24651:5;24647:1;:9;24658:12;24639:32;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;24696:1;24682:16;;24542:164;;;;:::o;24944:199::-;25064:6;25096:1;25091:6;;:1;:6;;;;25099:12;25083:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;25134:1;25130;:5;25123:12;;24944:199;;;;;:::o;22030:652::-;22173:1;22158:17;;:3;:17;;;;22150:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;22275:1;22260:17;;:3;:17;;;;22252:89;;;;;;;;;;;;:::i;:::-;;;;;;;;;22370:87;22376:8;:13;22385:3;22376:13;;;;;;;;;;;;;;;;;;;;;;;;;22391:6;22370:87;;;;;;;;;;;;;;;;;:5;:87::i;:::-;22354:8;:13;22363:3;22354:13;;;;;;;;;;;;;;;;:103;;;;;;;;;;;;;;;;;;22484:81;22490:8;:13;22499:3;22490:13;;;;;;;;;;;;;;;;;;;;;;;;;22505:6;22484:81;;;;;;;;;;;;;;;;;:5;:81::i;:::-;22468:8;:13;22477:3;22468:13;;;;;;;;;;;;;;;;:97;;;;;;;;;;;;;;;;;;22595:3;22581:26;;22590:3;22581:26;;;22600:6;22581:26;;;;;;:::i;:::-;;;;;;;;22620:54;22635:9;:14;22645:3;22635:14;;;;;;;;;;;;;;;;;;;;;;;;;22651:9;:14;22661:3;22651:14;;;;;;;;;;;;;;;;;;;;;;;;;22667:6;22620:14;:54::i;:::-;22030:652;;;:::o;1054:181::-;1112:7;1132:9;1148:1;1144;:5;1132:17;;1173:1;1168;:6;;1160:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1226:1;1219:8;;;1054:181;;;;:::o;24714:222::-;24834:6;24853:8;24868:1;24864;:5;24853:16;;24893:1;24888:6;;:1;:6;;;;24896:12;24880:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;24927:1;24920:8;;;24714:222;;;;;:::o;22690:975::-;22829:6;22819:16;;:6;:16;;;;:30;;;;;22848:1;22839:6;:10;;;22819:30;22815:843;;;22888:1;22870:20;;:6;:20;;;22866:383;;22911:16;22930:14;:22;22945:6;22930:22;;;;;;;;;;;;;;;;;;;;;;;;;22911:41;;22971:16;23002:1;22990:9;:13;;;:60;;23049:1;22990:60;;;23006:11;:19;23018:6;23006:19;;;;;;;;;;;;;;;:34;23038:1;23026:9;:13;23006:34;;;;;;;;;;;;;;;:40;;;;;;;;;;;;22990:60;22971:79;;23069:16;23088:69;23094:9;23105:6;23088:69;;;;;;;;;;;;;;;;;:5;:69::i;:::-;23069:88;;23176:57;23193:6;23201:9;23212;23223;23176:16;:57::i;:::-;22866:383;;;;23287:1;23269:20;;:6;:20;;;23265:382;;23310:16;23329:14;:22;23344:6;23329:22;;;;;;;;;;;;;;;;;;;;;;;;;23310:41;;23370:16;23401:1;23389:9;:13;;;:60;;23448:1;23389:60;;;23405:11;:19;23417:6;23405:19;;;;;;;;;;;;;;;:34;23437:1;23425:9;:13;23405:34;;;;;;;;;;;;;;;:40;;;;;;;;;;;;23389:60;23370:79;;23468:16;23487:68;23493:9;23504:6;23487:68;;;;;;;;;;;;;;;;;:5;:68::i;:::-;23468:87;;23574:57;23591:6;23599:9;23610;23621;23574:16;:57::i;:::-;23265:382;;;;22815:843;22690:975;;;:::o;21647:375::-;21724:23;21750:9;:20;21760:9;21750:20;;;;;;;;;;;;;;;;;;;;;;;;;21724:46;;21781:23;21807:8;:19;21816:9;21807:19;;;;;;;;;;;;;;;;;;;;;;;;;21781:45;;21860:9;21837;:20;21847:9;21837:20;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;21931:9;21887:54;;21914:15;21887:54;;21903:9;21887:54;;;;;;;;;;;;21954:60;21969:15;21986:9;21997:16;21954:14;:60::i;:::-;21647:375;;;;:::o;1981:137::-;2039:7;2066:44;2070:1;2073;2066:44;;;;;;;;;;;;;;;;;:3;:44::i;:::-;2059:51;;1981:137;;;;:::o;25151:178::-;25196:7;25216:15;25277:9;25266:20;;25314:7;25307:14;;;25151:178;:::o;23673:689::-;23836:18;23857:77;23864:12;23857:77;;;;;;;;;;;;;;;;;:6;:77::i;:::-;23836:98;;23966:1;23951:12;:16;;;:85;;;;;24025:11;23971:65;;:11;:22;23983:9;23971:22;;;;;;;;;;;;;;;:40;24009:1;23994:12;:16;23971:40;;;;;;;;;;;;;;;:50;;;;;;;;;;;;:65;;;23951:85;23947:339;;;24102:8;24053:11;:22;24065:9;24053:22;;;;;;;;;;;;;;;:40;24091:1;24076:12;:16;24053:40;;;;;;;;;;;;;;;:46;;;:57;;;;;;;;;;;;;;;;;;23947:339;;;24182:33;;;;;;;;24193:11;24182:33;;;;;;24206:8;24182:33;;;;;24143:11;:22;24155:9;24143:22;;;;;;;;;;;;;;;:36;24166:12;24143:36;;;;;;;;;;;;;;;:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24273:1;24258:12;:16;24230:14;:25;24245:9;24230:25;;;;;;;;;;;;;;;;:44;;;;;;;;;;;;;;;;;;23947:339;24324:9;24303:51;;;24335:8;24345;24303:51;;;;;;;:::i;:::-;;;;;;;;23673:689;;;;;:::o;2407:226::-;2527:7;2560:1;2555;:6;;2563:12;2547:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2587:9;2603:1;2599;:5;2587:17;;2624:1;2617:8;;;2407:226;;;;;:::o;24370:164::-;24448:6;24479:5;24475:1;:9;24486:12;24467:32;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;24524:1;24510:16;;24370:164;;;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;:::o;7:139:1:-;;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;152:139::-;;236:6;223:20;214:29;;252:33;279:5;252:33;:::i;:::-;204:87;;;;:::o;297:139::-;;381:6;368:20;359:29;;397:33;424:5;397:33;:::i;:::-;349:87;;;;:::o;442:137::-;;525:6;512:20;503:29;;541:32;567:5;541:32;:::i;:::-;493:86;;;;:::o;585:135::-;;667:6;654:20;645:29;;683:31;708:5;683:31;:::i;:::-;635:85;;;;:::o;726:260::-;;834:2;822:9;813:7;809:23;805:32;802:2;;;850:1;847;840:12;802:2;892:1;916:53;961:7;952:6;941:9;937:22;916:53;:::i;:::-;906:63;;864:115;792:194;;;;:::o;992:403::-;;;1117:2;1105:9;1096:7;1092:23;1088:32;1085:2;;;1133:1;1130;1123:12;1085:2;1175:1;1199:53;1244:7;1235:6;1224:9;1220:22;1199:53;:::i;:::-;1189:63;;1147:115;1300:2;1325:53;1370:7;1361:6;1350:9;1346:22;1325:53;:::i;:::-;1315:63;;1272:116;1075:320;;;;;:::o;1401:546::-;;;;1543:2;1531:9;1522:7;1518:23;1514:32;1511:2;;;1559:1;1556;1549:12;1511:2;1601:1;1625:53;1670:7;1661:6;1650:9;1646:22;1625:53;:::i;:::-;1615:63;;1573:115;1726:2;1751:53;1796:7;1787:6;1776:9;1772:22;1751:53;:::i;:::-;1741:63;;1698:116;1852:2;1877:53;1922:7;1913:6;1902:9;1898:22;1877:53;:::i;:::-;1867:63;;1824:116;1501:446;;;;;:::o;1953:1118::-;;;;;;;;2161:3;2149:9;2140:7;2136:23;2132:33;2129:2;;;2178:1;2175;2168:12;2129:2;2220:1;2244:53;2289:7;2280:6;2269:9;2265:22;2244:53;:::i;:::-;2234:63;;2192:115;2345:2;2370:53;2415:7;2406:6;2395:9;2391:22;2370:53;:::i;:::-;2360:63;;2317:116;2471:2;2496:53;2541:7;2532:6;2521:9;2517:22;2496:53;:::i;:::-;2486:63;;2443:116;2597:2;2622:53;2667:7;2658:6;2647:9;2643:22;2622:53;:::i;:::-;2612:63;;2569:116;2723:3;2749:51;2792:7;2783:6;2772:9;2768:22;2749:51;:::i;:::-;2739:61;;2695:115;2848:3;2874:53;2919:7;2910:6;2899:9;2895:22;2874:53;:::i;:::-;2864:63;;2820:117;2975:3;3001:53;3046:7;3037:6;3026:9;3022:22;3001:53;:::i;:::-;2991:63;;2947:117;2119:952;;;;;;;;;;:::o;3077:403::-;;;3202:2;3190:9;3181:7;3177:23;3173:32;3170:2;;;3218:1;3215;3208:12;3170:2;3260:1;3284:53;3329:7;3320:6;3309:9;3305:22;3284:53;:::i;:::-;3274:63;;3232:115;3385:2;3410:53;3455:7;3446:6;3435:9;3431:22;3410:53;:::i;:::-;3400:63;;3357:116;3160:320;;;;;:::o;3486:974::-;;;;;;;3677:3;3665:9;3656:7;3652:23;3648:33;3645:2;;;3694:1;3691;3684:12;3645:2;3736:1;3760:53;3805:7;3796:6;3785:9;3781:22;3760:53;:::i;:::-;3750:63;;3708:115;3861:2;3886:53;3931:7;3922:6;3911:9;3907:22;3886:53;:::i;:::-;3876:63;;3833:116;3987:2;4012:53;4057:7;4048:6;4037:9;4033:22;4012:53;:::i;:::-;4002:63;;3959:116;4113:2;4138:51;4181:7;4172:6;4161:9;4157:22;4138:51;:::i;:::-;4128:61;;4085:114;4237:3;4263:53;4308:7;4299:6;4288:9;4284:22;4263:53;:::i;:::-;4253:63;;4209:117;4364:3;4390:53;4435:7;4426:6;4415:9;4411:22;4390:53;:::i;:::-;4380:63;;4336:117;3635:825;;;;;;;;:::o;4466:401::-;;;4590:2;4578:9;4569:7;4565:23;4561:32;4558:2;;;4606:1;4603;4596:12;4558:2;4648:1;4672:53;4717:7;4708:6;4697:9;4693:22;4672:53;:::i;:::-;4662:63;;4620:115;4773:2;4798:52;4842:7;4833:6;4822:9;4818:22;4798:52;:::i;:::-;4788:62;;4745:115;4548:319;;;;;:::o;4873:118::-;4960:24;4978:5;4960:24;:::i;:::-;4955:3;4948:37;4938:53;;:::o;4997:109::-;5078:21;5093:5;5078:21;:::i;:::-;5073:3;5066:34;5056:50;;:::o;5112:118::-;5199:24;5217:5;5199:24;:::i;:::-;5194:3;5187:37;5177:53;;:::o;5236:157::-;5341:45;5361:24;5379:5;5361:24;:::i;:::-;5341:45;:::i;:::-;5336:3;5329:58;5319:74;;:::o;5399:364::-;;5515:39;5548:5;5515:39;:::i;:::-;5570:71;5634:6;5629:3;5570:71;:::i;:::-;5563:78;;5650:52;5695:6;5690:3;5683:4;5676:5;5672:16;5650:52;:::i;:::-;5727:29;5749:6;5727:29;:::i;:::-;5722:3;5718:39;5711:46;;5491:272;;;;;:::o;5769:380::-;;5932:67;5996:2;5991:3;5932:67;:::i;:::-;5925:74;;6029:34;6025:1;6020:3;6016:11;6009:55;6095:18;6090:2;6085:3;6081:12;6074:40;6140:2;6135:3;6131:12;6124:19;;5915:234;;;:::o;6155:396::-;;6336:84;6418:1;6413:3;6336:84;:::i;:::-;6329:91;;6450:66;6446:1;6441:3;6437:11;6430:87;6543:1;6538:3;6534:11;6527:18;;6319:232;;;:::o;6557:325::-;;6720:67;6784:2;6779:3;6720:67;:::i;:::-;6713:74;;6817:29;6813:1;6808:3;6804:11;6797:50;6873:2;6868:3;6864:12;6857:19;;6703:179;;;:::o;6888:391::-;;7051:67;7115:2;7110:3;7051:67;:::i;:::-;7044:74;;7148:34;7144:1;7139:3;7135:11;7128:55;7214:29;7209:2;7204:3;7200:12;7193:51;7270:2;7265:3;7261:12;7254:19;;7034:245;;;:::o;7285:371::-;;7448:67;7512:2;7507:3;7448:67;:::i;:::-;7441:74;;7545:34;7541:1;7536:3;7532:11;7525:55;7611:9;7606:2;7601:3;7597:12;7590:31;7647:2;7642:3;7638:12;7631:19;;7431:225;;;:::o;7662:367::-;;7825:67;7889:2;7884:3;7825:67;:::i;:::-;7818:74;;7922:34;7918:1;7913:3;7909:11;7902:55;7988:5;7983:2;7978:3;7974:12;7967:27;8020:2;8015:3;8011:12;8004:19;;7808:221;;;:::o;8035:393::-;;8198:67;8262:2;8257:3;8198:67;:::i;:::-;8191:74;;8295:34;8291:1;8286:3;8282:11;8275:55;8361:31;8356:2;8351:3;8347:12;8340:53;8419:2;8414:3;8410:12;8403:19;;8181:247;;;:::o;8434:369::-;;8597:67;8661:2;8656:3;8597:67;:::i;:::-;8590:74;;8694:34;8690:1;8685:3;8681:11;8674:55;8760:7;8755:2;8750:3;8746:12;8739:29;8794:2;8789:3;8785:12;8778:19;;8580:223;;;:::o;8809:368::-;;8972:67;9036:2;9031:3;8972:67;:::i;:::-;8965:74;;9069:34;9065:1;9060:3;9056:11;9049:55;9135:6;9130:2;9125:3;9121:12;9114:28;9168:2;9163:3;9159:12;9152:19;;8955:222;;;:::o;9183:330::-;;9346:67;9410:2;9405:3;9346:67;:::i;:::-;9339:74;;9443:34;9439:1;9434:3;9430:11;9423:55;9504:2;9499:3;9495:12;9488:19;;9329:184;;;:::o;9519:368::-;;9682:67;9746:2;9741:3;9682:67;:::i;:::-;9675:74;;9779:34;9775:1;9770:3;9766:11;9759:55;9845:6;9840:2;9835:3;9831:12;9824:28;9878:2;9873:3;9869:12;9862:19;;9665:222;;;:::o;9893:368::-;;10056:67;10120:2;10115:3;10056:67;:::i;:::-;10049:74;;10153:34;10149:1;10144:3;10140:11;10133:55;10219:6;10214:2;10209:3;10205:12;10198:28;10252:2;10247:3;10243:12;10236:19;;10039:222;;;:::o;10267:371::-;;10430:67;10494:2;10489:3;10430:67;:::i;:::-;10423:74;;10527:34;10523:1;10518:3;10514:11;10507:55;10593:9;10588:2;10583:3;10579:12;10572:31;10629:2;10624:3;10620:12;10613:19;;10413:225;;;:::o;10644:369::-;;10807:67;10871:2;10866:3;10807:67;:::i;:::-;10800:74;;10904:34;10900:1;10895:3;10891:11;10884:55;10970:7;10965:2;10960:3;10956:12;10949:29;11004:2;10999:3;10995:12;10988:19;;10790:223;;;:::o;11019:372::-;;11182:67;11246:2;11241:3;11182:67;:::i;:::-;11175:74;;11279:34;11275:1;11270:3;11266:11;11259:55;11345:10;11340:2;11335:3;11331:12;11324:32;11382:2;11377:3;11373:12;11366:19;;11165:226;;;:::o;11397:395::-;;11560:67;11624:2;11619:3;11560:67;:::i;:::-;11553:74;;11657:34;11653:1;11648:3;11644:11;11637:55;11723:33;11718:2;11713:3;11709:12;11702:55;11783:2;11778:3;11774:12;11767:19;;11543:249;;;:::o;11798:325::-;;11961:67;12025:2;12020:3;11961:67;:::i;:::-;11954:74;;12058:29;12054:1;12049:3;12045:11;12038:50;12114:2;12109:3;12105:12;12098:19;;11944:179;;;:::o;12129:330::-;;12292:67;12356:2;12351:3;12292:67;:::i;:::-;12285:74;;12389:34;12385:1;12380:3;12376:11;12369:55;12450:2;12445:3;12441:12;12434:19;;12275:184;;;:::o;12465:118::-;12552:24;12570:5;12552:24;:::i;:::-;12547:3;12540:37;12530:53;;:::o;12589:115::-;12674:23;12691:5;12674:23;:::i;:::-;12669:3;12662:36;12652:52;;:::o;12710:112::-;12793:22;12809:5;12793:22;:::i;:::-;12788:3;12781:35;12771:51;;:::o;12828:129::-;12914:36;12944:5;12914:36;:::i;:::-;12909:3;12902:49;12892:65;;:::o;12963:115::-;13048:23;13065:5;13048:23;:::i;:::-;13043:3;13036:36;13026:52;;:::o;13084:663::-;;13347:148;13491:3;13347:148;:::i;:::-;13340:155;;13505:75;13576:3;13567:6;13505:75;:::i;:::-;13605:2;13600:3;13596:12;13589:19;;13618:75;13689:3;13680:6;13618:75;:::i;:::-;13718:2;13713:3;13709:12;13702:19;;13738:3;13731:10;;13329:418;;;;;:::o;13753:222::-;;13884:2;13873:9;13869:18;13861:26;;13897:71;13965:1;13954:9;13950:17;13941:6;13897:71;:::i;:::-;13851:124;;;;:::o;13981:332::-;;14140:2;14129:9;14125:18;14117:26;;14153:71;14221:1;14210:9;14206:17;14197:6;14153:71;:::i;:::-;14234:72;14302:2;14291:9;14287:18;14278:6;14234:72;:::i;:::-;14107:206;;;;;:::o;14319:210::-;;14444:2;14433:9;14429:18;14421:26;;14457:65;14519:1;14508:9;14504:17;14495:6;14457:65;:::i;:::-;14411:118;;;;:::o;14535:222::-;;14666:2;14655:9;14651:18;14643:26;;14679:71;14747:1;14736:9;14732:17;14723:6;14679:71;:::i;:::-;14633:124;;;;:::o;14763:775::-;;15034:3;15023:9;15019:19;15011:27;;15048:71;15116:1;15105:9;15101:17;15092:6;15048:71;:::i;:::-;15129:72;15197:2;15186:9;15182:18;15173:6;15129:72;:::i;:::-;15211;15279:2;15268:9;15264:18;15255:6;15211:72;:::i;:::-;15293;15361:2;15350:9;15346:18;15337:6;15293:72;:::i;:::-;15375:73;15443:3;15432:9;15428:19;15419:6;15375:73;:::i;:::-;15458;15526:3;15515:9;15511:19;15502:6;15458:73;:::i;:::-;15001:537;;;;;;;;;:::o;15544:553::-;;15759:3;15748:9;15744:19;15736:27;;15773:71;15841:1;15830:9;15826:17;15817:6;15773:71;:::i;:::-;15854:72;15922:2;15911:9;15907:18;15898:6;15854:72;:::i;:::-;15936;16004:2;15993:9;15989:18;15980:6;15936:72;:::i;:::-;16018;16086:2;16075:9;16071:18;16062:6;16018:72;:::i;:::-;15726:371;;;;;;;:::o;16103:553::-;;16318:3;16307:9;16303:19;16295:27;;16332:71;16400:1;16389:9;16385:17;16376:6;16332:71;:::i;:::-;16413:72;16481:2;16470:9;16466:18;16457:6;16413:72;:::i;:::-;16495;16563:2;16552:9;16548:18;16539:6;16495:72;:::i;:::-;16577;16645:2;16634:9;16630:18;16621:6;16577:72;:::i;:::-;16285:371;;;;;;;:::o;16662:545::-;;16873:3;16862:9;16858:19;16850:27;;16887:71;16955:1;16944:9;16940:17;16931:6;16887:71;:::i;:::-;16968:68;17032:2;17021:9;17017:18;17008:6;16968:68;:::i;:::-;17046:72;17114:2;17103:9;17099:18;17090:6;17046:72;:::i;:::-;17128;17196:2;17185:9;17181:18;17172:6;17128:72;:::i;:::-;16840:367;;;;;;;:::o;17213:313::-;;17364:2;17353:9;17349:18;17341:26;;17413:9;17407:4;17403:20;17399:1;17388:9;17384:17;17377:47;17441:78;17514:4;17505:6;17441:78;:::i;:::-;17433:86;;17331:195;;;;:::o;17532:419::-;;17736:2;17725:9;17721:18;17713:26;;17785:9;17779:4;17775:20;17771:1;17760:9;17756:17;17749:47;17813:131;17939:4;17813:131;:::i;:::-;17805:139;;17703:248;;;:::o;17957:419::-;;18161:2;18150:9;18146:18;18138:26;;18210:9;18204:4;18200:20;18196:1;18185:9;18181:17;18174:47;18238:131;18364:4;18238:131;:::i;:::-;18230:139;;18128:248;;;:::o;18382:419::-;;18586:2;18575:9;18571:18;18563:26;;18635:9;18629:4;18625:20;18621:1;18610:9;18606:17;18599:47;18663:131;18789:4;18663:131;:::i;:::-;18655:139;;18553:248;;;:::o;18807:419::-;;19011:2;19000:9;18996:18;18988:26;;19060:9;19054:4;19050:20;19046:1;19035:9;19031:17;19024:47;19088:131;19214:4;19088:131;:::i;:::-;19080:139;;18978:248;;;:::o;19232:419::-;;19436:2;19425:9;19421:18;19413:26;;19485:9;19479:4;19475:20;19471:1;19460:9;19456:17;19449:47;19513:131;19639:4;19513:131;:::i;:::-;19505:139;;19403:248;;;:::o;19657:419::-;;19861:2;19850:9;19846:18;19838:26;;19910:9;19904:4;19900:20;19896:1;19885:9;19881:17;19874:47;19938:131;20064:4;19938:131;:::i;:::-;19930:139;;19828:248;;;:::o;20082:419::-;;20286:2;20275:9;20271:18;20263:26;;20335:9;20329:4;20325:20;20321:1;20310:9;20306:17;20299:47;20363:131;20489:4;20363:131;:::i;:::-;20355:139;;20253:248;;;:::o;20507:419::-;;20711:2;20700:9;20696:18;20688:26;;20760:9;20754:4;20750:20;20746:1;20735:9;20731:17;20724:47;20788:131;20914:4;20788:131;:::i;:::-;20780:139;;20678:248;;;:::o;20932:419::-;;21136:2;21125:9;21121:18;21113:26;;21185:9;21179:4;21175:20;21171:1;21160:9;21156:17;21149:47;21213:131;21339:4;21213:131;:::i;:::-;21205:139;;21103:248;;;:::o;21357:419::-;;21561:2;21550:9;21546:18;21538:26;;21610:9;21604:4;21600:20;21596:1;21585:9;21581:17;21574:47;21638:131;21764:4;21638:131;:::i;:::-;21630:139;;21528:248;;;:::o;21782:419::-;;21986:2;21975:9;21971:18;21963:26;;22035:9;22029:4;22025:20;22021:1;22010:9;22006:17;21999:47;22063:131;22189:4;22063:131;:::i;:::-;22055:139;;21953:248;;;:::o;22207:419::-;;22411:2;22400:9;22396:18;22388:26;;22460:9;22454:4;22450:20;22446:1;22435:9;22431:17;22424:47;22488:131;22614:4;22488:131;:::i;:::-;22480:139;;22378:248;;;:::o;22632:419::-;;22836:2;22825:9;22821:18;22813:26;;22885:9;22879:4;22875:20;22871:1;22860:9;22856:17;22849:47;22913:131;23039:4;22913:131;:::i;:::-;22905:139;;22803:248;;;:::o;23057:419::-;;23261:2;23250:9;23246:18;23238:26;;23310:9;23304:4;23300:20;23296:1;23285:9;23281:17;23274:47;23338:131;23464:4;23338:131;:::i;:::-;23330:139;;23228:248;;;:::o;23482:419::-;;23686:2;23675:9;23671:18;23663:26;;23735:9;23729:4;23725:20;23721:1;23710:9;23706:17;23699:47;23763:131;23889:4;23763:131;:::i;:::-;23755:139;;23653:248;;;:::o;23907:419::-;;24111:2;24100:9;24096:18;24088:26;;24160:9;24154:4;24150:20;24146:1;24135:9;24131:17;24124:47;24188:131;24314:4;24188:131;:::i;:::-;24180:139;;24078:248;;;:::o;24332:419::-;;24536:2;24525:9;24521:18;24513:26;;24585:9;24579:4;24575:20;24571:1;24560:9;24556:17;24549:47;24613:131;24739:4;24613:131;:::i;:::-;24605:139;;24503:248;;;:::o;24757:222::-;;24888:2;24877:9;24873:18;24865:26;;24901:71;24969:1;24958:9;24954:17;24945:6;24901:71;:::i;:::-;24855:124;;;;:::o;24985:218::-;;25114:2;25103:9;25099:18;25091:26;;25127:69;25193:1;25182:9;25178:17;25169:6;25127:69;:::i;:::-;25081:122;;;;:::o;25209:324::-;;25364:2;25353:9;25349:18;25341:26;;25377:69;25443:1;25432:9;25428:17;25419:6;25377:69;:::i;:::-;25456:70;25522:2;25511:9;25507:18;25498:6;25456:70;:::i;:::-;25331:202;;;;;:::o;25539:214::-;;25666:2;25655:9;25651:18;25643:26;;25679:67;25743:1;25732:9;25728:17;25719:6;25679:67;:::i;:::-;25633:120;;;;:::o;25759:220::-;;25889:2;25878:9;25874:18;25866:26;;25902:70;25969:1;25958:9;25954:17;25945:6;25902:70;:::i;:::-;25856:123;;;;:::o;25985:218::-;;26114:2;26103:9;26099:18;26091:26;;26127:69;26193:1;26182:9;26178:17;26169:6;26127:69;:::i;:::-;26081:122;;;;:::o;26209:328::-;;26366:2;26355:9;26351:18;26343:26;;26379:70;26446:1;26435:9;26431:17;26422:6;26379:70;:::i;:::-;26459:71;26526:2;26515:9;26511:18;26502:6;26459:71;:::i;:::-;26333:204;;;;;:::o;26543:99::-;;26629:5;26623:12;26613:22;;26602:40;;;:::o;26648:169::-;;26766:6;26761:3;26754:19;26806:4;26801:3;26797:14;26782:29;;26744:73;;;;:::o;26823:148::-;;26962:3;26947:18;;26937:34;;;;:::o;26977:96::-;;27043:24;27061:5;27043:24;:::i;:::-;27032:35;;27022:51;;;:::o;27079:90::-;;27156:5;27149:13;27142:21;27131:32;;27121:48;;;:::o;27175:77::-;;27241:5;27230:16;;27220:32;;;:::o;27258:126::-;;27335:42;27328:5;27324:54;27313:65;;27303:81;;;:::o;27390:77::-;;27456:5;27445:16;;27435:32;;;:::o;27473:93::-;;27549:10;27542:5;27538:22;27527:33;;27517:49;;;:::o;27572:86::-;;27647:4;27640:5;27636:16;27625:27;;27615:43;;;:::o;27664:109::-;;27740:26;27733:5;27729:38;27718:49;;27708:65;;;:::o;27779:111::-;;27861:23;27878:5;27861:23;:::i;:::-;27848:36;;27838:52;;;:::o;27896:307::-;27964:1;27974:113;27988:6;27985:1;27982:13;27974:113;;;28073:1;28068:3;28064:11;28058:18;28054:1;28049:3;28045:11;28038:39;28010:2;28007:1;28003:10;27998:15;;27974:113;;;28105:6;28102:1;28099:13;28096:2;;;28185:1;28176:6;28171:3;28167:16;28160:27;28096:2;27945:258;;;;:::o;28209:79::-;;28277:5;28266:16;;28256:32;;;:::o;28294:102::-;;28386:2;28382:7;28377:2;28370:5;28366:14;28362:28;28352:38;;28342:54;;;:::o;28402:122::-;28475:24;28493:5;28475:24;:::i;:::-;28468:5;28465:35;28455:2;;28514:1;28511;28504:12;28455:2;28445:79;:::o;28530:122::-;28603:24;28621:5;28603:24;:::i;:::-;28596:5;28593:35;28583:2;;28642:1;28639;28632:12;28583:2;28573:79;:::o;28658:122::-;28731:24;28749:5;28731:24;:::i;:::-;28724:5;28721:35;28711:2;;28770:1;28767;28760:12;28711:2;28701:79;:::o;28786:120::-;28858:23;28875:5;28858:23;:::i;:::-;28851:5;28848:34;28838:2;;28896:1;28893;28886:12;28838:2;28828:78;:::o;28912:118::-;28983:22;28999:5;28983:22;:::i;:::-;28976:5;28973:33;28963:2;;29020:1;29017;29010:12;28963:2;28953:77;:::o
Swarm Source
ipfs://d37881655b0532937a60b910d495285333d16d0b320149ba4c4163c2bfef3ca5
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.