Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
GDAODelegate
Compiler Version
v0.5.17+commit.d19bba13
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2020-12-15 */ pragma solidity 0.5.17; contract GDAOGovernanceStorage { /// @notice A record of each accounts delegate mapping (address => address) internal _delegates; /// @notice A checkpoint for marking number of votes from a given block struct Checkpoint { uint32 fromBlock; uint256 votes; } /// @notice A record of votes checkpoints for each account, by index mapping (address => mapping (uint32 => Checkpoint)) public checkpoints; /// @notice The number of checkpoints for each account mapping (address => uint32) public numCheckpoints; /// @notice The EIP-712 typehash for the contract's domain bytes32 public constant DOMAIN_TYPEHASH = keccak256("EIP712Domain(string name,uint256 chainId,address verifyingContract)"); /// @notice The EIP-712 typehash for the delegation struct used by the contract bytes32 public constant DELEGATION_TYPEHASH = keccak256("Delegation(address delegatee,uint256 nonce,uint256 expiry)"); /// @notice A record of states for signing / validating signatures mapping (address => uint) public nonces; } // SPDX-License-Identifier: MIT /** * @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 subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ 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 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) { 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; } } // Storage for a GDAO token contract GDAOTokenStorage { using SafeMath for uint256; /** * @dev Guard variable for re-entrancy checks. Not currently used */ bool internal _notEntered; /** * @notice EIP-20 token name for this token */ string public name; /** * @notice EIP-20 token symbol for this token */ string public symbol; /** * @notice EIP-20 token decimals for this token */ uint8 public decimals; /** * @notice Governor for this contract */ address public gov; /** * @notice Pending governance for this contract */ address public pendingGov; /** * @notice Total supply of GDAOs */ uint256 internal _totalSupply; uint256 internal _cap; address[] internal _minters; mapping (address => uint256) internal _minterIndex; mapping (address => uint256) internal _gdaoBalances; mapping (address => mapping (address => uint256)) internal _allowedFragments; } contract GDAOTokenInterface is GDAOTokenStorage, GDAOGovernanceStorage { /// @notice An event thats emitted when an account changes its delegate event DelegateChanged(address indexed delegator, address indexed fromDelegate, address indexed toDelegate); /// @notice An event thats emitted when a delegate account's vote balance changes event DelegateVotesChanged(address indexed delegate, uint previousBalance, uint newBalance); /*** Gov Events ***/ /** * @notice Event emitted when pendingGov is changed */ event NewPendingGov(address oldPendingGov, address newPendingGov); /** * @notice Event emitted when gov is changed */ event NewGov(address oldGov, address newGov); /* - ERC20 Events - */ /** * @notice EIP20 Transfer event */ event Transfer(address indexed from, address indexed to, uint amount); /** * @notice EIP20 Approval event */ event Approval(address indexed owner, address indexed spender, uint amount); /* - Extra Events - */ /** * @notice Tokens minted event */ event Mint(address to, uint256 amount); event AddMinter(address minter); event RemoveMinter(address minter); /** * @notice Tokens burned event */ event Burn(address who, uint256 amount); event NewCap(uint256 oldCap, uint256 newCap); // Public functions function totalSupply() external view returns (uint256); function transfer(address to, uint256 value) external returns(bool); function transferFrom(address from, address to, uint256 value) external returns(bool); function balanceOf(address who) external view returns(uint256); function allowance(address owner_, address spender) external view returns(uint256); function approve(address spender, uint256 value) external returns (bool); function increaseAllowance(address spender, uint256 addedValue) external returns (bool); function decreaseAllowance(address spender, uint256 subtractedValue) external returns (bool); function burn(uint256 amount) external returns (bool); function cap() external view returns (uint256); function minterCount() external view returns (uint256); function getMinter(uint256 idx) external view returns (address); /* - Governance Functions - */ function getPriorVotes(address account, uint blockNumber) external view returns (uint256); function delegateBySig(address delegatee, uint nonce, uint expiry, uint8 v, bytes32 r, bytes32 s) external; function delegate(address delegatee) external; function delegates(address delegator) external view returns (address); function getCurrentVotes(address account) external view returns (uint256); /* - Permissioned/Governance functions - */ function mint(address to, uint256 amount) external returns (bool); function _setPendingGov(address pendingGov_) external; function _acceptGov() external; function setCap(uint256 ncap) external returns (bool); function addMinter(address minter) external returns (bool); function removeMinter(address minter) external returns (bool); } contract GDAOGovernanceToken is GDAOTokenInterface { /// @notice An event thats emitted when an account changes its delegate event DelegateChanged(address indexed delegator, address indexed fromDelegate, address indexed toDelegate); /// @notice An event thats emitted when a delegate account's vote balance changes event DelegateVotesChanged(address indexed delegate, uint previousBalance, uint newBalance); /** * @notice Delegate votes from `msg.sender` to `delegatee` * @param delegator The address to get delegatee for */ function delegates(address delegator) external view returns (address) { return _delegates[delegator]; } /** * @notice Delegate votes from `msg.sender` to `delegatee` * @param delegatee The address to delegate votes to */ function delegate(address delegatee) external { return _delegate(msg.sender, delegatee); } /** * @notice Delegates votes from signatory to `delegatee` * @param delegatee The address to delegate votes to * @param nonce The contract state required to match the signature * @param expiry The time at which to expire the signature * @param v The recovery byte of the signature * @param r Half of the ECDSA signature pair * @param s Half of the ECDSA signature pair */ function delegateBySig( address delegatee, uint nonce, uint expiry, uint8 v, bytes32 r, bytes32 s ) external { bytes32 domainSeparator = keccak256( abi.encode( DOMAIN_TYPEHASH, keccak256(bytes(name)), getChainId(), address(this) ) ); bytes32 structHash = keccak256( abi.encode( DELEGATION_TYPEHASH, delegatee, nonce, expiry ) ); bytes32 digest = keccak256( abi.encodePacked( "\x19\x01", domainSeparator, structHash ) ); address signatory = ecrecover(digest, v, r, s); require(signatory != address(0), "GDAO::delegateBySig: invalid signature"); require(nonce == nonces[signatory]++, "GDAO::delegateBySig: invalid nonce"); require(now <= expiry, "GDAO::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 (uint256) { uint32 nCheckpoints = numCheckpoints[account]; return nCheckpoints > 0 ? checkpoints[account][nCheckpoints - 1].votes : 0; } /** * @notice Determine the prior number of votes for an account as of a block number * @dev Block number must be a finalized block or else this function will revert to prevent misinformation. * @param account The address of the account to check * @param blockNumber The block number to get the vote balance at * @return The number of votes the account had as of the given block */ function getPriorVotes(address account, uint blockNumber) external view returns (uint256) { require(blockNumber < block.number, "GDAO::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]; uint256 delegatorBalance = _gdaoBalances[delegator]; // balance of underlying GDAOs; _delegates[delegator] = delegatee; emit DelegateChanged(delegator, currentDelegate, delegatee); _moveDelegates(currentDelegate, delegatee, delegatorBalance); } function _moveDelegates(address srcRep, address dstRep, uint256 amount) internal { if (srcRep != dstRep && amount > 0) { if (srcRep != address(0)) { // decrease old representative uint32 srcRepNum = numCheckpoints[srcRep]; uint256 srcRepOld = srcRepNum > 0 ? checkpoints[srcRep][srcRepNum - 1].votes : 0; uint256 srcRepNew = srcRepOld.sub(amount); _writeCheckpoint(srcRep, srcRepNum, srcRepOld, srcRepNew); } if (dstRep != address(0)) { // increase new representative uint32 dstRepNum = numCheckpoints[dstRep]; uint256 dstRepOld = dstRepNum > 0 ? checkpoints[dstRep][dstRepNum - 1].votes : 0; uint256 dstRepNew = dstRepOld.add(amount); _writeCheckpoint(dstRep, dstRepNum, dstRepOld, dstRepNew); } } } function _writeCheckpoint( address delegatee, uint32 nCheckpoints, uint256 oldVotes, uint256 newVotes ) internal { uint32 blockNumber = safe32(block.number, "GDAO::_writeCheckpoint: block number exceeds 32 bits"); if (nCheckpoints > 0 && checkpoints[delegatee][nCheckpoints - 1].fromBlock == blockNumber) { checkpoints[delegatee][nCheckpoints - 1].votes = newVotes; } else { checkpoints[delegatee][nCheckpoints] = Checkpoint(blockNumber, newVotes); numCheckpoints[delegatee] = nCheckpoints + 1; } emit DelegateVotesChanged(delegatee, oldVotes, newVotes); } function safe32(uint n, string memory errorMessage) internal pure returns (uint32) { require(n < 2**32, errorMessage); return uint32(n); } function getChainId() internal pure returns (uint) { uint256 chainId; assembly { chainId := chainid() } return chainId; } } contract GDAOToken is GDAOGovernanceToken { // Modifiers modifier onlyGov() { require(msg.sender == gov); _; } modifier onlyMinter() { require(_minterIndex[msg.sender] != 0 || msg.sender == gov, "not minter"); _; } modifier validRecipient(address to) { require(to != address(0x0)); require(to != address(this)); _; } function initialize( string memory name_, string memory symbol_, uint8 decimals_ ) public { name = name_; symbol = symbol_; decimals = decimals_; _cap = 10000000 * 10 ** uint256(decimals_); } /** * @notice Computes the current totalSupply */ function totalSupply() external view returns (uint256) { return _totalSupply; } function cap() external view returns (uint256) { return _cap; } function setCap(uint256 ncap) external onlyGov returns (bool) { require(ncap >= _totalSupply, "Invalid cap"); uint256 oldCap = _cap; _cap = ncap; emit NewCap(oldCap, ncap); return true; } /** * Add minter * @param minter minter */ function addMinter(address minter) external onlyGov returns (bool) { if (_minterIndex[minter] != 0) { return false; } else { _minters.push(minter); _minterIndex[minter] = _minters.length; emit AddMinter(minter); return true; } } /** * Remove minter * @param minter minter */ function removeMinter(address minter) external onlyGov returns (bool) { uint256 minterIdx = _minterIndex[minter]; if (minterIdx != 0) { uint256 toDelIdx = minterIdx - 1; uint256 lastIdx = _minters.length - 1; address lastMinter = _minters[lastIdx]; _minters[toDelIdx] = lastMinter; _minterIndex[lastMinter] = toDelIdx + 1; _minters.pop(); delete _minterIndex[minter]; emit RemoveMinter(minter); return true; } else { return false; } } function minterCount() external view returns (uint256) { return _minters.length; } function getMinter(uint256 idx) external view returns (address) { return _minters[idx]; } /** * @notice Mints new tokens, increasing totalSupply, and a users balance. * @dev Limited to onlyMinter modifier */ function mint(address to, uint256 amount) external onlyMinter returns (bool) { _mint(to, amount); return true; } function _mint(address to, uint256 amount) internal { require(to != address(0), "Mint to the zero address"); // increase totalSupply _totalSupply = _totalSupply.add(amount); require(_totalSupply <= _cap, "Cap exceeded"); // add balance _gdaoBalances[to] = _gdaoBalances[to].add(amount); emit Transfer(address(0), to, amount); // add delegates to the minter _moveDelegates(address(0), _delegates[to], amount); emit Mint(to, amount); } /** * @notice Burns tokens, decreasing totalSupply, and a users balance. */ function burn(uint256 amount) external returns (bool) { _burn(msg.sender, amount); return true; } function _burn(address who, uint256 amount) internal { // decrease totalSupply _totalSupply = _totalSupply.sub(amount); // decrease cap _cap = _cap.sub(amount); // sub balance _gdaoBalances[who] = _gdaoBalances[who].sub(amount); emit Transfer(who, address(0), amount); // sub delegates _moveDelegates(_delegates[who], address(0), amount); emit Burn(who, amount); } /* - ERC20 functionality - */ /** * @dev Transfer tokens to a specified address. * @param to The address to transfer to. * @param value The amount to be transferred. * @return True on success, false otherwise. */ function transfer(address to, uint256 value) external validRecipient(to) returns (bool) { // sub from balance of sender _gdaoBalances[msg.sender] = _gdaoBalances[msg.sender].sub(value); // add to balance of receiver _gdaoBalances[to] = _gdaoBalances[to].add(value); emit Transfer(msg.sender, to, value); _moveDelegates(_delegates[msg.sender], _delegates[to], value); return true; } /** * @dev Transfer tokens from one address to another. * @param from The address you want to send tokens from. * @param to The address you want to transfer to. * @param value The amount of tokens to be transferred. */ function transferFrom(address from, address to, uint256 value) external validRecipient(to) returns (bool) { // decrease allowance _allowedFragments[from][msg.sender] = _allowedFragments[from][msg.sender].sub(value); // sub from from _gdaoBalances[from] = _gdaoBalances[from].sub(value); _gdaoBalances[to] = _gdaoBalances[to].add(value); emit Transfer(from, to, value); _moveDelegates(_delegates[from], _delegates[to], value); return true; } /** * @param who The address to query. * @return The balance of the specified address. */ function balanceOf(address who) external view returns (uint256) { return _gdaoBalances[who]; } /** * @dev Function to check the amount of tokens that an owner has allowed to a spender. * @param owner_ The address which owns the funds. * @param spender The address which will spend the funds. * @return The number of tokens still available for the spender. */ function allowance(address owner_, address spender) external view returns (uint256) { return _allowedFragments[owner_][spender]; } /** * @dev Approve the passed address to spend the specified amount of tokens on behalf of * msg.sender. This method is included for ERC20 compatibility. * increaseAllowance and decreaseAllowance should be used instead. * Changing an allowance with this method brings the risk that someone may transfer both * the old and the new allowance - if they are both greater than zero - if a transfer * transaction is mined before the later approve() call is mined. * * @param spender The address which will spend the funds. * @param value The amount of tokens to be spent. */ function approve(address spender, uint256 value) external returns (bool) { _allowedFragments[msg.sender][spender] = value; emit Approval(msg.sender, spender, value); return true; } /** * @dev Increase the amount of tokens that an owner has allowed to a spender. * This method should be used instead of approve() to avoid the double approval vulnerability * described above. * @param spender The address which will spend the funds. * @param addedValue The amount of tokens to increase the allowance by. */ function increaseAllowance(address spender, uint256 addedValue) external returns (bool) { _allowedFragments[msg.sender][spender] = _allowedFragments[msg.sender][spender].add(addedValue); emit Approval(msg.sender, spender, _allowedFragments[msg.sender][spender]); return true; } /** * @dev Decrease the amount of tokens that an owner has allowed to a spender. * * @param spender The address which will spend the funds. * @param subtractedValue The amount of tokens to decrease the allowance by. */ function decreaseAllowance(address spender, uint256 subtractedValue) external returns (bool) { uint256 oldValue = _allowedFragments[msg.sender][spender]; if (subtractedValue >= oldValue) { _allowedFragments[msg.sender][spender] = 0; } else { _allowedFragments[msg.sender][spender] = oldValue.sub(subtractedValue); } emit Approval(msg.sender, spender, _allowedFragments[msg.sender][spender]); return true; } /* - Governance Functions - */ /** @notice sets the pendingGov * @param pendingGov_ The address of the governor to use for authentication. */ function _setPendingGov(address pendingGov_) external onlyGov { address oldPendingGov = pendingGov; pendingGov = pendingGov_; emit NewPendingGov(oldPendingGov, pendingGov_); } /** @notice lets msg.sender accept governance * */ function _acceptGov() external { require(msg.sender == pendingGov, "!pending"); address oldGov = gov; gov = pendingGov; pendingGov = address(0); emit NewGov(oldGov, gov); } } contract GDAO is GDAOToken { /** * @notice Initialize the new money market * @param name_ ERC-20 name of this token * @param symbol_ ERC-20 symbol of this token * @param decimals_ ERC-20 decimal precision of this token */ function initialize( string memory name_, string memory symbol_, uint8 decimals_, address initial_owner, uint256 initSupply_ ) public { require(initSupply_ >= 0, "0 init supply"); super.initialize(name_, symbol_, decimals_); _mint(initial_owner, initSupply_); } } contract GDAODelegationStorage { /** * @notice Implementation address for this contract */ address public implementation; } contract GDAODelegatorInterface is GDAODelegationStorage { /** * @notice Emitted when implementation is changed */ event NewImplementation(address oldImplementation, address newImplementation); /** * @notice Called by the gov to update the implementation of the delegator * @param implementation_ The address of the new implementation for delegation * @param allowResign Flag to indicate whether to call _resignImplementation on the old implementation * @param becomeImplementationData The encoded bytes data to be passed to _becomeImplementation */ function _setImplementation(address implementation_, bool allowResign, bytes memory becomeImplementationData) public; } contract GDAODelegateInterface is GDAODelegationStorage { /** * @notice Called by the delegator on a delegate to initialize it for duty * @dev Should revert if any issues arise which make it unfit for delegation * @param data The encoded bytes data for any initialization */ function _becomeImplementation(bytes memory data) public; /** * @notice Called by the delegator on a delegate to forfeit its responsibility */ function _resignImplementation() public; } contract GDAODelegate is GDAO, GDAODelegateInterface { /** * @notice Construct an empty delegate */ constructor() public {} /** * @notice Called by the delegator on a delegate to initialize it for duty * @param data The encoded bytes data for any initialization */ function _becomeImplementation(bytes memory data) public { // Shh -- currently unused data; // Shh -- we don't ever want this hook to be marked pure if (false) { implementation = address(0); } require(msg.sender == gov, "only the gov may call _becomeImplementation"); } /** * @notice Called by the delegator on a delegate to forfeit its responsibility */ function _resignImplementation() public { // Shh -- we don't ever want this hook to be marked pure if (false) { implementation = address(0); } require(msg.sender == gov, "only the gov may call _resignImplementation"); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"minter","type":"address"}],"name":"AddMinter","type":"event"},{"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":false,"internalType":"address","name":"who","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Burn","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":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Mint","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"oldCap","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newCap","type":"uint256"}],"name":"NewCap","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"oldGov","type":"address"},{"indexed":false,"internalType":"address","name":"newGov","type":"address"}],"name":"NewGov","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"oldPendingGov","type":"address"},{"indexed":false,"internalType":"address","name":"newPendingGov","type":"address"}],"name":"NewPendingGov","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"minter","type":"address"}],"name":"RemoveMinter","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"},{"constant":true,"inputs":[],"name":"DELEGATION_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"DOMAIN_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"_acceptGov","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"bytes","name":"data","type":"bytes"}],"name":"_becomeImplementation","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"_resignImplementation","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"pendingGov_","type":"address"}],"name":"_setPendingGov","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"minter","type":"address"}],"name":"addMinter","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"owner_","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"who","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"cap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint32","name":"","type":"uint32"}],"name":"checkpoints","outputs":[{"internalType":"uint32","name":"fromBlock","type":"uint32"},{"internalType":"uint256","name":"votes","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"delegatee","type":"address"}],"name":"delegate","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"delegatee","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"expiry","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"delegateBySig","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"delegator","type":"address"}],"name":"delegates","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getCurrentVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"idx","type":"uint256"}],"name":"getMinter","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"getPriorVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"gov","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"},{"internalType":"uint8","name":"decimals_","type":"uint8"}],"name":"initialize","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"},{"internalType":"uint8","name":"decimals_","type":"uint8"},{"internalType":"address","name":"initial_owner","type":"address"},{"internalType":"uint256","name":"initSupply_","type":"uint256"}],"name":"initialize","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"minterCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"numCheckpoints","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"pendingGov","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"minter","type":"address"}],"name":"removeMinter","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"ncap","type":"uint256"}],"name":"setCap","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
608060405234801561001057600080fd5b506147fe806100206000396000f3fe608060405234801561001057600080fd5b50600436106102325760003560e01c80635b7121f81161013057806395d89b41116100b8578063b4b5ea571161007c578063b4b5ea5714610f26578063c3cda52014610f7e578063dd62ed3e14610ff7578063e7a324dc1461106f578063f1127ed81461108d57610232565b806395d89b4114610d5d578063983b2d5614610de05780639e46e33214610e3c578063a457c2d714610e5a578063a9059cbb14610ec057610232565b80636fcfff45116100ff5780636fcfff4514610ba357806370a0823114610c0757806373f03dff14610c5f578063782d6fe114610ca35780637ecebe0014610d0557610232565b80635b7121f81461091e5780635c19a95c1461098c5780635c60da1b146109d05780636c94522114610a1a57610232565b80633092afd5116101be57806342966c681161018257806342966c681461074957806347786d371461078f5780634bda2e20146107d557806356e67728146107df578063587cde1e1461089a57610232565b80633092afd5146105df578063313ce5671461063b578063355274ea1461065f578063395093511461067d57806340c10f19146106e357610232565b80631624f6c6116102055780631624f6c61461037457806318160ddd146104d357806320606b70146104f157806323b872dd1461050f578063252408101461059557610232565b806306fdde0314610237578063095ea7b3146102ba57806312d43a5114610320578063153ab5051461036a575b600080fd5b61023f611108565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561027f578082015181840152602081019050610264565b50505050905090810190601f1680156102ac5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610306600480360360408110156102d057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506111a6565b604051808215151515815260200191505060405180910390f35b610328611298565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6103726112be565b005b6104d16004803603606081101561038a57600080fd5b81019080803590602001906401000000008111156103a757600080fd5b8201836020820111156103b957600080fd5b803590602001918460018302840111640100000000831117156103db57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192908035906020019064010000000081111561043e57600080fd5b82018360208201111561045057600080fd5b8035906020019184600183028401116401000000008311171561047257600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290803560ff1690602001909291905050506113b0565b005b6104db611410565b6040518082815260200191505060405180910390f35b6104f961141a565b6040518082815260200191505060405180910390f35b61057b6004803603606081101561052557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611436565b604051808215151515815260200191505060405180910390f35b61059d61181f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610621600480360360208110156105f557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611845565b604051808215151515815260200191505060405180910390f35b610643611ad9565b604051808260ff1660ff16815260200191505060405180910390f35b610667611aec565b6040518082815260200191505060405180910390f35b6106c96004803603604081101561069357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611af6565b604051808215151515815260200191505060405180910390f35b61072f600480360360408110156106f957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611cf2565b604051808215151515815260200191505060405180910390f35b6107756004803603602081101561075f57600080fd5b8101908080359060200190929190505050611e15565b604051808215151515815260200191505060405180910390f35b6107bb600480360360208110156107a557600080fd5b8101908080359060200190929190505050611e2a565b604051808215151515815260200191505060405180910390f35b6107dd611f55565b005b610898600480360360208110156107f557600080fd5b810190808035906020019064010000000081111561081257600080fd5b82018360208201111561082457600080fd5b8035906020019184600183028401116401000000008311171561084657600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192905050506121a0565b005b6108dc600480360360208110156108b057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612293565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61094a6004803603602081101561093457600080fd5b81019080803590602001909291905050506122fc565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6109ce600480360360208110156109a257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061233d565b005b6109d861234a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610ba1600480360360a0811015610a3057600080fd5b8101908080359060200190640100000000811115610a4d57600080fd5b820183602082011115610a5f57600080fd5b80359060200191846001830284011164010000000083111715610a8157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050919291929080359060200190640100000000811115610ae457600080fd5b820183602082011115610af657600080fd5b80359060200191846001830284011164010000000083111715610b1857600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290803560ff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612370565b005b610be560048036036020811015610bb957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612403565b604051808263ffffffff1663ffffffff16815260200191505060405180910390f35b610c4960048036036020811015610c1d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612426565b6040518082815260200191505060405180910390f35b610ca160048036036020811015610c7557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061246f565b005b610cef60048036036040811015610cb957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506125cc565b6040518082815260200191505060405180910390f35b610d4760048036036020811015610d1b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612991565b6040518082815260200191505060405180910390f35b610d656129a9565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610da5578082015181840152602081019050610d8a565b50505050905090810190601f168015610dd25780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610e2260048036036020811015610df657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612a47565b604051808215151515815260200191505060405180910390f35b610e44612c0f565b6040518082815260200191505060405180910390f35b610ea660048036036040811015610e7057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612c1c565b604051808215151515815260200191505060405180910390f35b610f0c60048036036040811015610ed657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612eac565b604051808215151515815260200191505060405180910390f35b610f6860048036036020811015610f3c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613185565b6040518082815260200191505060405180910390f35b610ff5600480360360c0811015610f9457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190803560ff169060200190929190803590602001909291908035906020019092919050505061325b565b005b6110596004803603604081101561100d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613639565b6040518082815260200191505060405180910390f35b6110776136c0565b6040518082815260200191505060405180910390f35b6110df600480360360408110156110a357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803563ffffffff1690602001909291905050506136dc565b604051808363ffffffff1663ffffffff1681526020018281526020019250505060405180910390f35b60018054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561119e5780601f106111735761010080835404028352916020019161119e565b820191906000526020600020905b81548152906001019060200180831161118157829003601f168201915b505050505081565b600081600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600015611308576000600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146113ae576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b81526020018061462e602b913960400191505060405180910390fd5b565b82600190805190602001906113c6929190614568565b5081600290805190602001906113dd929190614568565b5080600360006101000a81548160ff021916908360ff1602179055508060ff16600a0a6298968002600681905550505050565b6000600554905090565b60405180806146f3604391396043019050604051809103902081565b600082600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561147357600080fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156114ac57600080fd5b61153b83600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461371d90919063ffffffff16565b600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061160d83600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461371d90919063ffffffff16565b600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506116a283600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461376790919063ffffffff16565b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3611813600b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16856137ef565b60019150509392505050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146118a157600080fd5b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060008114611ace5760006001820390506000600160078054905003905060006007828154811061191157fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050806007848154811061194c57fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018301600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060078054806119e657fe5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690559055600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600090557f2f91b591fc56ac0917953ad01ec225524ee5ef0555213e4c8a9d8c9728ee7ffb86604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a16001945050505050611ad4565b60009150505b919050565b600360009054906101000a900460ff1681565b6000600654905090565b6000611b8782600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461376790919063ffffffff16565b600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b600080600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054141580611d8f5750600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b611e01576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600a8152602001807f6e6f74206d696e7465720000000000000000000000000000000000000000000081525060200191505060405180910390fd5b611e0b8383613a8c565b6001905092915050565b6000611e213383613d99565b60019050919050565b6000600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611e8657600080fd5b600554821015611efe576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f496e76616c69642063617000000000000000000000000000000000000000000081525060200191505060405180910390fd5b60006006549050826006819055507f3690ec10fe6c8cb51af5a7c3c883fc348f471d9b88b901a22e426acef4ebcb7a8184604051808381526020018281526020019250505060405180910390a16001915050919050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612018576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260088152602001807f2170656e64696e6700000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b6000600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600360016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f1f14cfc03e486d23acee577b07bc0b3b23f4888c91fcdba5e0fef5a2549d552381600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a150565b6000156121ea576000600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612290576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b8152602001806146c8602b913960400191505060405180910390fd5b50565b6000600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60006007828154811061230b57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6123473382613fa4565b50565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008110156123e7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f3020696e697420737570706c790000000000000000000000000000000000000081525060200191505060405180910390fd5b6123f28585856113b0565b6123fc8282613a8c565b5050505050565b600d6020528060005260406000206000915054906101000a900463ffffffff1681565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146124c957600080fd5b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f6163d5b9efd962645dd649e6e48a61bcb0f9df00997a2398b80d135a9ab0c61e8183604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a15050565b6000438210612626576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260278152602001806146a16027913960400191505060405180910390fd5b6000600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900463ffffffff16905060008163ffffffff16141561269357600091505061298b565b82600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001840363ffffffff1663ffffffff16815260200190815260200160002060000160009054906101000a900463ffffffff1663ffffffff161161277d57600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001830363ffffffff1663ffffffff1681526020019081526020016000206001015491505061298b565b82600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008063ffffffff16815260200190815260200160002060000160009054906101000a900463ffffffff1663ffffffff1611156127fe57600091505061298b565b600080905060006001830390505b8163ffffffff168163ffffffff161115612925576000600283830363ffffffff168161283457fe5b04820390506128416145e8565b600c60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008363ffffffff1663ffffffff1681526020019081526020016000206040518060400160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff168152602001600182015481525050905086816000015163ffffffff1614156128fd5780602001519550505050505061298b565b86816000015163ffffffff1610156129175781935061291e565b6001820392505b505061280c565b600c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008363ffffffff1663ffffffff1681526020019081526020016000206001015493505050505b92915050565b600e6020528060005260406000206000915090505481565b60028054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015612a3f5780601f10612a1457610100808354040283529160200191612a3f565b820191906000526020600020905b815481529060010190602001808311612a2257829003601f168201915b505050505081565b6000600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612aa357600080fd5b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414612af35760009050612c0a565b60078290806001815401808255809150509060018203906000526020600020016000909192909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050600780549050600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055507f16baa937b08d58713325f93ac58b8a9369a4359bbefb4957d6d9b402735722ab82604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1600190505b919050565b6000600780549050905090565b600080600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050808310612d2c576000600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612dc0565b612d3f838261371d90919063ffffffff16565b600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a3600191505092915050565b600082600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612ee957600080fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612f2257600080fd5b612f7483600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461371d90919063ffffffff16565b600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061300983600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461376790919063ffffffff16565b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a361317a600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16856137ef565b600191505092915050565b600080600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900463ffffffff16905060008163ffffffff16116131ef576000613253565b600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001830363ffffffff1663ffffffff168152602001908152602001600020600101545b915050919050565b600060405180806146f36043913960430190506040518091039020600160405180828054600181600116156101000203166002900480156132d35780601f106132b15761010080835404028352918201916132d3565b820191906000526020600020905b8154815290600101906020018083116132bf575b505091505060405180910390206132e861414c565b30604051602001808581526020018481526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200194505050505060405160208183030381529060405280519060200120905060006040518080614790603a9139603a0190506040518091039020888888604051602001808581526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018281526020019450505050506040516020818303038152906040528051906020012090506000828260405160200180807f190100000000000000000000000000000000000000000000000000000000000081525060020183815260200182815260200192505050604051602081830303815290604052805190602001209050600060018288888860405160008152602001604052604051808581526020018460ff1660ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015613493573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415613525576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602681526020018061476a6026913960400191505060405180910390fd5b600e60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154809291906001019190505589146135ca576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602281526020018061467f6022913960400191505060405180910390fd5b87421115613623576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806146596026913960400191505060405180910390fd5b61362d818b613fa4565b50505050505050505050565b6000600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6040518080614790603a9139603a019050604051809103902081565b600c602052816000526040600020602052806000526040600020600091509150508060000160009054906101000a900463ffffffff16908060010154905082565b600061375f83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250614159565b905092915050565b6000808284019050838110156137e5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561382b5750600081115b15613a8757600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461395b576000600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900463ffffffff1690506000808263ffffffff16116138ce576000613932565b600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001840363ffffffff1663ffffffff168152602001908152602001600020600101545b90506000613949848361371d90919063ffffffff16565b905061395786848484614219565b5050505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614613a86576000600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900463ffffffff1690506000808263ffffffff16116139f9576000613a5d565b600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001840363ffffffff1663ffffffff168152602001908152602001600020600101545b90506000613a74848361376790919063ffffffff16565b9050613a8285848484614219565b5050505b5b505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613b2f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f4d696e7420746f20746865207a65726f2061646472657373000000000000000081525060200191505060405180910390fd5b613b448160055461376790919063ffffffff16565b6005819055506006546005541115613bc4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f436170206578636565646564000000000000000000000000000000000000000081525060200191505060405180910390fd5b613c1681600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461376790919063ffffffff16565b600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3613d2a6000600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836137ef565b7f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d41213968858282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a15050565b613dae8160055461371d90919063ffffffff16565b600581905550613dc98160065461371d90919063ffffffff16565b600681905550613e2181600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461371d90919063ffffffff16565b600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3613f35600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000836137ef565b7fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca58282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a15050565b6000600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f60405160405180910390a46141468284836137ef565b50505050565b6000804690508091505090565b6000838311158290614206576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156141cb5780820151818401526020810190506141b0565b50505050905090810190601f1680156141f85780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b600061423d43604051806060016040528060348152602001614736603491396144ad565b905060008463ffffffff161180156142d257508063ffffffff16600c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001870363ffffffff1663ffffffff16815260200190815260200160002060000160009054906101000a900463ffffffff1663ffffffff16145b156143435781600c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001870363ffffffff1663ffffffff16815260200190815260200160002060010181905550614450565b60405180604001604052808263ffffffff16815260200183815250600c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008663ffffffff1663ffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff1602179055506020820151816001015590505060018401600d60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548163ffffffff021916908363ffffffff1602179055505b8473ffffffffffffffffffffffffffffffffffffffff167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a7248484604051808381526020018281526020019250505060405180910390a25050505050565b60006401000000008310829061455e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015614523578082015181840152602081019050614508565b50505050905090810190601f1680156145505780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5082905092915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106145a957805160ff19168380011785556145d7565b828001600101855582156145d7579182015b828111156145d65782518255916020019190600101906145bb565b5b5090506145e49190614608565b5090565b6040518060400160405280600063ffffffff168152602001600081525090565b61462a91905b8082111561462657600081600090555060010161460e565b5090565b9056fe6f6e6c792074686520676f76206d61792063616c6c205f72657369676e496d706c656d656e746174696f6e4744414f3a3a64656c656761746542795369673a207369676e617475726520657870697265644744414f3a3a64656c656761746542795369673a20696e76616c6964206e6f6e63654744414f3a3a6765745072696f72566f7465733a206e6f74207965742064657465726d696e65646f6e6c792074686520676f76206d61792063616c6c205f6265636f6d65496d706c656d656e746174696f6e454950373132446f6d61696e28737472696e67206e616d652c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e7472616374294744414f3a3a5f7772697465436865636b706f696e743a20626c6f636b206e756d626572206578636565647320333220626974734744414f3a3a64656c656761746542795369673a20696e76616c6964207369676e617475726544656c65676174696f6e28616464726573732064656c6567617465652c75696e74323536206e6f6e63652c75696e743235362065787069727929a265627a7a72315820adadb36441c8a98232b489c3fc5ab9fffde29961065531d28c936c8e7ad5b79d64736f6c63430005110032
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106102325760003560e01c80635b7121f81161013057806395d89b41116100b8578063b4b5ea571161007c578063b4b5ea5714610f26578063c3cda52014610f7e578063dd62ed3e14610ff7578063e7a324dc1461106f578063f1127ed81461108d57610232565b806395d89b4114610d5d578063983b2d5614610de05780639e46e33214610e3c578063a457c2d714610e5a578063a9059cbb14610ec057610232565b80636fcfff45116100ff5780636fcfff4514610ba357806370a0823114610c0757806373f03dff14610c5f578063782d6fe114610ca35780637ecebe0014610d0557610232565b80635b7121f81461091e5780635c19a95c1461098c5780635c60da1b146109d05780636c94522114610a1a57610232565b80633092afd5116101be57806342966c681161018257806342966c681461074957806347786d371461078f5780634bda2e20146107d557806356e67728146107df578063587cde1e1461089a57610232565b80633092afd5146105df578063313ce5671461063b578063355274ea1461065f578063395093511461067d57806340c10f19146106e357610232565b80631624f6c6116102055780631624f6c61461037457806318160ddd146104d357806320606b70146104f157806323b872dd1461050f578063252408101461059557610232565b806306fdde0314610237578063095ea7b3146102ba57806312d43a5114610320578063153ab5051461036a575b600080fd5b61023f611108565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561027f578082015181840152602081019050610264565b50505050905090810190601f1680156102ac5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610306600480360360408110156102d057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506111a6565b604051808215151515815260200191505060405180910390f35b610328611298565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6103726112be565b005b6104d16004803603606081101561038a57600080fd5b81019080803590602001906401000000008111156103a757600080fd5b8201836020820111156103b957600080fd5b803590602001918460018302840111640100000000831117156103db57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192908035906020019064010000000081111561043e57600080fd5b82018360208201111561045057600080fd5b8035906020019184600183028401116401000000008311171561047257600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290803560ff1690602001909291905050506113b0565b005b6104db611410565b6040518082815260200191505060405180910390f35b6104f961141a565b6040518082815260200191505060405180910390f35b61057b6004803603606081101561052557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611436565b604051808215151515815260200191505060405180910390f35b61059d61181f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610621600480360360208110156105f557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611845565b604051808215151515815260200191505060405180910390f35b610643611ad9565b604051808260ff1660ff16815260200191505060405180910390f35b610667611aec565b6040518082815260200191505060405180910390f35b6106c96004803603604081101561069357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611af6565b604051808215151515815260200191505060405180910390f35b61072f600480360360408110156106f957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611cf2565b604051808215151515815260200191505060405180910390f35b6107756004803603602081101561075f57600080fd5b8101908080359060200190929190505050611e15565b604051808215151515815260200191505060405180910390f35b6107bb600480360360208110156107a557600080fd5b8101908080359060200190929190505050611e2a565b604051808215151515815260200191505060405180910390f35b6107dd611f55565b005b610898600480360360208110156107f557600080fd5b810190808035906020019064010000000081111561081257600080fd5b82018360208201111561082457600080fd5b8035906020019184600183028401116401000000008311171561084657600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192905050506121a0565b005b6108dc600480360360208110156108b057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612293565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61094a6004803603602081101561093457600080fd5b81019080803590602001909291905050506122fc565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6109ce600480360360208110156109a257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061233d565b005b6109d861234a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610ba1600480360360a0811015610a3057600080fd5b8101908080359060200190640100000000811115610a4d57600080fd5b820183602082011115610a5f57600080fd5b80359060200191846001830284011164010000000083111715610a8157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050919291929080359060200190640100000000811115610ae457600080fd5b820183602082011115610af657600080fd5b80359060200191846001830284011164010000000083111715610b1857600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290803560ff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612370565b005b610be560048036036020811015610bb957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612403565b604051808263ffffffff1663ffffffff16815260200191505060405180910390f35b610c4960048036036020811015610c1d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612426565b6040518082815260200191505060405180910390f35b610ca160048036036020811015610c7557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061246f565b005b610cef60048036036040811015610cb957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506125cc565b6040518082815260200191505060405180910390f35b610d4760048036036020811015610d1b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612991565b6040518082815260200191505060405180910390f35b610d656129a9565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610da5578082015181840152602081019050610d8a565b50505050905090810190601f168015610dd25780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610e2260048036036020811015610df657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612a47565b604051808215151515815260200191505060405180910390f35b610e44612c0f565b6040518082815260200191505060405180910390f35b610ea660048036036040811015610e7057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612c1c565b604051808215151515815260200191505060405180910390f35b610f0c60048036036040811015610ed657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612eac565b604051808215151515815260200191505060405180910390f35b610f6860048036036020811015610f3c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613185565b6040518082815260200191505060405180910390f35b610ff5600480360360c0811015610f9457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190803560ff169060200190929190803590602001909291908035906020019092919050505061325b565b005b6110596004803603604081101561100d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613639565b6040518082815260200191505060405180910390f35b6110776136c0565b6040518082815260200191505060405180910390f35b6110df600480360360408110156110a357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803563ffffffff1690602001909291905050506136dc565b604051808363ffffffff1663ffffffff1681526020018281526020019250505060405180910390f35b60018054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561119e5780601f106111735761010080835404028352916020019161119e565b820191906000526020600020905b81548152906001019060200180831161118157829003601f168201915b505050505081565b600081600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600015611308576000600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146113ae576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b81526020018061462e602b913960400191505060405180910390fd5b565b82600190805190602001906113c6929190614568565b5081600290805190602001906113dd929190614568565b5080600360006101000a81548160ff021916908360ff1602179055508060ff16600a0a6298968002600681905550505050565b6000600554905090565b60405180806146f3604391396043019050604051809103902081565b600082600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561147357600080fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156114ac57600080fd5b61153b83600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461371d90919063ffffffff16565b600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061160d83600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461371d90919063ffffffff16565b600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506116a283600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461376790919063ffffffff16565b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3611813600b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16856137ef565b60019150509392505050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146118a157600080fd5b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060008114611ace5760006001820390506000600160078054905003905060006007828154811061191157fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050806007848154811061194c57fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018301600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060078054806119e657fe5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690559055600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600090557f2f91b591fc56ac0917953ad01ec225524ee5ef0555213e4c8a9d8c9728ee7ffb86604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a16001945050505050611ad4565b60009150505b919050565b600360009054906101000a900460ff1681565b6000600654905090565b6000611b8782600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461376790919063ffffffff16565b600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b600080600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054141580611d8f5750600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b611e01576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600a8152602001807f6e6f74206d696e7465720000000000000000000000000000000000000000000081525060200191505060405180910390fd5b611e0b8383613a8c565b6001905092915050565b6000611e213383613d99565b60019050919050565b6000600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611e8657600080fd5b600554821015611efe576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f496e76616c69642063617000000000000000000000000000000000000000000081525060200191505060405180910390fd5b60006006549050826006819055507f3690ec10fe6c8cb51af5a7c3c883fc348f471d9b88b901a22e426acef4ebcb7a8184604051808381526020018281526020019250505060405180910390a16001915050919050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612018576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260088152602001807f2170656e64696e6700000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b6000600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600360016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f1f14cfc03e486d23acee577b07bc0b3b23f4888c91fcdba5e0fef5a2549d552381600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a150565b6000156121ea576000600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612290576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b8152602001806146c8602b913960400191505060405180910390fd5b50565b6000600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60006007828154811061230b57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6123473382613fa4565b50565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008110156123e7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f3020696e697420737570706c790000000000000000000000000000000000000081525060200191505060405180910390fd5b6123f28585856113b0565b6123fc8282613a8c565b5050505050565b600d6020528060005260406000206000915054906101000a900463ffffffff1681565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146124c957600080fd5b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f6163d5b9efd962645dd649e6e48a61bcb0f9df00997a2398b80d135a9ab0c61e8183604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a15050565b6000438210612626576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260278152602001806146a16027913960400191505060405180910390fd5b6000600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900463ffffffff16905060008163ffffffff16141561269357600091505061298b565b82600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001840363ffffffff1663ffffffff16815260200190815260200160002060000160009054906101000a900463ffffffff1663ffffffff161161277d57600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001830363ffffffff1663ffffffff1681526020019081526020016000206001015491505061298b565b82600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008063ffffffff16815260200190815260200160002060000160009054906101000a900463ffffffff1663ffffffff1611156127fe57600091505061298b565b600080905060006001830390505b8163ffffffff168163ffffffff161115612925576000600283830363ffffffff168161283457fe5b04820390506128416145e8565b600c60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008363ffffffff1663ffffffff1681526020019081526020016000206040518060400160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff168152602001600182015481525050905086816000015163ffffffff1614156128fd5780602001519550505050505061298b565b86816000015163ffffffff1610156129175781935061291e565b6001820392505b505061280c565b600c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008363ffffffff1663ffffffff1681526020019081526020016000206001015493505050505b92915050565b600e6020528060005260406000206000915090505481565b60028054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015612a3f5780601f10612a1457610100808354040283529160200191612a3f565b820191906000526020600020905b815481529060010190602001808311612a2257829003601f168201915b505050505081565b6000600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612aa357600080fd5b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414612af35760009050612c0a565b60078290806001815401808255809150509060018203906000526020600020016000909192909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050600780549050600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055507f16baa937b08d58713325f93ac58b8a9369a4359bbefb4957d6d9b402735722ab82604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1600190505b919050565b6000600780549050905090565b600080600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050808310612d2c576000600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612dc0565b612d3f838261371d90919063ffffffff16565b600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a3600191505092915050565b600082600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612ee957600080fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612f2257600080fd5b612f7483600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461371d90919063ffffffff16565b600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061300983600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461376790919063ffffffff16565b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a361317a600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16856137ef565b600191505092915050565b600080600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900463ffffffff16905060008163ffffffff16116131ef576000613253565b600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001830363ffffffff1663ffffffff168152602001908152602001600020600101545b915050919050565b600060405180806146f36043913960430190506040518091039020600160405180828054600181600116156101000203166002900480156132d35780601f106132b15761010080835404028352918201916132d3565b820191906000526020600020905b8154815290600101906020018083116132bf575b505091505060405180910390206132e861414c565b30604051602001808581526020018481526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200194505050505060405160208183030381529060405280519060200120905060006040518080614790603a9139603a0190506040518091039020888888604051602001808581526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018281526020019450505050506040516020818303038152906040528051906020012090506000828260405160200180807f190100000000000000000000000000000000000000000000000000000000000081525060020183815260200182815260200192505050604051602081830303815290604052805190602001209050600060018288888860405160008152602001604052604051808581526020018460ff1660ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015613493573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415613525576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602681526020018061476a6026913960400191505060405180910390fd5b600e60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154809291906001019190505589146135ca576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602281526020018061467f6022913960400191505060405180910390fd5b87421115613623576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806146596026913960400191505060405180910390fd5b61362d818b613fa4565b50505050505050505050565b6000600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6040518080614790603a9139603a019050604051809103902081565b600c602052816000526040600020602052806000526040600020600091509150508060000160009054906101000a900463ffffffff16908060010154905082565b600061375f83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250614159565b905092915050565b6000808284019050838110156137e5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561382b5750600081115b15613a8757600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461395b576000600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900463ffffffff1690506000808263ffffffff16116138ce576000613932565b600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001840363ffffffff1663ffffffff168152602001908152602001600020600101545b90506000613949848361371d90919063ffffffff16565b905061395786848484614219565b5050505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614613a86576000600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900463ffffffff1690506000808263ffffffff16116139f9576000613a5d565b600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001840363ffffffff1663ffffffff168152602001908152602001600020600101545b90506000613a74848361376790919063ffffffff16565b9050613a8285848484614219565b5050505b5b505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613b2f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f4d696e7420746f20746865207a65726f2061646472657373000000000000000081525060200191505060405180910390fd5b613b448160055461376790919063ffffffff16565b6005819055506006546005541115613bc4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f436170206578636565646564000000000000000000000000000000000000000081525060200191505060405180910390fd5b613c1681600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461376790919063ffffffff16565b600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3613d2a6000600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836137ef565b7f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d41213968858282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a15050565b613dae8160055461371d90919063ffffffff16565b600581905550613dc98160065461371d90919063ffffffff16565b600681905550613e2181600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461371d90919063ffffffff16565b600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3613f35600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000836137ef565b7fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca58282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a15050565b6000600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f60405160405180910390a46141468284836137ef565b50505050565b6000804690508091505090565b6000838311158290614206576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156141cb5780820151818401526020810190506141b0565b50505050905090810190601f1680156141f85780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b600061423d43604051806060016040528060348152602001614736603491396144ad565b905060008463ffffffff161180156142d257508063ffffffff16600c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001870363ffffffff1663ffffffff16815260200190815260200160002060000160009054906101000a900463ffffffff1663ffffffff16145b156143435781600c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001870363ffffffff1663ffffffff16815260200190815260200160002060010181905550614450565b60405180604001604052808263ffffffff16815260200183815250600c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008663ffffffff1663ffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff1602179055506020820151816001015590505060018401600d60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548163ffffffff021916908363ffffffff1602179055505b8473ffffffffffffffffffffffffffffffffffffffff167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a7248484604051808381526020018281526020019250505060405180910390a25050505050565b60006401000000008310829061455e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015614523578082015181840152602081019050614508565b50505050905090810190601f1680156145505780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5082905092915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106145a957805160ff19168380011785556145d7565b828001600101855582156145d7579182015b828111156145d65782518255916020019190600101906145bb565b5b5090506145e49190614608565b5090565b6040518060400160405280600063ffffffff168152602001600081525090565b61462a91905b8082111561462657600081600090555060010161460e565b5090565b9056fe6f6e6c792074686520676f76206d61792063616c6c205f72657369676e496d706c656d656e746174696f6e4744414f3a3a64656c656761746542795369673a207369676e617475726520657870697265644744414f3a3a64656c656761746542795369673a20696e76616c6964206e6f6e63654744414f3a3a6765745072696f72566f7465733a206e6f74207965742064657465726d696e65646f6e6c792074686520676f76206d61792063616c6c205f6265636f6d65496d706c656d656e746174696f6e454950373132446f6d61696e28737472696e67206e616d652c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e7472616374294744414f3a3a5f7772697465436865636b706f696e743a20626c6f636b206e756d626572206578636565647320333220626974734744414f3a3a64656c656761746542795369673a20696e76616c6964207369676e617475726544656c65676174696f6e28616464726573732064656c6567617465652c75696e74323536206e6f6e63652c75696e743235362065787069727929a265627a7a72315820adadb36441c8a98232b489c3fc5ab9fffde29961065531d28c936c8e7ad5b79d64736f6c63430005110032
Deployed Bytecode Sourcemap
29681:1050:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;29681:1050:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6756:18;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;6756:18:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25186:235;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;25186:235:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;7043:18;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;30453:275;;;:::i;:::-;;18362:278;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;18362:278:0;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;18362:278:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;18362:278:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;18362:278:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;18362:278:0;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;18362:278:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;18362:278:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;18362:278:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;18362:278:0;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;18713:125;;;:::i;:::-;;;;;;;;;;;;;;;;;;;673:122;;;:::i;:::-;;;;;;;;;;;;;;;;;;;23258:553;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;23258:553:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;7141:25;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;19753:646;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;19753:646:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;6952:21;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;18846:109;;;:::i;:::-;;;;;;;;;;;;;;;;;;;25794:345;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;25794:345:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;20836:167;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;20836:167:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;21642:143;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;21642:143:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;18963:271;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;18963:271:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;27393:236;;;:::i;:::-;;29998:345;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;29998:345:0;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;29998:345:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;29998:345:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;29998:345:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;29998:345:0;;;;;;;;;;;;;;;:::i;:::-;;11348:149;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11348:149:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;20551:139;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;20551:139:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;11641:104;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11641:104:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;28383:29;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;27900:363;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;27900:363:0;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;27900:363:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;27900:363:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;27900:363:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;27900:363:0;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;27900:363:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;27900:363:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;27900:363:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;27900:363:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;551:49;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;551:49:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;23929:132;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;23929:132:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;27087:230;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;27087:230:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;14242:1253;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;14242:1253:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1087:39;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1087:39:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;6852:20;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;6852:20:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19309:362;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;19309:362:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;20407:132;;;:::i;:::-;;;;;;;;;;;;;;;;;;;26401:514;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;26401:514:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;22514:487;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;22514:487:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;13556:255;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;13556:255:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;12179:1176;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;12179:1176:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;24368:176;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;24368:176:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;889:117;;;:::i;:::-;;;;;;;;;;;;;;;;;;;412:70;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;412:70:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6756:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;25186:235::-;25271:4;25334:5;25293:17;:29;25311:10;25293:29;;;;;;;;;;;;;;;:38;25323:7;25293:38;;;;;;;;;;;;;;;:46;;;;25376:7;25355:36;;25364:10;25355:36;;;25385:5;25355:36;;;;;;;;;;;;;;;;;;25409:4;25402:11;;25186:235;;;;:::o;7043:18::-;;;;;;;;;;;;;:::o;30453:275::-;30574:5;30570:65;;;30621:1;30596:14;;:27;;;;;;;;;;;;;;;;;;30570:65;30669:3;;;;;;;;;;;30655:17;;:10;:17;;;30647:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30453:275::o;18362:278::-;18516:5;18509:4;:12;;;;;;;;;;;;:::i;:::-;;18541:7;18532:6;:16;;;;;;;;;;;;:::i;:::-;;18570:9;18559:8;;:20;;;;;;;;;;;;;;;;;;18622:9;18614:18;;18608:2;:24;18597:8;:35;18590:4;:42;;;;18362:278;;;:::o;18713:125::-;18786:7;18818:12;;18811:19;;18713:125;:::o;673:122::-;715:80;;;;;;;;;;;;;;;;;;;673:122;:::o;23258:553::-;23385:4;23363:2;18290:3;18276:18;;:2;:18;;;;18268:27;;;;;;18328:4;18314:19;;:2;:19;;;;18306:28;;;;;;23476:46;23516:5;23476:17;:23;23494:4;23476:23;;;;;;;;;;;;;;;:35;23500:10;23476:35;;;;;;;;;;;;;;;;:39;;:46;;;;:::i;:::-;23438:17;:23;23456:4;23438:23;;;;;;;;;;;;;;;:35;23462:10;23438:35;;;;;;;;;;;;;;;:84;;;;23583:30;23607:5;23583:13;:19;23597:4;23583:19;;;;;;;;;;;;;;;;:23;;:30;;;;:::i;:::-;23561:13;:19;23575:4;23561:19;;;;;;;;;;;;;;;:52;;;;23644:28;23666:5;23644:13;:17;23658:2;23644:17;;;;;;;;;;;;;;;;:21;;:28;;;;:::i;:::-;23624:13;:17;23638:2;23624:17;;;;;;;;;;;;;;;:48;;;;23703:2;23688:25;;23697:4;23688:25;;;23707:5;23688:25;;;;;;;;;;;;;;;;;;23726:55;23741:10;:16;23752:4;23741:16;;;;;;;;;;;;;;;;;;;;;;;;;23759:10;:14;23770:2;23759:14;;;;;;;;;;;;;;;;;;;;;;;;;23775:5;23726:14;:55::i;:::-;23799:4;23792:11;;23258:553;;;;;;:::o;7141:25::-;;;;;;;;;;;;;:::o;19753:646::-;19847:4;18055:3;;;;;;;;;;;18041:17;;:10;:17;;;18033:26;;;;;;19869:17;19889:12;:20;19902:6;19889:20;;;;;;;;;;;;;;;;19869:40;;19937:1;19924:9;:14;19920:472;;19955:16;19986:1;19974:9;:13;19955:32;;20002:15;20038:1;20020:8;:15;;;;:19;20002:37;;20054:18;20075:8;20084:7;20075:17;;;;;;;;;;;;;;;;;;;;;;;;;20054:38;;20130:10;20109:8;20118;20109:18;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;20193:1;20182:8;:12;20155;:24;20168:10;20155:24;;;;;;;;;;;;;;;:39;;;;20209:8;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20245:12;:20;20258:6;20245:20;;;;;;;;;;;;;;;20238:27;;;20287:20;20300:6;20287:20;;;;;;;;;;;;;;;;;;;;;;20331:4;20324:11;;;;;;;;19920:472;20375:5;20368:12;;;18070:1;19753:646;;;:::o;6952:21::-;;;;;;;;;;;;;:::o;18846:109::-;18911:7;18943:4;;18936:11;;18846:109;:::o;25794:345::-;25894:4;25970:54;26013:10;25970:17;:29;25988:10;25970:29;;;;;;;;;;;;;;;:38;26000:7;25970:38;;;;;;;;;;;;;;;;:42;;:54;;;;:::i;:::-;25916:17;:29;25934:10;25916:29;;;;;;;;;;;;;;;:38;25946:7;25916:38;;;;;;;;;;;;;;;:108;;;;26061:7;26040:69;;26049:10;26040:69;;;26070:17;:29;26088:10;26070:29;;;;;;;;;;;;;;;:38;26100:7;26070:38;;;;;;;;;;;;;;;;26040:69;;;;;;;;;;;;;;;;;;26127:4;26120:11;;25794:345;;;;:::o;20836:167::-;20934:4;18156:1;18128:12;:24;18141:10;18128:24;;;;;;;;;;;;;;;;:29;;:50;;;;18175:3;;;;;;;;;;;18161:17;;:10;:17;;;18128:50;18120:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20956:17;20962:2;20966:6;20956:5;:17::i;:::-;20991:4;20984:11;;20836:167;;;;:::o;21642:143::-;21708:4;21730:25;21736:10;21748:6;21730:5;:25::i;:::-;21773:4;21766:11;;21642:143;;;:::o;18963:271::-;19046:4;18055:3;;;;;;;;;;;18041:17;;:10;:17;;;18033:26;;;;;;19084:12;;19076:4;:20;;19068:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19123:14;19140:4;;19123:21;;19162:4;19155;:11;;;;19182:20;19189:6;19197:4;19182:20;;;;;;;;;;;;;;;;;;;;;;;;19222:4;19215:11;;;18963:271;;;:::o;27393:236::-;27471:10;;;;;;;;;;;27457:24;;:10;:24;;;27449:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27505:14;27522:3;;;;;;;;;;;27505:20;;27542:10;;;;;;;;;;;27536:3;;:16;;;;;;;;;;;;;;;;;;27584:1;27563:10;;:23;;;;;;;;;;;;;;;;;;27602:19;27609:6;27617:3;;;;;;;;;;;27602:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27393:236;:::o;29998:345::-;30189:5;30185:65;;;30236:1;30211:14;;:27;;;;;;;;;;;;;;;;;;30185:65;30284:3;;;;;;;;;;;30270:17;;:10;:17;;;30262:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29998:345;:::o;11348:149::-;11436:7;11468:10;:21;11479:9;11468:21;;;;;;;;;;;;;;;;;;;;;;;;;11461:28;;11348:149;;;:::o;20551:139::-;20636:7;20669:8;20678:3;20669:13;;;;;;;;;;;;;;;;;;;;;;;;;20662:20;;20551:139;;;:::o;11641:104::-;11705:32;11715:10;11727:9;11705;:32::i;:::-;11641:104;:::o;28383:29::-;;;;;;;;;;;;;:::o;27900:363::-;28132:1;28117:11;:16;;28109:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28164:43;28181:5;28188:7;28197:9;28164:16;:43::i;:::-;28220:33;28226:13;28241:11;28220:5;:33::i;:::-;27900:363;;;;;:::o;551:49::-;;;;;;;;;;;;;;;;;;;;;;:::o;23929:132::-;24005:7;24035:13;:18;24049:3;24035:18;;;;;;;;;;;;;;;;24028:25;;23929:132;;;:::o;27087:230::-;18055:3;;;;;;;;;;;18041:17;;:10;:17;;;18033:26;;;;;;27183:21;27207:10;;;;;;;;;;;27183:34;;27241:11;27228:10;;:24;;;;;;;;;;;;;;;;;;27268:41;27282:13;27297:11;27268:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18070:1;27087:230;:::o;14242:1253::-;14350:7;14397:12;14383:11;:26;14375:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14466:19;14488:14;:23;14503:7;14488:23;;;;;;;;;;;;;;;;;;;;;;;;;14466:45;;14542:1;14526:12;:17;;;14522:58;;;14567:1;14560:8;;;;;14522:58;14692:11;14640;:20;14652:7;14640:20;;;;;;;;;;;;;;;:38;14676:1;14661:12;:16;14640:38;;;;;;;;;;;;;;;:48;;;;;;;;;;;;:63;;;14636:147;;14727:11;:20;14739:7;14727:20;;;;;;;;;;;;;;;:38;14763:1;14748:12;:16;14727:38;;;;;;;;;;;;;;;:44;;;14720:51;;;;;14636:147;14880:11;14844;:20;14856:7;14844:20;;;;;;;;;;;;;;;:23;14865:1;14844:23;;;;;;;;;;;;;:33;;;;;;;;;;;;:47;;;14840:88;;;14915:1;14908:8;;;;;14840:88;14940:12;14955:1;14940:16;;14967:12;14997:1;14982:12;:16;14967:31;;15009:428;15024:5;15016:13;;:5;:13;;;15009:428;;;15046:13;15088:1;15079:5;15071;:13;15070:19;;;;;;;;15062:5;:27;15046:43;;15131:20;;:::i;:::-;15154:11;:20;15166:7;15154:20;;;;;;;;;;;;;;;:28;15175:6;15154:28;;;;;;;;;;;;;;;15131:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15217:11;15201:2;:12;;;:27;;;15197:229;;;15256:2;:8;;;15249:15;;;;;;;;;15197:229;15305:11;15290:2;:12;;;:26;;;15286:140;;;15345:6;15337:14;;15286:140;;;15409:1;15400:6;:10;15392:18;;15286:140;15009:428;;;;;15454:11;:20;15466:7;15454:20;;;;;;;;;;;;;;;:27;15475:5;15454:27;;;;;;;;;;;;;;;:33;;;15447:40;;;;;14242:1253;;;;;:::o;1087:39::-;;;;;;;;;;;;;;;;;:::o;6852:20::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;19309:362::-;19400:4;18055:3;;;;;;;;;;;18041:17;;:10;:17;;;18033:26;;;;;;19450:1;19426:12;:20;19439:6;19426:20;;;;;;;;;;;;;;;;:25;19422:242;;19475:5;19468:12;;;;19422:242;19513:8;19527:6;19513:21;;39:1:-1;33:3;27:10;23:18;57:10;52:3;45:23;79:10;72:17;;0:93;19513:21:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19572:8;:15;;;;19549:12;:20;19562:6;19549:20;;;;;;;;;;;;;;;:38;;;;19607:17;19617:6;19607:17;;;;;;;;;;;;;;;;;;;;;;19648:4;19641:11;;18070:1;19309:362;;;:::o;20407:132::-;20483:7;20516:8;:15;;;;20509:22;;20407:132;:::o;26401:514::-;26506:4;26528:16;26547:17;:29;26565:10;26547:29;;;;;;;;;;;;;;;:38;26577:7;26547:38;;;;;;;;;;;;;;;;26528:57;;26619:8;26600:15;:27;26596:205;;26685:1;26644:17;:29;26662:10;26644:29;;;;;;;;;;;;;;;:38;26674:7;26644:38;;;;;;;;;;;;;;;:42;;;;26596:205;;;26760:29;26773:15;26760:8;:12;;:29;;;;:::i;:::-;26719:17;:29;26737:10;26719:29;;;;;;;;;;;;;;;:38;26749:7;26719:38;;;;;;;;;;;;;;;:70;;;;26596:205;26837:7;26816:69;;26825:10;26816:69;;;26846:17;:29;26864:10;26846:29;;;;;;;;;;;;;;;:38;26876:7;26846:38;;;;;;;;;;;;;;;;26816:69;;;;;;;;;;;;;;;;;;26903:4;26896:11;;;26401:514;;;;:::o;22514:487::-;22623:4;22601:2;18290:3;18276:18;;:2;:18;;;;18268:27;;;;;;18328:4;18314:19;;:2;:19;;;;18306:28;;;;;;22714:36;22744:5;22714:13;:25;22728:10;22714:25;;;;;;;;;;;;;;;;:29;;:36;;;;:::i;:::-;22686:13;:25;22700:10;22686:25;;;;;;;;;;;;;;;:64;;;;22822:28;22844:5;22822:13;:17;22836:2;22822:17;;;;;;;;;;;;;;;;:21;;:28;;;;:::i;:::-;22802:13;:17;22816:2;22802:17;;;;;;;;;;;;;;;:48;;;;22887:2;22866:31;;22875:10;22866:31;;;22891:5;22866:31;;;;;;;;;;;;;;;;;;22910:61;22925:10;:22;22936:10;22925:22;;;;;;;;;;;;;;;;;;;;;;;;;22949:10;:14;22960:2;22949:14;;;;;;;;;;;;;;;;;;;;;;;;;22965:5;22910:14;:61::i;:::-;22989:4;22982:11;;22514:487;;;;;:::o;13556:255::-;13648:7;13673:19;13695:14;:23;13710:7;13695:23;;;;;;;;;;;;;;;;;;;;;;;;;13673:45;;13751:1;13736:12;:16;;;:67;;13802:1;13736:67;;;13755:11;:20;13767:7;13755:20;;;;;;;;;;;;;;;:38;13791:1;13776:12;:16;13755:38;;;;;;;;;;;;;;;:44;;;13736:67;13729:74;;;13556:255;;;:::o;12179:1176::-;12372:23;715:80;;;;;;;;;;;;;;;;;;;12501:4;12485:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12526:12;:10;:12::i;:::-;12565:4;12422:163;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;12422:163:0;;;12398:198;;;;;;12372:224;;12609:18;935:71;;;;;;;;;;;;;;;;;;;12721:9;12749:5;12773:6;12654:140;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;12654:140:0;;;12630:175;;;;;;12609:196;;12818:14;12923:15;12957:10;12859:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;12859:123:0;;;12835:158;;;;;;12818:175;;13006:17;13026:26;13036:6;13044:1;13047;13050;13026:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;13026:26:0;;;;;;;;13006:46;;13092:1;13071:23;;:9;:23;;;;13063:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13165:6;:17;13172:9;13165:17;;;;;;;;;;;;;;;;:19;;;;;;;;;;;;13156:5;:28;13148:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13249:6;13242:3;:13;;13234:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13316:31;13326:9;13337;13316;:31::i;:::-;13309:38;;;;12179:1176;;;;;;:::o;24368:176::-;24470:7;24502:17;:25;24520:6;24502:25;;;;;;;;;;;;;;;:34;24528:7;24502:34;;;;;;;;;;;;;;;;24495:41;;24368:176;;;;:::o;889:117::-;935:71;;;;;;;;;;;;;;;;;;;889:117;:::o;412:70::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2471:136::-;2529:7;2556:43;2560:1;2563;2556:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2549:50;;2471:136;;;;:::o;2007:181::-;2065:7;2085:9;2101:1;2097;:5;2085:17;;2126:1;2121;:6;;2113:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2179:1;2172:8;;;2007:181;;;;:::o;15940:947::-;16046:6;16036:16;;:6;:16;;;;:30;;;;;16065:1;16056:6;:10;16036:30;16032:848;;;16105:1;16087:20;;:6;:20;;;16083:385;;16176:16;16195:14;:22;16210:6;16195:22;;;;;;;;;;;;;;;;;;;;;;;;;16176:41;;16236:17;16268:1;16256:9;:13;;;:60;;16315:1;16256:60;;;16272:11;:19;16284:6;16272:19;;;;;;;;;;;;;;;:34;16304:1;16292:9;:13;16272:34;;;;;;;;;;;;;;;:40;;;16256:60;16236:80;;16335:17;16355:21;16369:6;16355:9;:13;;:21;;;;:::i;:::-;16335:41;;16395:57;16412:6;16420:9;16431;16442;16395:16;:57::i;:::-;16083:385;;;;16506:1;16488:20;;:6;:20;;;16484:385;;16577:16;16596:14;:22;16611:6;16596:22;;;;;;;;;;;;;;;;;;;;;;;;;16577:41;;16637:17;16669:1;16657:9;:13;;;:60;;16716:1;16657:60;;;16673:11;:19;16685:6;16673:19;;;;;;;;;;;;;;;:34;16705:1;16693:9;:13;16673:34;;;;;;;;;;;;;;;:40;;;16657:60;16637:80;;16736:17;16756:21;16770:6;16756:9;:13;;:21;;;;:::i;:::-;16736:41;;16796:57;16813:6;16821:9;16832;16843;16796:16;:57::i;:::-;16484:385;;;;16032:848;15940:947;;;:::o;21011:532::-;21108:1;21094:16;;:2;:16;;;;21086:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21194:24;21211:6;21194:12;;:16;;:24;;;;:::i;:::-;21179:12;:39;;;;21253:4;;21237:12;;:20;;21229:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21327:29;21349:6;21327:13;:17;21341:2;21327:17;;;;;;;;;;;;;;;;:21;;:29;;;;:::i;:::-;21307:13;:17;21321:2;21307:17;;;;;;;;;;;;;;;:49;;;;21391:2;21370:32;;21387:1;21370:32;;;21395:6;21370:32;;;;;;;;;;;;;;;;;;21455:50;21478:1;21482:10;:14;21493:2;21482:14;;;;;;;;;;;;;;;;;;;;;;;;;21498:6;21455:14;:50::i;:::-;21519:16;21524:2;21528:6;21519:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;21011:532;;:::o;21793:463::-;21915:24;21932:6;21915:12;;:16;;:24;;;;:::i;:::-;21900:12;:39;;;;21980:16;21989:6;21980:4;;:8;;:16;;;;:::i;:::-;21973:4;:23;;;;22050:30;22073:6;22050:13;:18;22064:3;22050:18;;;;;;;;;;;;;;;;:22;;:30;;;;:::i;:::-;22029:13;:18;22043:3;22029:18;;;;;;;;;;;;;;;:51;;;;22116:1;22094:33;;22103:3;22094:33;;;22120:6;22094:33;;;;;;;;;;;;;;;;;;22166:51;22181:10;:15;22192:3;22181:15;;;;;;;;;;;;;;;;;;;;;;;;;22206:1;22210:6;22166:14;:51::i;:::-;22231:17;22236:3;22241:6;22231:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;21793:463;;:::o;15503:429::-;15594:23;15620:10;:21;15631:9;15620:21;;;;;;;;;;;;;;;;;;;;;;;;;15594:47;;15652:24;15679:13;:24;15693:9;15679:24;;;;;;;;;;;;;;;;15652:51;;15770:9;15746:10;:21;15757:9;15746:21;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;15841:9;15797:54;;15824:15;15797:54;;15813:9;15797:54;;;;;;;;;;;;15864:60;15879:15;15896:9;15907:16;15864:14;:60::i;:::-;15503:429;;;;:::o;17776:153::-;17821:4;17838:15;17886:9;17875:20;;17914:7;17907:14;;;17776:153;:::o;2910:192::-;2996:7;3029:1;3024;:6;;3032:12;3016:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;3016:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3056:9;3072:1;3068;:5;3056:17;;3093:1;3086:8;;;2910:192;;;;;:::o;16895:704::-;17074:18;17095:76;17102:12;17095:76;;;;;;;;;;;;;;;;;:6;:76::i;:::-;17074:97;;17203:1;17188:12;:16;;;:85;;;;;17262:11;17208:65;;:11;:22;17220:9;17208:22;;;;;;;;;;;;;;;:40;17246:1;17231:12;:16;17208:40;;;;;;;;;;;;;;;:50;;;;;;;;;;;;:65;;;17188:85;17184:339;;;17339:8;17290:11;:22;17302:9;17290:22;;;;;;;;;;;;;;;:40;17328:1;17313:12;:16;17290:40;;;;;;;;;;;;;;;:46;;:57;;;;17184:339;;;17419:33;;;;;;;;17430:11;17419:33;;;;;;17443:8;17419:33;;;17380:11;:22;17392:9;17380:22;;;;;;;;;;;;;;;:36;17403:12;17380:36;;;;;;;;;;;;;;;:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17510:1;17495:12;:16;17467:14;:25;17482:9;17467:25;;;;;;;;;;;;;;;;:44;;;;;;;;;;;;;;;;;;17184:339;17561:9;17540:51;;;17572:8;17582;17540:51;;;;;;;;;;;;;;;;;;;;;;;;16895:704;;;;;:::o;17607:161::-;17682:6;17713:5;17709:1;:9;17720:12;17701:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;17701:32:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17758:1;17744:16;;17607:161;;;;:::o;29681:1050::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o
Swarm Source
bzzr://adadb36441c8a98232b489c3fc5ab9fffde29961065531d28c936c8e7ad5b79d
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
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.