Contract
0xb08ba4ad6bc291f4f1e79c4c7f9395141b8d5797
3
Token migration announcement. INTDESTCOIN token contract has migrated to a new address.
[ Download CSV Export ]
Contract Name:
INTDESTCOIN
Compiler Version
v0.8.4+commit.c7e474f2
Contract Source Code (Solidity)
/** *Submitted for verification at polygonscan.com on 2022-07-16 */ // SPDX-License-Identifier: MIT pragma solidity ^0.8.0; interface IERC3156FlashBorrower { function onFlashLoan( address initiator, address token, uint256 amount, uint256 fee, bytes calldata data ) external returns (bytes32); } pragma solidity ^0.8.0; interface IERC3156FlashLender { function maxFlashLoan(address token) external view returns (uint256); function flashFee(address token, uint256 amount) external view returns (uint256); function flashLoan( IERC3156FlashBorrower receiver, address token, uint256 amount, bytes calldata data ) external returns (bool); } pragma solidity ^0.8.0; library SafeCast { function toUint248(uint256 value) internal pure returns (uint248) { require(value <= type(uint248).max, "SafeCast: value doesn't fit in 248 bits"); return uint248(value); } function toUint240(uint256 value) internal pure returns (uint240) { require(value <= type(uint240).max, "SafeCast: value doesn't fit in 240 bits"); return uint240(value); } function toUint232(uint256 value) internal pure returns (uint232) { require(value <= type(uint232).max, "SafeCast: value doesn't fit in 232 bits"); return uint232(value); } function toUint224(uint256 value) internal pure returns (uint224) { require(value <= type(uint224).max, "SafeCast: value doesn't fit in 224 bits"); return uint224(value); } function toUint216(uint256 value) internal pure returns (uint216) { require(value <= type(uint216).max, "SafeCast: value doesn't fit in 216 bits"); return uint216(value); } function toUint208(uint256 value) internal pure returns (uint208) { require(value <= type(uint208).max, "SafeCast: value doesn't fit in 208 bits"); return uint208(value); } function toUint200(uint256 value) internal pure returns (uint200) { require(value <= type(uint200).max, "SafeCast: value doesn't fit in 200 bits"); return uint200(value); } function toUint192(uint256 value) internal pure returns (uint192) { require(value <= type(uint192).max, "SafeCast: value doesn't fit in 192 bits"); return uint192(value); } function toUint184(uint256 value) internal pure returns (uint184) { require(value <= type(uint184).max, "SafeCast: value doesn't fit in 184 bits"); return uint184(value); } function toUint176(uint256 value) internal pure returns (uint176) { require(value <= type(uint176).max, "SafeCast: value doesn't fit in 176 bits"); return uint176(value); } function toUint168(uint256 value) internal pure returns (uint168) { require(value <= type(uint168).max, "SafeCast: value doesn't fit in 168 bits"); return uint168(value); } function toUint160(uint256 value) internal pure returns (uint160) { require(value <= type(uint160).max, "SafeCast: value doesn't fit in 160 bits"); return uint160(value); } function toUint152(uint256 value) internal pure returns (uint152) { require(value <= type(uint152).max, "SafeCast: value doesn't fit in 152 bits"); return uint152(value); } function toUint144(uint256 value) internal pure returns (uint144) { require(value <= type(uint144).max, "SafeCast: value doesn't fit in 144 bits"); return uint144(value); } function toUint136(uint256 value) internal pure returns (uint136) { require(value <= type(uint136).max, "SafeCast: value doesn't fit in 136 bits"); return uint136(value); } function toUint128(uint256 value) internal pure returns (uint128) { require(value <= type(uint128).max, "SafeCast: value doesn't fit in 128 bits"); return uint128(value); } function toUint120(uint256 value) internal pure returns (uint120) { require(value <= type(uint120).max, "SafeCast: value doesn't fit in 120 bits"); return uint120(value); } function toUint112(uint256 value) internal pure returns (uint112) { require(value <= type(uint112).max, "SafeCast: value doesn't fit in 112 bits"); return uint112(value); } function toUint104(uint256 value) internal pure returns (uint104) { require(value <= type(uint104).max, "SafeCast: value doesn't fit in 104 bits"); return uint104(value); } function toUint96(uint256 value) internal pure returns (uint96) { require(value <= type(uint96).max, "SafeCast: value doesn't fit in 96 bits"); return uint96(value); } function toUint88(uint256 value) internal pure returns (uint88) { require(value <= type(uint88).max, "SafeCast: value doesn't fit in 88 bits"); return uint88(value); } function toUint80(uint256 value) internal pure returns (uint80) { require(value <= type(uint80).max, "SafeCast: value doesn't fit in 80 bits"); return uint80(value); } function toUint72(uint256 value) internal pure returns (uint72) { require(value <= type(uint72).max, "SafeCast: value doesn't fit in 72 bits"); return uint72(value); } function toUint64(uint256 value) internal pure returns (uint64) { require(value <= type(uint64).max, "SafeCast: value doesn't fit in 64 bits"); return uint64(value); } function toUint56(uint256 value) internal pure returns (uint56) { require(value <= type(uint56).max, "SafeCast: value doesn't fit in 56 bits"); return uint56(value); } function toUint48(uint256 value) internal pure returns (uint48) { require(value <= type(uint48).max, "SafeCast: value doesn't fit in 48 bits"); return uint48(value); } function toUint40(uint256 value) internal pure returns (uint40) { require(value <= type(uint40).max, "SafeCast: value doesn't fit in 40 bits"); return uint40(value); } function toUint32(uint256 value) internal pure returns (uint32) { require(value <= type(uint32).max, "SafeCast: value doesn't fit in 32 bits"); return uint32(value); } function toUint24(uint256 value) internal pure returns (uint24) { require(value <= type(uint24).max, "SafeCast: value doesn't fit in 24 bits"); return uint24(value); } function toUint16(uint256 value) internal pure returns (uint16) { require(value <= type(uint16).max, "SafeCast: value doesn't fit in 16 bits"); return uint16(value); } function toUint8(uint256 value) internal pure returns (uint8) { require(value <= type(uint8).max, "SafeCast: value doesn't fit in 8 bits"); return uint8(value); } function toUint256(int256 value) internal pure returns (uint256) { require(value >= 0, "SafeCast: value must be positive"); return uint256(value); } function toInt248(int256 value) internal pure returns (int248) { require(value >= type(int248).min && value <= type(int248).max, "SafeCast: value doesn't fit in 248 bits"); return int248(value); } function toInt240(int256 value) internal pure returns (int240) { require(value >= type(int240).min && value <= type(int240).max, "SafeCast: value doesn't fit in 240 bits"); return int240(value); } function toInt232(int256 value) internal pure returns (int232) { require(value >= type(int232).min && value <= type(int232).max, "SafeCast: value doesn't fit in 232 bits"); return int232(value); } function toInt224(int256 value) internal pure returns (int224) { require(value >= type(int224).min && value <= type(int224).max, "SafeCast: value doesn't fit in 224 bits"); return int224(value); } function toInt216(int256 value) internal pure returns (int216) { require(value >= type(int216).min && value <= type(int216).max, "SafeCast: value doesn't fit in 216 bits"); return int216(value); } function toInt208(int256 value) internal pure returns (int208) { require(value >= type(int208).min && value <= type(int208).max, "SafeCast: value doesn't fit in 208 bits"); return int208(value); } function toInt200(int256 value) internal pure returns (int200) { require(value >= type(int200).min && value <= type(int200).max, "SafeCast: value doesn't fit in 200 bits"); return int200(value); } function toInt192(int256 value) internal pure returns (int192) { require(value >= type(int192).min && value <= type(int192).max, "SafeCast: value doesn't fit in 192 bits"); return int192(value); } function toInt184(int256 value) internal pure returns (int184) { require(value >= type(int184).min && value <= type(int184).max, "SafeCast: value doesn't fit in 184 bits"); return int184(value); } function toInt176(int256 value) internal pure returns (int176) { require(value >= type(int176).min && value <= type(int176).max, "SafeCast: value doesn't fit in 176 bits"); return int176(value); } function toInt168(int256 value) internal pure returns (int168) { require(value >= type(int168).min && value <= type(int168).max, "SafeCast: value doesn't fit in 168 bits"); return int168(value); } function toInt160(int256 value) internal pure returns (int160) { require(value >= type(int160).min && value <= type(int160).max, "SafeCast: value doesn't fit in 160 bits"); return int160(value); } function toInt152(int256 value) internal pure returns (int152) { require(value >= type(int152).min && value <= type(int152).max, "SafeCast: value doesn't fit in 152 bits"); return int152(value); } function toInt144(int256 value) internal pure returns (int144) { require(value >= type(int144).min && value <= type(int144).max, "SafeCast: value doesn't fit in 144 bits"); return int144(value); } function toInt136(int256 value) internal pure returns (int136) { require(value >= type(int136).min && value <= type(int136).max, "SafeCast: value doesn't fit in 136 bits"); return int136(value); } function toInt128(int256 value) internal pure returns (int128) { require(value >= type(int128).min && value <= type(int128).max, "SafeCast: value doesn't fit in 128 bits"); return int128(value); } function toInt120(int256 value) internal pure returns (int120) { require(value >= type(int120).min && value <= type(int120).max, "SafeCast: value doesn't fit in 120 bits"); return int120(value); } function toInt112(int256 value) internal pure returns (int112) { require(value >= type(int112).min && value <= type(int112).max, "SafeCast: value doesn't fit in 112 bits"); return int112(value); } function toInt104(int256 value) internal pure returns (int104) { require(value >= type(int104).min && value <= type(int104).max, "SafeCast: value doesn't fit in 104 bits"); return int104(value); } function toInt96(int256 value) internal pure returns (int96) { require(value >= type(int96).min && value <= type(int96).max, "SafeCast: value doesn't fit in 96 bits"); return int96(value); } function toInt88(int256 value) internal pure returns (int88) { require(value >= type(int88).min && value <= type(int88).max, "SafeCast: value doesn't fit in 88 bits"); return int88(value); } function toInt80(int256 value) internal pure returns (int80) { require(value >= type(int80).min && value <= type(int80).max, "SafeCast: value doesn't fit in 80 bits"); return int80(value); } function toInt72(int256 value) internal pure returns (int72) { require(value >= type(int72).min && value <= type(int72).max, "SafeCast: value doesn't fit in 72 bits"); return int72(value); } function toInt64(int256 value) internal pure returns (int64) { require(value >= type(int64).min && value <= type(int64).max, "SafeCast: value doesn't fit in 64 bits"); return int64(value); } function toInt56(int256 value) internal pure returns (int56) { require(value >= type(int56).min && value <= type(int56).max, "SafeCast: value doesn't fit in 56 bits"); return int56(value); } function toInt48(int256 value) internal pure returns (int48) { require(value >= type(int48).min && value <= type(int48).max, "SafeCast: value doesn't fit in 48 bits"); return int48(value); } function toInt40(int256 value) internal pure returns (int40) { require(value >= type(int40).min && value <= type(int40).max, "SafeCast: value doesn't fit in 40 bits"); return int40(value); } function toInt32(int256 value) internal pure returns (int32) { require(value >= type(int32).min && value <= type(int32).max, "SafeCast: value doesn't fit in 32 bits"); return int32(value); } function toInt24(int256 value) internal pure returns (int24) { require(value >= type(int24).min && value <= type(int24).max, "SafeCast: value doesn't fit in 24 bits"); return int24(value); } function toInt16(int256 value) internal pure returns (int16) { require(value >= type(int16).min && value <= type(int16).max, "SafeCast: value doesn't fit in 16 bits"); return int16(value); } function toInt8(int256 value) internal pure returns (int8) { require(value >= type(int8).min && value <= type(int8).max, "SafeCast: value doesn't fit in 8 bits"); return int8(value); } function toInt256(uint256 value) internal pure returns (int256) { require(value <= uint256(type(int256).max), "SafeCast: value doesn't fit in an int256"); return int256(value); } } pragma solidity ^0.8.0; interface IVotes { event DelegateChanged(address indexed delegator, address indexed fromDelegate, address indexed toDelegate); event DelegateVotesChanged(address indexed delegate, uint256 previousBalance, uint256 newBalance); function getVotes(address account) external view returns (uint256); function getPastVotes(address account, uint256 blockNumber) external view returns (uint256); function getPastTotalSupply(uint256 blockNumber) external view returns (uint256); function delegates(address account) external view returns (address); function delegate(address delegatee) external; function delegateBySig( address delegatee, uint256 nonce, uint256 expiry, uint8 v, bytes32 r, bytes32 s ) external; } pragma solidity ^0.8.0; library Strings { bytes16 private constant _HEX_SYMBOLS = "0123456789abcdef"; uint8 private constant _ADDRESS_LENGTH = 20; function toString(uint256 value) internal pure returns (string memory) { if (value == 0) { return "0"; } uint256 temp = value; uint256 digits; while (temp != 0) { digits++; temp /= 10; } bytes memory buffer = new bytes(digits); while (value != 0) { digits -= 1; buffer[digits] = bytes1(uint8(48 + uint256(value % 10))); value /= 10; } return string(buffer); } function toHexString(uint256 value) internal pure returns (string memory) { if (value == 0) { return "0x00"; } uint256 temp = value; uint256 length = 0; while (temp != 0) { length++; temp >>= 8; } return toHexString(value, length); } function toHexString(uint256 value, uint256 length) internal pure returns (string memory) { bytes memory buffer = new bytes(2 * length + 2); buffer[0] = "0"; buffer[1] = "x"; for (uint256 i = 2 * length + 1; i > 1; --i) { buffer[i] = _HEX_SYMBOLS[value & 0xf]; value >>= 4; } require(value == 0, "Strings: hex length insufficient"); return string(buffer); } function toHexString(address addr) internal pure returns (string memory) { return toHexString(uint256(uint160(addr)), _ADDRESS_LENGTH); } } pragma solidity ^0.8.0; library ECDSA { enum RecoverError { NoError, InvalidSignature, InvalidSignatureLength, InvalidSignatureS, InvalidSignatureV } function _throwError(RecoverError error) private pure { if (error == RecoverError.NoError) { return; } else if (error == RecoverError.InvalidSignature) { revert("ECDSA: invalid signature"); } else if (error == RecoverError.InvalidSignatureLength) { revert("ECDSA: invalid signature length"); } else if (error == RecoverError.InvalidSignatureS) { revert("ECDSA: invalid signature 's' value"); } else if (error == RecoverError.InvalidSignatureV) { revert("ECDSA: invalid signature 'v' value"); } } function tryRecover(bytes32 hash, bytes memory signature) internal pure returns (address, RecoverError) { if (signature.length == 65) { bytes32 r; bytes32 s; uint8 v; assembly { r := mload(add(signature, 0x20)) s := mload(add(signature, 0x40)) v := byte(0, mload(add(signature, 0x60))) } return tryRecover(hash, v, r, s); } else if (signature.length == 64) { bytes32 r; bytes32 vs; assembly { r := mload(add(signature, 0x20)) vs := mload(add(signature, 0x40)) } return tryRecover(hash, r, vs); } else { return (address(0), RecoverError.InvalidSignatureLength); } } function recover(bytes32 hash, bytes memory signature) internal pure returns (address) { (address recovered, RecoverError error) = tryRecover(hash, signature); _throwError(error); return recovered; } function tryRecover( bytes32 hash, bytes32 r, bytes32 vs ) internal pure returns (address, RecoverError) { bytes32 s = vs & bytes32(0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff); uint8 v = uint8((uint256(vs) >> 255) + 27); return tryRecover(hash, v, r, s); } function recover( bytes32 hash, bytes32 r, bytes32 vs ) internal pure returns (address) { (address recovered, RecoverError error) = tryRecover(hash, r, vs); _throwError(error); return recovered; } function tryRecover( bytes32 hash, uint8 v, bytes32 r, bytes32 s ) internal pure returns (address, RecoverError) { if (uint256(s) > 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0) { return (address(0), RecoverError.InvalidSignatureS); } if (v != 27 && v != 28) { return (address(0), RecoverError.InvalidSignatureV); } address signer = ecrecover(hash, v, r, s); if (signer == address(0)) { return (address(0), RecoverError.InvalidSignature); } return (signer, RecoverError.NoError); } function recover( bytes32 hash, uint8 v, bytes32 r, bytes32 s ) internal pure returns (address) { (address recovered, RecoverError error) = tryRecover(hash, v, r, s); _throwError(error); return recovered; } function toEthSignedMessageHash(bytes32 hash) internal pure returns (bytes32) { return keccak256(abi.encodePacked("\x19Ethereum Signed Message:\n32", hash)); } function toEthSignedMessageHash(bytes memory s) internal pure returns (bytes32) { return keccak256(abi.encodePacked("\x19Ethereum Signed Message:\n", Strings.toString(s.length), s)); } function toTypedDataHash(bytes32 domainSeparator, bytes32 structHash) internal pure returns (bytes32) { return keccak256(abi.encodePacked("\x19\x01", domainSeparator, structHash)); } } pragma solidity ^0.8.0; abstract contract EIP712 { bytes32 private immutable _CACHED_DOMAIN_SEPARATOR; uint256 private immutable _CACHED_CHAIN_ID; address private immutable _CACHED_THIS; bytes32 private immutable _HASHED_NAME; bytes32 private immutable _HASHED_VERSION; bytes32 private immutable _TYPE_HASH; constructor(string memory name, string memory version) { bytes32 hashedName = keccak256(bytes(name)); bytes32 hashedVersion = keccak256(bytes(version)); bytes32 typeHash = keccak256( "EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)" ); _HASHED_NAME = hashedName; _HASHED_VERSION = hashedVersion; _CACHED_CHAIN_ID = block.chainid; _CACHED_DOMAIN_SEPARATOR = _buildDomainSeparator(typeHash, hashedName, hashedVersion); _CACHED_THIS = address(this); _TYPE_HASH = typeHash; } function _domainSeparatorV4() internal view returns (bytes32) { if (address(this) == _CACHED_THIS && block.chainid == _CACHED_CHAIN_ID) { return _CACHED_DOMAIN_SEPARATOR; } else { return _buildDomainSeparator(_TYPE_HASH, _HASHED_NAME, _HASHED_VERSION); } } function _buildDomainSeparator( bytes32 typeHash, bytes32 nameHash, bytes32 versionHash ) private view returns (bytes32) { return keccak256(abi.encode(typeHash, nameHash, versionHash, block.chainid, address(this))); } function _hashTypedDataV4(bytes32 structHash) internal view virtual returns (bytes32) { return ECDSA.toTypedDataHash(_domainSeparatorV4(), structHash); } } pragma solidity ^0.8.0; interface IERC20Permit { function permit( address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s ) external; function nonces(address owner) external view returns (uint256); function DOMAIN_SEPARATOR() external view returns (bytes32); } pragma solidity ^0.8.0; library Counters { struct Counter { uint256 _value; } function current(Counter storage counter) internal view returns (uint256) { return counter._value; } function increment(Counter storage counter) internal { unchecked { counter._value += 1; } } function decrement(Counter storage counter) internal { uint256 value = counter._value; require(value > 0, "Counter: decrement overflow"); unchecked { counter._value = value - 1; } } function reset(Counter storage counter) internal { counter._value = 0; } } pragma solidity ^0.8.0; library Math { enum Rounding { Down, Up, Zero } function max(uint256 a, uint256 b) internal pure returns (uint256) { return a >= b ? a : b; } function min(uint256 a, uint256 b) internal pure returns (uint256) { return a < b ? a : b; } function average(uint256 a, uint256 b) internal pure returns (uint256) { // (a + b) / 2 can overflow. return (a & b) + (a ^ b) / 2; } function ceilDiv(uint256 a, uint256 b) internal pure returns (uint256) { // (a + b - 1) / b can overflow on addition, so we distribute. return a == 0 ? 0 : (a - 1) / b + 1; } function mulDiv( uint256 x, uint256 y, uint256 denominator ) internal pure returns (uint256 result) { unchecked { uint256 prod0; uint256 prod1; assembly { let mm := mulmod(x, y, not(0)) prod0 := mul(x, y) prod1 := sub(sub(mm, prod0), lt(mm, prod0)) } if (prod1 == 0) { return prod0 / denominator; } require(denominator > prod1); uint256 remainder; assembly { remainder := mulmod(x, y, denominator) prod1 := sub(prod1, gt(remainder, prod0)) prod0 := sub(prod0, remainder) } uint256 twos = denominator & (~denominator + 1); assembly { denominator := div(denominator, twos) prod0 := div(prod0, twos) twos := add(div(sub(0, twos), twos), 1) } prod0 |= prod1 * twos; uint256 inverse = (3 * denominator) ^ 2; inverse *= 2 - denominator * inverse; inverse *= 2 - denominator * inverse; inverse *= 2 - denominator * inverse; inverse *= 2 - denominator * inverse; inverse *= 2 - denominator * inverse; inverse *= 2 - denominator * inverse; result = prod0 * inverse; return result; } } function mulDiv( uint256 x, uint256 y, uint256 denominator, Rounding rounding ) internal pure returns (uint256) { uint256 result = mulDiv(x, y, denominator); if (rounding == Rounding.Up && mulmod(x, y, denominator) > 0) { result += 1; } return result; } function sqrt(uint256 a) internal pure returns (uint256) { if (a == 0) { return 0; } uint256 result = 1; uint256 x = a; if (x >> 128 > 0) { x >>= 128; result <<= 64; } if (x >> 64 > 0) { x >>= 64; result <<= 32; } if (x >> 32 > 0) { x >>= 32; result <<= 16; } if (x >> 16 > 0) { x >>= 16; result <<= 8; } if (x >> 8 > 0) { x >>= 8; result <<= 4; } if (x >> 4 > 0) { x >>= 4; result <<= 2; } if (x >> 2 > 0) { result <<= 1; } unchecked { result = (result + a / result) >> 1; result = (result + a / result) >> 1; result = (result + a / result) >> 1; result = (result + a / result) >> 1; result = (result + a / result) >> 1; result = (result + a / result) >> 1; result = (result + a / result) >> 1; return min(result, a / result); } } function sqrt(uint256 a, Rounding rounding) internal pure returns (uint256) { uint256 result = sqrt(a); if (rounding == Rounding.Up && result * result < a) { result += 1; } return result; } } pragma solidity ^0.8.0; library Arrays { function findUpperBound(uint256[] storage array, uint256 element) internal view returns (uint256) { if (array.length == 0) { return 0; } uint256 low = 0; uint256 high = array.length; while (low < high) { uint256 mid = Math.average(low, high); if (array[mid] > element) { high = mid; } else { low = mid + 1; } } if (low > 0 && array[low - 1] == element) { return low - 1; } else { return low; } } } pragma solidity ^0.8.0; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } pragma solidity ^0.8.0; abstract contract Pausable is Context { event Paused(address account); event Unpaused(address account); bool private _paused; constructor() { _paused = false; } modifier whenNotPaused() { _requireNotPaused(); _; } modifier whenPaused() { _requirePaused(); _; } function paused() public view virtual returns (bool) { return _paused; } function _requireNotPaused() internal view virtual { require(!paused(), "Pausable: paused"); } function _requirePaused() internal view virtual { require(paused(), "Pausable: not paused"); } function _pause() internal virtual whenNotPaused { _paused = true; emit Paused(_msgSender()); } function _unpause() internal virtual whenPaused { _paused = false; emit Unpaused(_msgSender()); } } pragma solidity ^0.8.0; abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor() { _transferOwnership(_msgSender()); } modifier onlyOwner() { _checkOwner(); _; } function owner() public view virtual returns (address) { return _owner; } function _checkOwner() internal view virtual { require(owner() == _msgSender(), "Ownable: caller is not the owner"); } function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } pragma solidity ^0.8.0; interface IERC20 { event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address to, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom( address from, address to, uint256 amount ) external returns (bool); } pragma solidity ^0.8.0; interface IERC20Metadata is IERC20 { function name() external view returns (string memory); function symbol() external view returns (string memory); function decimals() external view returns (uint8); } pragma solidity ^0.8.0; contract ERC20 is Context, IERC20, IERC20Metadata { mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } function name() public view virtual override returns (string memory) { return _name; } function symbol() public view virtual override returns (string memory) { return _symbol; } function decimals() public view virtual override returns (uint8) { return 18; } function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } function transfer(address to, uint256 amount) public virtual override returns (bool) { address owner = _msgSender(); _transfer(owner, to, amount); return true; } function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public virtual override returns (bool) { address owner = _msgSender(); _approve(owner, spender, amount); return true; } function transferFrom( address from, address to, uint256 amount ) public virtual override returns (bool) { address spender = _msgSender(); _spendAllowance(from, spender, amount); _transfer(from, to, amount); return true; } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { address owner = _msgSender(); _approve(owner, spender, allowance(owner, spender) + addedValue); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { address owner = _msgSender(); uint256 currentAllowance = allowance(owner, spender); require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero"); unchecked { _approve(owner, spender, currentAllowance - subtractedValue); } return true; } function _transfer( address from, address to, uint256 amount ) internal virtual { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(from, to, amount); uint256 fromBalance = _balances[from]; require(fromBalance >= amount, "ERC20: transfer amount exceeds balance"); unchecked { _balances[from] = fromBalance - amount; } _balances[to] += amount; emit Transfer(from, to, amount); _afterTokenTransfer(from, to, amount); } function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _beforeTokenTransfer(address(0), account, amount); _totalSupply += amount; _balances[account] += amount; emit Transfer(address(0), account, amount); _afterTokenTransfer(address(0), account, amount); } function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); _beforeTokenTransfer(account, address(0), amount); uint256 accountBalance = _balances[account]; require(accountBalance >= amount, "ERC20: burn amount exceeds balance"); unchecked { _balances[account] = accountBalance - amount; } _totalSupply -= amount; emit Transfer(account, address(0), amount); _afterTokenTransfer(account, address(0), amount); } function _approve( address owner, address spender, uint256 amount ) internal virtual { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _spendAllowance( address owner, address spender, uint256 amount ) internal virtual { uint256 currentAllowance = allowance(owner, spender); if (currentAllowance != type(uint256).max) { require(currentAllowance >= amount, "ERC20: insufficient allowance"); unchecked { _approve(owner, spender, currentAllowance - amount); } } } function _beforeTokenTransfer( address from, address to, uint256 amount ) internal virtual {} function _afterTokenTransfer( address from, address to, uint256 amount ) internal virtual {} } pragma solidity ^0.8.0; abstract contract ERC20FlashMint is ERC20, IERC3156FlashLender { bytes32 private constant _RETURN_VALUE = keccak256("ERC3156FlashBorrower.onFlashLoan"); function maxFlashLoan(address token) public view virtual override returns (uint256) { return token == address(this) ? type(uint256).max - ERC20.totalSupply() : 0; } function flashFee(address token, uint256 amount) public view virtual override returns (uint256) { require(token == address(this), "ERC20FlashMint: wrong token"); amount; return 0; } function _flashFeeReceiver() internal view virtual returns (address) { return address(0); } function flashLoan( IERC3156FlashBorrower receiver, address token, uint256 amount, bytes calldata data ) public virtual override returns (bool) { require(amount <= maxFlashLoan(token), "ERC20FlashMint: amount exceeds maxFlashLoan"); uint256 fee = flashFee(token, amount); _mint(address(receiver), amount); require( receiver.onFlashLoan(msg.sender, token, amount, fee, data) == _RETURN_VALUE, "ERC20FlashMint: invalid return value" ); address flashFeeReceiver = _flashFeeReceiver(); _spendAllowance(address(receiver), address(this), amount + fee); if (fee == 0 || flashFeeReceiver == address(0)) { _burn(address(receiver), amount + fee); } else { _burn(address(receiver), amount); _transfer(address(receiver), flashFeeReceiver, fee); } return true; } } pragma solidity ^0.8.0; abstract contract ERC20Permit is ERC20, IERC20Permit, EIP712 { using Counters for Counters.Counter; mapping(address => Counters.Counter) private _nonces; bytes32 private constant _PERMIT_TYPEHASH = keccak256("Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)"); bytes32 private _PERMIT_TYPEHASH_DEPRECATED_SLOT; constructor(string memory name) EIP712(name, "1") {} function permit( address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s ) public virtual override { require(block.timestamp <= deadline, "ERC20Permit: expired deadline"); bytes32 structHash = keccak256(abi.encode(_PERMIT_TYPEHASH, owner, spender, value, _useNonce(owner), deadline)); bytes32 hash = _hashTypedDataV4(structHash); address signer = ECDSA.recover(hash, v, r, s); require(signer == owner, "ERC20Permit: invalid signature"); _approve(owner, spender, value); } function nonces(address owner) public view virtual override returns (uint256) { return _nonces[owner].current(); } function DOMAIN_SEPARATOR() external view override returns (bytes32) { return _domainSeparatorV4(); } function _useNonce(address owner) internal virtual returns (uint256 current) { Counters.Counter storage nonce = _nonces[owner]; current = nonce.current(); nonce.increment(); } } pragma solidity ^0.8.0; abstract contract ERC20Votes is IVotes, ERC20Permit { struct Checkpoint { uint32 fromBlock; uint224 votes; } bytes32 private constant _DELEGATION_TYPEHASH = keccak256("Delegation(address delegatee,uint256 nonce,uint256 expiry)"); mapping(address => address) private _delegates; mapping(address => Checkpoint[]) private _checkpoints; Checkpoint[] private _totalSupplyCheckpoints; function checkpoints(address account, uint32 pos) public view virtual returns (Checkpoint memory) { return _checkpoints[account][pos]; } function numCheckpoints(address account) public view virtual returns (uint32) { return SafeCast.toUint32(_checkpoints[account].length); } function delegates(address account) public view virtual override returns (address) { return _delegates[account]; } function getVotes(address account) public view virtual override returns (uint256) { uint256 pos = _checkpoints[account].length; return pos == 0 ? 0 : _checkpoints[account][pos - 1].votes; } function getPastVotes(address account, uint256 blockNumber) public view virtual override returns (uint256) { require(blockNumber < block.number, "ERC20Votes: block not yet mined"); return _checkpointsLookup(_checkpoints[account], blockNumber); } function getPastTotalSupply(uint256 blockNumber) public view virtual override returns (uint256) { require(blockNumber < block.number, "ERC20Votes: block not yet mined"); return _checkpointsLookup(_totalSupplyCheckpoints, blockNumber); } function _checkpointsLookup(Checkpoint[] storage ckpts, uint256 blockNumber) private view returns (uint256) { uint256 high = ckpts.length; uint256 low = 0; while (low < high) { uint256 mid = Math.average(low, high); if (ckpts[mid].fromBlock > blockNumber) { high = mid; } else { low = mid + 1; } } return high == 0 ? 0 : ckpts[high - 1].votes; } function delegate(address delegatee) public virtual override { _delegate(_msgSender(), delegatee); } function delegateBySig( address delegatee, uint256 nonce, uint256 expiry, uint8 v, bytes32 r, bytes32 s ) public virtual override { require(block.timestamp <= expiry, "ERC20Votes: signature expired"); address signer = ECDSA.recover( _hashTypedDataV4(keccak256(abi.encode(_DELEGATION_TYPEHASH, delegatee, nonce, expiry))), v, r, s ); require(nonce == _useNonce(signer), "ERC20Votes: invalid nonce"); _delegate(signer, delegatee); } function _maxSupply() internal view virtual returns (uint224) { return type(uint224).max; } function _mint(address account, uint256 amount) internal virtual override { super._mint(account, amount); require(totalSupply() <= _maxSupply(), "ERC20Votes: total supply risks overflowing votes"); _writeCheckpoint(_totalSupplyCheckpoints, _add, amount); } function _burn(address account, uint256 amount) internal virtual override { super._burn(account, amount); _writeCheckpoint(_totalSupplyCheckpoints, _subtract, amount); } function _afterTokenTransfer( address from, address to, uint256 amount ) internal virtual override { super._afterTokenTransfer(from, to, amount); _moveVotingPower(delegates(from), delegates(to), amount); } function _delegate(address delegator, address delegatee) internal virtual { address currentDelegate = delegates(delegator); uint256 delegatorBalance = balanceOf(delegator); _delegates[delegator] = delegatee; emit DelegateChanged(delegator, currentDelegate, delegatee); _moveVotingPower(currentDelegate, delegatee, delegatorBalance); } function _moveVotingPower( address src, address dst, uint256 amount ) private { if (src != dst && amount > 0) { if (src != address(0)) { (uint256 oldWeight, uint256 newWeight) = _writeCheckpoint(_checkpoints[src], _subtract, amount); emit DelegateVotesChanged(src, oldWeight, newWeight); } if (dst != address(0)) { (uint256 oldWeight, uint256 newWeight) = _writeCheckpoint(_checkpoints[dst], _add, amount); emit DelegateVotesChanged(dst, oldWeight, newWeight); } } } function _writeCheckpoint( Checkpoint[] storage ckpts, function(uint256, uint256) view returns (uint256) op, uint256 delta ) private returns (uint256 oldWeight, uint256 newWeight) { uint256 pos = ckpts.length; oldWeight = pos == 0 ? 0 : ckpts[pos - 1].votes; newWeight = op(oldWeight, delta); if (pos > 0 && ckpts[pos - 1].fromBlock == block.number) { ckpts[pos - 1].votes = SafeCast.toUint224(newWeight); } else { ckpts.push(Checkpoint({fromBlock: SafeCast.toUint32(block.number), votes: SafeCast.toUint224(newWeight)})); } } function _add(uint256 a, uint256 b) private pure returns (uint256) { return a + b; } function _subtract(uint256 a, uint256 b) private pure returns (uint256) { return a - b; } } pragma solidity ^0.8.0; abstract contract ERC20Snapshot is ERC20 { using Arrays for uint256[]; using Counters for Counters.Counter; struct Snapshots { uint256[] ids; uint256[] values; } mapping(address => Snapshots) private _accountBalanceSnapshots; Snapshots private _totalSupplySnapshots; Counters.Counter private _currentSnapshotId; event Snapshot(uint256 id); function _snapshot() internal virtual returns (uint256) { _currentSnapshotId.increment(); uint256 currentId = _getCurrentSnapshotId(); emit Snapshot(currentId); return currentId; } function _getCurrentSnapshotId() internal view virtual returns (uint256) { return _currentSnapshotId.current(); } function balanceOfAt(address account, uint256 snapshotId) public view virtual returns (uint256) { (bool snapshotted, uint256 value) = _valueAt(snapshotId, _accountBalanceSnapshots[account]); return snapshotted ? value : balanceOf(account); } function totalSupplyAt(uint256 snapshotId) public view virtual returns (uint256) { (bool snapshotted, uint256 value) = _valueAt(snapshotId, _totalSupplySnapshots); return snapshotted ? value : totalSupply(); } function _beforeTokenTransfer( address from, address to, uint256 amount ) internal virtual override { super._beforeTokenTransfer(from, to, amount); if (from == address(0)) { // mint _updateAccountSnapshot(to); _updateTotalSupplySnapshot(); } else if (to == address(0)) { // burn _updateAccountSnapshot(from); _updateTotalSupplySnapshot(); } else { // transfer _updateAccountSnapshot(from); _updateAccountSnapshot(to); } } function _valueAt(uint256 snapshotId, Snapshots storage snapshots) private view returns (bool, uint256) { require(snapshotId > 0, "ERC20Snapshot: id is 0"); require(snapshotId <= _getCurrentSnapshotId(), "ERC20Snapshot: nonexistent id"); uint256 index = snapshots.ids.findUpperBound(snapshotId); if (index == snapshots.ids.length) { return (false, 0); } else { return (true, snapshots.values[index]); } } function _updateAccountSnapshot(address account) private { _updateSnapshot(_accountBalanceSnapshots[account], balanceOf(account)); } function _updateTotalSupplySnapshot() private { _updateSnapshot(_totalSupplySnapshots, totalSupply()); } function _updateSnapshot(Snapshots storage snapshots, uint256 currentValue) private { uint256 currentId = _getCurrentSnapshotId(); if (_lastSnapshotId(snapshots.ids) < currentId) { snapshots.ids.push(currentId); snapshots.values.push(currentValue); } } function _lastSnapshotId(uint256[] storage ids) private view returns (uint256) { if (ids.length == 0) { return 0; } else { return ids[ids.length - 1]; } } } pragma solidity ^0.8.0; abstract contract ERC20Burnable is Context, ERC20 { function burn(uint256 amount) public virtual { _burn(_msgSender(), amount); } function burnFrom(address account, uint256 amount) public virtual { _spendAllowance(account, _msgSender(), amount); _burn(account, amount); } } pragma solidity ^0.8.4; contract INTDESTCOIN is ERC20, ERC20Burnable, ERC20Snapshot, Ownable, Pausable, ERC20Permit, ERC20Votes, ERC20FlashMint { constructor() ERC20("INTDESTCOIN", "INTD") ERC20Permit("INTDESTCOIN") { _mint(msg.sender, 10000000000 * 10 ** decimals()); } function snapshot() public onlyOwner { _snapshot(); } function pause() public onlyOwner { _pause(); } function unpause() public onlyOwner { _unpause(); } function mint(address to, uint256 amount) public onlyOwner { _mint(to, amount); } function _beforeTokenTransfer(address from, address to, uint256 amount) internal whenNotPaused override(ERC20, ERC20Snapshot) { super._beforeTokenTransfer(from, to, amount); } function _afterTokenTransfer(address from, address to, uint256 amount) internal override(ERC20, ERC20Votes) { super._afterTokenTransfer(from, to, amount); } function _mint(address to, uint256 amount) internal override(ERC20, ERC20Votes) { super._mint(to, amount); } function _burn(address account, uint256 amount) internal override(ERC20, ERC20Votes) { super._burn(account, amount); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"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":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"}],"name":"Snapshot","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"snapshotId","type":"uint256"}],"name":"balanceOfAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint32","name":"pos","type":"uint32"}],"name":"checkpoints","outputs":[{"components":[{"internalType":"uint32","name":"fromBlock","type":"uint32"},{"internalType":"uint224","name":"votes","type":"uint224"}],"internalType":"struct ERC20Votes.Checkpoint","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"delegatee","type":"address"}],"name":"delegate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"delegatee","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"expiry","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"delegateBySig","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"delegates","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"flashFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC3156FlashBorrower","name":"receiver","type":"address"},{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"flashLoan","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"getPastTotalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"getPastVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"maxFlashLoan","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"numCheckpoints","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"snapshot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"snapshotId","type":"uint256"}],"name":"totalSupplyAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unpause","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
6101406040523480156200001257600080fd5b506040518060400160405280600b81526020016a24a72a2222a9aa21a7a4a760a91b81525080604051806040016040528060018152602001603160f81b8152506040518060400160405280600b81526020016a24a72a2222a9aa21a7a4a760a91b815250604051806040016040528060048152602001631253951160e21b8152508160039080519060200190620000ab92919062000a4f565b508051620000c190600490602084019062000a4f565b505050620000de620000d8620001bb60201b60201c565b620001bf565b6009805460ff60a01b19169055815160208084019190912082518383012060e08290526101008190524660a0818152604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81880181905281830187905260608201869052608082019490945230818401528151808203909301835260c00190528051940193909320919290916080523060601b60c0526101205250620001b5935033925062000191915050601290565b6200019e90600a62000b4f565b620001af906402540be40062000c0e565b62000211565b62000c9d565b3390565b600980546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6200022882826200022c60201b62000fe21760201c565b5050565b620002438282620002e360201b620010721760201c565b6001600160e01b0362000257620003e08216565b1115620002c45760405162461bcd60e51b815260206004820152603060248201527f4552433230566f7465733a20746f74616c20737570706c79207269736b73206f60448201526f766572666c6f77696e6720766f74657360801b60648201526084015b60405180910390fd5b620002dd600e62001165620003e660201b1783620003fd565b50505050565b6001600160a01b0382166200033b5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401620002bb565b6200034960008383620005d3565b80600260008282546200035d919062000aeb565b90915550506001600160a01b038216600090815260208190526040812080548392906200038c90849062000aeb565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a36200022860008383620005fa565b60025490565b6000620003f4828462000aeb565b90505b92915050565b8254600090819080156200045b57856200041960018362000c30565b815481106200043857634e487b7160e01b600052603260045260246000fd5b60009182526020909120015464010000000090046001600160e01b03166200045e565b60005b6001600160e01b031692506200047583858760201c565b9150600081118015620004c5575043866200049260018462000c30565b81548110620004b157634e487b7160e01b600052603260045260246000fd5b60009182526020909120015463ffffffff16145b156200054557620004e1826200061260201b620011711760201c565b86620004ef60018462000c30565b815481106200050e57634e487b7160e01b600052603260045260246000fd5b9060005260206000200160000160046101000a8154816001600160e01b0302191690836001600160e01b03160217905550620005ca565b85604051806040016040528062000567436200068160201b620011de1760201c565b63ffffffff16815260200162000588856200061260201b620011711760201c565b6001600160e01b0390811690915282546001810184556000938452602093849020835194909301519091166401000000000263ffffffff909316929092179101555b50935093915050565b620005dd620006e8565b620005f58383836200074060201b620012431760201c565b505050565b620005f5838383620007ac60201b620012901760201c565b60006001600160e01b038211156200067d5760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20326044820152663234206269747360c81b6064820152608401620002bb565b5090565b600063ffffffff8211156200067d5760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201526532206269747360d01b6064820152608401620002bb565b620006fc600954600160a01b900460ff1690565b156200073e5760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606401620002bb565b565b62000758838383620005f560201b620012621760201c565b6001600160a01b0383166200077c576200077282620007f8565b620005f562000830565b6001600160a01b03821662000796576200077283620007f8565b620007a183620007f8565b620005f582620007f8565b620007c4838383620005f560201b620012621760201c565b6001600160a01b038381166000908152600c6020526040808220548584168352912054620005f59291821691168362000840565b6001600160a01b038116600090815260056020908152604080832091839052909120546200082d91906200097b565b6200097b565b50565b6200073e60066200082760025490565b816001600160a01b0316836001600160a01b031614158015620008635750600081115b15620005f5576001600160a01b03831615620008f0576001600160a01b0383166000908152600d6020908152604082208291620008ad9190620009ca901b620012c21785620003fd565b91509150846001600160a01b0316600080516020620037148339815191528383604051620008e5929190918252602082015260400190565b60405180910390a250505b6001600160a01b03821615620005f5576001600160a01b0382166000908152600d6020908152604082208291620009349190620003e6901b620011651785620003fd565b91509150836001600160a01b03166000805160206200371483398151915283836040516200096c929190918252602082015260400190565b60405180910390a25050505050565b600062000987620009d8565b9050806200099584620009f6565b1015620005f5578254600180820185556000858152602080822090930193909355938401805494850181558252902090910155565b6000620003f4828462000c30565b6000620009f1600862000a4b60201b620012ce1760201c565b905090565b805460009062000a0857506000919050565b8154829062000a1a9060019062000c30565b8154811062000a3957634e487b7160e01b600052603260045260246000fd5b90600052602060002001549050919050565b5490565b82805462000a5d9062000c4a565b90600052602060002090601f01602090048101928262000a81576000855562000acc565b82601f1062000a9c57805160ff191683800117855562000acc565b8280016001018555821562000acc579182015b8281111562000acc57825182559160200191906001019062000aaf565b506200067d9291505b808211156200067d576000815560010162000ad5565b6000821982111562000b015762000b0162000c87565b500190565b600181815b8085111562000b4757816000190482111562000b2b5762000b2b62000c87565b8085161562000b3957918102915b93841c939080029062000b0b565b509250929050565b6000620003f460ff84168360008262000b6b57506001620003f7565b8162000b7a57506000620003f7565b816001811462000b93576002811462000b9e5762000bbe565b6001915050620003f7565b60ff84111562000bb25762000bb262000c87565b50506001821b620003f7565b5060208310610133831016604e8410600b841016171562000be3575081810a620003f7565b62000bef838362000b06565b806000190482111562000c065762000c0662000c87565b029392505050565b600081600019048311821515161562000c2b5762000c2b62000c87565b500290565b60008282101562000c455762000c4562000c87565b500390565b600181811c9082168062000c5f57607f821691505b6020821081141562000c8157634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b60805160a05160c05160601c60e0516101005161012051612a2462000cf060003960006116d301526000611722015260006116fd0152600061165601526000611680015260006116aa0152612a246000f3fe608060405234801561001057600080fd5b50600436106102275760003560e01c806370a0823111610130578063981b24d0116100b8578063d505accf1161007c578063d505accf146104bb578063d9d98ce4146104ce578063dd62ed3e146104e1578063f1127ed8146104f4578063f2fde38b1461053157600080fd5b8063981b24d01461045c5780639ab24eb01461046f578063a457c2d714610482578063a9059cbb14610495578063c3cda520146104a857600080fd5b80638456cb59116100ff5780638456cb59146104205780638da5cb5b146104285780638e539e8c1461043957806395d89b411461044c5780639711715a1461045457600080fd5b806370a08231146103c9578063715018a6146103f257806379cc6790146103fa5780637ecebe001461040d57600080fd5b806340c10f19116101b35780635c19a95c116101825780635c19a95c146103565780635c975abb146103695780635cffe9de1461037b578063613255ab1461038e5780636fcfff45146103a157600080fd5b806340c10f19146102d957806342966c68146102ec5780634ee2cd7e146102ff578063587cde1e1461031257600080fd5b8063313ce567116101fa578063313ce567146102925780633644e515146102a157806339509351146102a95780633a46b1a8146102bc5780633f4ba83a146102cf57600080fd5b806306fdde031461022c578063095ea7b31461024a57806318160ddd1461026d57806323b872dd1461027f575b600080fd5b610234610544565b60405161024191906128ec565b60405180910390f35b61025d610258366004612710565b6105d6565b6040519015158152602001610241565b6002545b604051908152602001610241565b61025d61028d366004612663565b6105f0565b60405160128152602001610241565b610271610614565b61025d6102b7366004612710565b610623565b6102716102ca366004612710565b610645565b6102d76106c4565b005b6102d76102e7366004612710565b6106d6565b6102d76102fa36600461287b565b6106ec565b61027161030d366004612710565b6106f9565b61033e61032036600461260f565b6001600160a01b039081166000908152600c60205260409020541690565b6040516001600160a01b039091168152602001610241565b6102d761036436600461260f565b610752565b600954600160a01b900460ff1661025d565b61025d6103893660046127e1565b61075c565b61027161039c36600461260f565b61094f565b6103b46103af36600461260f565b610977565b60405163ffffffff9091168152602001610241565b6102716103d736600461260f565b6001600160a01b031660009081526020819052604090205490565b6102d7610999565b6102d7610408366004612710565b6109ab565b61027161041b36600461260f565b6109c0565b6102d76109de565b6009546001600160a01b031661033e565b61027161044736600461287b565b6109ee565b610234610a4a565b6102d7610a59565b61027161046a36600461287b565b610a69565b61027161047d36600461260f565b610a94565b61025d610490366004612710565b610b29565b61025d6104a3366004612710565b610ba4565b6102d76104b636600461273b565b610bb2565b6102d76104c93660046126a3565b610ce8565b6102716104dc366004612710565b610e4c565b6102716104ef36600461262b565b610eaf565b610507610502366004612794565b610eda565b60408051825163ffffffff1681526020928301516001600160e01b03169281019290925201610241565b6102d761053f36600461260f565b610f6c565b6060600380546105539061298e565b80601f016020809104026020016040519081016040528092919081815260200182805461057f9061298e565b80156105cc5780601f106105a1576101008083540402835291602001916105cc565b820191906000526020600020905b8154815290600101906020018083116105af57829003601f168201915b5050505050905090565b6000336105e48185856112d2565b60019150505b92915050565b6000336105fe8582856113f6565b61060985858561146a565b506001949350505050565b600061061e611649565b905090565b6000336105e48185856106368383610eaf565b610640919061293f565b6112d2565b600043821061069b5760405162461bcd60e51b815260206004820152601f60248201527f4552433230566f7465733a20626c6f636b206e6f7420796574206d696e65640060448201526064015b60405180910390fd5b6001600160a01b0383166000908152600d602052604090206106bd9083611770565b9392505050565b6106cc611849565b6106d46118a3565b565b6106de611849565b6106e882826118f8565b5050565b6106f63382611902565b50565b6001600160a01b03821660009081526005602052604081208190819061072090859061190c565b9150915081610747576001600160a01b038516600090815260208190526040902054610749565b805b95945050505050565b6106f63382611a11565b60006107678561094f565b8411156107ca5760405162461bcd60e51b815260206004820152602b60248201527f4552433230466c6173684d696e743a20616d6f756e742065786365656473206d60448201526a30bc233630b9b42637b0b760a91b6064820152608401610692565b60006107d68686610e4c565b90506107e287866118f8565b6040516323e30c8b60e01b81527f439148f0bbc682ca079e46d6e2c2f0c1e3b820f1a291b069d8882abf8cf18dd9906001600160a01b038916906323e30c8b9061083a9033908b908b9088908c908c90600401612893565b602060405180830381600087803b15801561085457600080fd5b505af1158015610868573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061088c91906127c9565b146108e55760405162461bcd60e51b8152602060048201526024808201527f4552433230466c6173684d696e743a20696e76616c69642072657475726e2076604482015263616c756560e01b6064820152608401610692565b60006108fb88306108f6858a61293f565b6113f6565b81158061090f57506001600160a01b038116155b1561092c5761092788610922848961293f565b611902565b610941565b6109368887611902565b61094188828461146a565b506001979650505050505050565b60006001600160a01b03821630146109685760006105ea565b6002546105ea90600019612977565b6001600160a01b0381166000908152600d60205260408120546105ea906111de565b6109a1611849565b6106d46000611a8a565b6109b68233836113f6565b6106e88282611902565b6001600160a01b0381166000908152600a60205260408120546105ea565b6109e6611849565b6106d4611adc565b6000438210610a3f5760405162461bcd60e51b815260206004820152601f60248201527f4552433230566f7465733a20626c6f636b206e6f7420796574206d696e6564006044820152606401610692565b6105ea600e83611770565b6060600480546105539061298e565b610a61611849565b6106f6611b1f565b6000806000610a7984600661190c565b9150915081610a8a57600254610a8c565b805b949350505050565b6001600160a01b0381166000908152600d60205260408120548015610b16576001600160a01b0383166000908152600d60205260409020610ad6600183612977565b81548110610af457634e487b7160e01b600052603260045260246000fd5b60009182526020909120015464010000000090046001600160e01b0316610b19565b60005b6001600160e01b03169392505050565b60003381610b378286610eaf565b905083811015610b975760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610692565b61060982868684036112d2565b6000336105e481858561146a565b83421115610c025760405162461bcd60e51b815260206004820152601d60248201527f4552433230566f7465733a207369676e617475726520657870697265640000006044820152606401610692565b604080517fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf60208201526001600160a01b038816918101919091526060810186905260808101859052600090610c7c90610c749060a00160405160208183030381529060405280519060200120611b79565b858585611bc7565b9050610c8781611bef565b8614610cd55760405162461bcd60e51b815260206004820152601960248201527f4552433230566f7465733a20696e76616c6964206e6f6e6365000000000000006044820152606401610692565b610cdf8188611a11565b50505050505050565b83421115610d385760405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606401610692565b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9888888610d678c611bef565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e0016040516020818303038152906040528051906020012090506000610dc282611b79565b90506000610dd282878787611bc7565b9050896001600160a01b0316816001600160a01b031614610e355760405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606401610692565b610e408a8a8a6112d2565b50505050505050505050565b60006001600160a01b0383163014610ea65760405162461bcd60e51b815260206004820152601b60248201527f4552433230466c6173684d696e743a2077726f6e6720746f6b656e00000000006044820152606401610692565b50600092915050565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b60408051808201909152600080825260208201526001600160a01b0383166000908152600d60205260409020805463ffffffff8416908110610f2c57634e487b7160e01b600052603260045260246000fd5b60009182526020918290206040805180820190915291015463ffffffff8116825264010000000090046001600160e01b0316918101919091529392505050565b610f74611849565b6001600160a01b038116610fd95760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610692565b6106f681611a8a565b610fec8282611072565b6002546001600160e01b03101561105e5760405162461bcd60e51b815260206004820152603060248201527f4552433230566f7465733a20746f74616c20737570706c79207269736b73206f60448201526f766572666c6f77696e6720766f74657360801b6064820152608401610692565b61106c600e61116583611c17565b50505050565b6001600160a01b0382166110c85760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610692565b6110d460008383611dba565b80600260008282546110e6919061293f565b90915550506001600160a01b0382166000908152602081905260408120805483929061111390849061293f565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a36106e860008383611dcd565b60006106bd828461293f565b60006001600160e01b038211156111da5760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20326044820152663234206269747360c81b6064820152608401610692565b5090565b600063ffffffff8211156111da5760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201526532206269747360d01b6064820152608401610692565b6001600160a01b0383166112675761125a82611dd8565b611262611e0a565b505050565b6001600160a01b03821661127e5761125a83611dd8565b61128783611dd8565b61126282611dd8565b6001600160a01b038381166000908152600c602052604080822054858416835291205461126292918216911683611e18565b60006106bd8284612977565b5490565b6001600160a01b0383166113345760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610692565b6001600160a01b0382166113955760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610692565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006114028484610eaf565b9050600019811461106c578181101561145d5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610692565b61106c84848484036112d2565b6001600160a01b0383166114ce5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610692565b6001600160a01b0382166115305760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610692565b61153b838383611dba565b6001600160a01b038316600090815260208190526040902054818110156115b35760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610692565b6001600160a01b038085166000908152602081905260408082208585039055918516815290812080548492906115ea90849061293f565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161163691815260200190565b60405180910390a361106c848484611dcd565b6000306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480156116a257507f000000000000000000000000000000000000000000000000000000000000000046145b156116cc57507f000000000000000000000000000000000000000000000000000000000000000090565b50604080517f00000000000000000000000000000000000000000000000000000000000000006020808301919091527f0000000000000000000000000000000000000000000000000000000000000000828401527f000000000000000000000000000000000000000000000000000000000000000060608301524660808301523060a0808401919091528351808403909101815260c0909201909252805191012090565b8154600090815b818110156117e257600061178b8284611f55565b9050848682815481106117ae57634e487b7160e01b600052603260045260246000fd5b60009182526020909120015463ffffffff1611156117ce578092506117dc565b6117d981600161293f565b91505b50611777565b811561183457846117f4600184612977565b8154811061181257634e487b7160e01b600052603260045260246000fd5b60009182526020909120015464010000000090046001600160e01b0316611837565b60005b6001600160e01b031695945050505050565b6009546001600160a01b031633146106d45760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610692565b6118ab611f70565b6009805460ff60a01b191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b6106e88282610fe2565b6106e88282611fc0565b600080600084116119585760405162461bcd60e51b815260206004820152601660248201527504552433230536e617073686f743a20696420697320360541b6044820152606401610692565b611960611fd8565b8411156119af5760405162461bcd60e51b815260206004820152601d60248201527f4552433230536e617073686f743a206e6f6e6578697374656e742069640000006044820152606401610692565b60006119bb8486611fe3565b84549091508114156119d4576000809250925050611a0a565b60018460010182815481106119f957634e487b7160e01b600052603260045260246000fd5b906000526020600020015492509250505b9250929050565b6001600160a01b038281166000818152600c60208181526040808420805485845282862054949093528787166001600160a01b03198416811790915590519190951694919391928592917f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a461106c828483611e18565b600980546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b611ae46120c2565b6009805460ff60a01b1916600160a01b1790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586118db3390565b6000611b2f600880546001019055565b6000611b39611fd8565b90507f8030e83b04d87bef53480e26263266d6ca66863aa8506aca6f2559d18aa1cb6781604051611b6c91815260200190565b60405180910390a1919050565b60006105ea611b86611649565b8360405161190160f01b6020820152602281018390526042810182905260009060620160405160208183030381529060405280519060200120905092915050565b6000806000611bd88787878761210f565b91509150611be5816121fc565b5095945050505050565b6001600160a01b0381166000908152600a602052604090208054600181018255905b50919050565b825460009081908015611c705785611c30600183612977565b81548110611c4e57634e487b7160e01b600052603260045260246000fd5b60009182526020909120015464010000000090046001600160e01b0316611c73565b60005b6001600160e01b03169250611c8c83858763ffffffff16565b9150600081118015611cd857504386611ca6600184612977565b81548110611cc457634e487b7160e01b600052603260045260246000fd5b60009182526020909120015463ffffffff16145b15611d4657611ce682611171565b86611cf2600184612977565b81548110611d1057634e487b7160e01b600052603260045260246000fd5b9060005260206000200160000160046101000a8154816001600160e01b0302191690836001600160e01b03160217905550611db1565b856040518060400160405280611d5b436111de565b63ffffffff168152602001611d6f85611171565b6001600160e01b0390811690915282546001810184556000938452602093849020835194909301519091166401000000000263ffffffff909316929092179101555b50935093915050565b611dc26120c2565b611262838383611243565b611262838383611290565b6001600160a01b038116600090815260056020908152604080832091839052909120546106f691906123fd565b6123fd565b6106d46006611e0560025490565b816001600160a01b0316836001600160a01b031614158015611e3a5750600081115b15611262576001600160a01b03831615611ec8576001600160a01b0383166000908152600d602052604081208190611e75906112c285611c17565b91509150846001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a7248383604051611ebd929190918252602082015260400190565b60405180910390a250505b6001600160a01b03821615611262576001600160a01b0382166000908152600d602052604081208190611efe9061116585611c17565b91509150836001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a7248383604051611f46929190918252602082015260400190565b60405180910390a25050505050565b6000611f646002848418612957565b6106bd9084841661293f565b600954600160a01b900460ff166106d45760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606401610692565b611fca8282612447565b61106c600e6112c283611c17565b600061061e60085490565b8154600090611ff4575060006105ea565b82546000905b8082101561205e57600061200e8383611f55565b90508486828154811061203157634e487b7160e01b600052603260045260246000fd5b9060005260206000200154111561204a57809150612058565b61205581600161293f565b92505b50611ffa565b6000821180156120a157508385612076600185612977565b8154811061209457634e487b7160e01b600052603260045260246000fd5b9060005260206000200154145b156120ba576120b1600183612977565b925050506105ea565b5090506105ea565b600954600160a01b900460ff16156106d45760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606401610692565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561214657506000905060036121f3565b8460ff16601b1415801561215e57508460ff16601c14155b1561216f57506000905060046121f3565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156121c3573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166121ec576000600192509250506121f3565b9150600090505b94509492505050565b600081600481111561221e57634e487b7160e01b600052602160045260246000fd5b14156122275750565b600181600481111561224957634e487b7160e01b600052602160045260246000fd5b14156122975760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610692565b60028160048111156122b957634e487b7160e01b600052602160045260246000fd5b14156123075760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610692565b600381600481111561232957634e487b7160e01b600052602160045260246000fd5b14156123825760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610692565b60048160048111156123a457634e487b7160e01b600052602160045260246000fd5b14156106f65760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610692565b6000612407611fd8565b905080612413846125a8565b1015611262578254600180820185556000858152602080822090930193909355938401805494850181558252902090910155565b6001600160a01b0382166124a75760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610692565b6124b382600083611dba565b6001600160a01b038216600090815260208190526040902054818110156125275760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610692565b6001600160a01b0383166000908152602081905260408120838303905560028054849290612556908490612977565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a361126283600084611dcd565b80546000906125b957506000919050565b815482906125c990600190612977565b815481106125e757634e487b7160e01b600052603260045260246000fd5b90600052602060002001549050919050565b919050565b803560ff811681146125f957600080fd5b600060208284031215612620578081fd5b81356106bd816129d9565b6000806040838503121561263d578081fd5b8235612648816129d9565b91506020830135612658816129d9565b809150509250929050565b600080600060608486031215612677578081fd5b8335612682816129d9565b92506020840135612692816129d9565b929592945050506040919091013590565b600080600080600080600060e0888a0312156126bd578283fd5b87356126c8816129d9565b965060208801356126d8816129d9565b955060408801359450606088013593506126f4608089016125fe565b925060a0880135915060c0880135905092959891949750929550565b60008060408385031215612722578182fd5b823561272d816129d9565b946020939093013593505050565b60008060008060008060c08789031215612753578182fd5b863561275e816129d9565b9550602087013594506040870135935061277a606088016125fe565b92506080870135915060a087013590509295509295509295565b600080604083850312156127a6578182fd5b82356127b1816129d9565b9150602083013563ffffffff81168114612658578182fd5b6000602082840312156127da578081fd5b5051919050565b6000806000806000608086880312156127f8578081fd5b8535612803816129d9565b94506020860135612813816129d9565b935060408601359250606086013567ffffffffffffffff80821115612836578283fd5b818801915088601f830112612849578283fd5b813581811115612857578384fd5b896020828501011115612868578384fd5b9699959850939650602001949392505050565b60006020828403121561288c578081fd5b5035919050565b6001600160a01b03878116825286166020820152604081018590526060810184905260a06080820181905281018290526000828460c084013781830160c090810191909152601f909201601f1916010195945050505050565b6000602080835283518082850152825b81811015612918578581018301518582016040015282016128fc565b818111156129295783604083870101525b50601f01601f1916929092016040019392505050565b60008219821115612952576129526129c3565b500190565b60008261297257634e487b7160e01b81526012600452602481fd5b500490565b600082821015612989576129896129c3565b500390565b600181811c908216806129a257607f821691505b60208210811415611c1157634e487b7160e01b600052602260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6001600160a01b03811681146106f657600080fdfea2646970667358221220280683de1c568378c88cac5b63bb51f1a4f06141e0774b8ff918e4fbe8868ad564736f6c63430008040033dec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724
Deployed ByteCode Sourcemap
49475:1334:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31943:100;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32861:201;;;;;;:::i;:::-;;:::i;:::-;;;6366:14:1;;6359:22;6341:41;;6329:2;6314:18;32861:201:0;6296:92:1;32258:108:0;32346:12;;32258:108;;;6539:25:1;;;6527:2;6512:18;32258:108:0;6494:76:1;33070:295:0;;;;;;:::i;:::-;;:::i;32159:93::-;;;32242:2;22061:36:1;;22049:2;22034:18;32159:93:0;22016:87:1;39803:115:0;;;:::i;33373:238::-;;;;;;:::i;:::-;;:::i;41283:268::-;;;;;;:::i;:::-;;:::i;49892:65::-;;;:::i;:::-;;49965:95;;;;;;:::i;:::-;;:::i;49184:91::-;;;;;;:::i;:::-;;:::i;46641:266::-;;;;;;:::i;:::-;;:::i;40927:128::-;;;;;;:::i;:::-;-1:-1:-1;;;;;41028:19:0;;;41001:7;41028:19;;;:10;:19;;;;;;;;40927:128;;;;-1:-1:-1;;;;;5415:32:1;;;5397:51;;5385:2;5370:18;40927:128:0;5352:102:1;42319:114:0;;;;;;:::i;:::-;;:::i;28912:86::-;28983:7;;-1:-1:-1;;;28983:7:0;;;;28912:86;;37575:959;;;;;;:::i;:::-;;:::i;37053:178::-;;;;;;:::i;:::-;;:::i;40768:151::-;;;;;;:::i;:::-;;:::i;:::-;;;21896:10:1;21884:23;;;21866:42;;21854:2;21839:18;40768:151:0;21821:93:1;32372:127:0;;;;;;:::i;:::-;-1:-1:-1;;;;;32473:18:0;32446:7;32473:18;;;;;;;;;;;;32372:127;30044:103;;;:::i;49281:164::-;;;;;;:::i;:::-;;:::i;39667:128::-;;;;;;:::i;:::-;;:::i;49823:61::-;;;:::i;29813:87::-;29886:6;;-1:-1:-1;;;;;29886:6:0;29813:87;;41559:259;;;;;;:::i;:::-;;:::i;32049:104::-;;;:::i;49748:67::-;;;:::i;46915:234::-;;;;;;:::i;:::-;;:::i;41063:212::-;;;;;;:::i;:::-;;:::i;33619:436::-;;;;;;:::i;:::-;;:::i;32505:193::-;;;;;;:::i;:::-;;:::i;42441:591::-;;;;;;:::i;:::-;;:::i;39014:645::-;;;;;;:::i;:::-;;:::i;37239:215::-;;;;;;:::i;:::-;;:::i;32704:151::-;;;;;;:::i;:::-;;:::i;40610:150::-;;;;;;:::i;:::-;;:::i;:::-;;;;21160:13:1;;21175:10;21156:30;21138:49;;21247:4;21235:17;;;21229:24;-1:-1:-1;;;;;21225:50:1;21203:20;;;21196:80;;;;21111:18;40610:150:0;21093:189:1;30153:201:0;;;;;;:::i;:::-;;:::i;31943:100::-;31997:13;32030:5;32023:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31943:100;:::o;32861:201::-;32944:4;28397:10;33000:32;28397:10;33016:7;33025:6;33000:8;:32::i;:::-;33050:4;33043:11;;;32861:201;;;;;:::o;33070:295::-;33201:4;28397:10;33259:38;33275:4;28397:10;33290:6;33259:15;:38::i;:::-;33308:27;33318:4;33324:2;33328:6;33308:9;:27::i;:::-;-1:-1:-1;33353:4:0;;33070:295;-1:-1:-1;;;;33070:295:0:o;39803:115::-;39863:7;39890:20;:18;:20::i;:::-;39883:27;;39803:115;:::o;33373:238::-;33461:4;28397:10;33517:64;28397:10;33533:7;33570:10;33542:25;28397:10;33533:7;33542:9;:25::i;:::-;:38;;;;:::i;:::-;33517:8;:64::i;41283:268::-;41381:7;41423:12;41409:11;:26;41401:70;;;;-1:-1:-1;;;41401:70:0;;10415:2:1;41401:70:0;;;10397:21:1;10454:2;10434:18;;;10427:30;10493:33;10473:18;;;10466:61;10544:18;;41401:70:0;;;;;;;;;-1:-1:-1;;;;;41508:21:0;;;;;;:12;:21;;;;;41489:54;;41531:11;41489:18;:54::i;:::-;41482:61;41283:268;-1:-1:-1;;;41283:268:0:o;49892:65::-;29774:13;:11;:13::i;:::-;49939:10:::1;:8;:10::i;:::-;49892:65::o:0;49965:95::-;29774:13;:11;:13::i;:::-;50035:17:::1;50041:2;50045:6;50035:5;:17::i;:::-;49965:95:::0;;:::o;49184:91::-;49240:27;28397:10;49260:6;49240:5;:27::i;:::-;49184:91;:::o;46641:266::-;-1:-1:-1;;;;;46805:33:0;;46728:7;46805:33;;;:24;:33;;;;;46728:7;;;;46784:55;;46793:10;;46784:8;:55::i;:::-;46748:91;;;;46859:11;:40;;-1:-1:-1;;;;;32473:18:0;;32446:7;32473:18;;;;;;;;;;;46859:40;;;46873:5;46859:40;46852:47;46641:266;-1:-1:-1;;;;;46641:266:0:o;42319:114::-;42391:34;28397:10;42415:9;42391;:34::i;37575:959::-;37754:4;37789:19;37802:5;37789:12;:19::i;:::-;37779:6;:29;;37771:85;;;;-1:-1:-1;;;37771:85:0;;17989:2:1;37771:85:0;;;17971:21:1;18028:2;18008:18;;;18001:30;18067:34;18047:18;;;18040:62;-1:-1:-1;;;18118:18:1;;;18111:41;18169:19;;37771:85:0;17961:233:1;37771:85:0;37867:11;37881:23;37890:5;37897:6;37881:8;:23::i;:::-;37867:37;;37915:32;37929:8;37940:6;37915:5;:32::i;:::-;37980:58;;-1:-1:-1;;;37980:58:0;;36999:45;;-1:-1:-1;;;;;37980:20:0;;;;;:58;;38001:10;;38013:5;;38020:6;;38028:3;;38033:4;;;;37980:58;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:75;37958:161;;;;-1:-1:-1;;;37958:161:0;;14935:2:1;37958:161:0;;;14917:21:1;14974:2;14954:18;;;14947:30;15013:34;14993:18;;;14986:62;-1:-1:-1;;;15064:18:1;;;15057:34;15108:19;;37958:161:0;14907:226:1;37958:161:0;38130:24;38187:63;38211:8;38230:4;38237:12;38246:3;38237:6;:12;:::i;:::-;38187:15;:63::i;:::-;38265:8;;;:42;;-1:-1:-1;;;;;;38277:30:0;;;38265:42;38261:244;;;38324:38;38338:8;38349:12;38358:3;38349:6;:12;:::i;:::-;38324:5;:38::i;:::-;38261:244;;;38395:32;38409:8;38420:6;38395:5;:32::i;:::-;38442:51;38460:8;38471:16;38489:3;38442:9;:51::i;:::-;-1:-1:-1;38522:4:0;;37575:959;-1:-1:-1;;;;;;;37575:959:0:o;37053:178::-;37128:7;-1:-1:-1;;;;;37155:22:0;;37172:4;37155:22;:68;;37222:1;37155:68;;;32346:12;;37180:39;;-1:-1:-1;;37180:39:0;:::i;40768:151::-;-1:-1:-1;;;;;40882:21:0;;40838:6;40882:21;;;:12;:21;;;;;:28;40864:47;;:17;:47::i;30044:103::-;29774:13;:11;:13::i;:::-;30109:30:::1;30136:1;30109:18;:30::i;49281:164::-:0;49358:46;49374:7;28397:10;49397:6;49358:15;:46::i;:::-;49415:22;49421:7;49430:6;49415:5;:22::i;39667:128::-;-1:-1:-1;;;;;39763:14:0;;39736:7;39763:14;;;:7;:14;;;;;23077;39763:24;22985:114;49823:61;29774:13;:11;:13::i;:::-;49868:8:::1;:6;:8::i;41559:259::-:0;41646:7;41688:12;41674:11;:26;41666:70;;;;-1:-1:-1;;;41666:70:0;;10415:2:1;41666:70:0;;;10397:21:1;10454:2;10434:18;;;10427:30;10493:33;10473:18;;;10466:61;10544:18;;41666:70:0;10387:181:1;41666:70:0;41754:56;41773:23;41798:11;41754:18;:56::i;32049:104::-;32105:13;32138:7;32131:14;;;;;:::i;49748:67::-;29774:13;:11;:13::i;:::-;49796:11:::1;:9;:11::i;46915:234::-:0;46987:7;47008:16;47026:13;47043:43;47052:10;47064:21;47043:8;:43::i;:::-;47007:79;;;;47106:11;:35;;32346:12;;47106:35;;;47120:5;47106:35;47099:42;46915:234;-1:-1:-1;;;;46915:234:0:o;41063:212::-;-1:-1:-1;;;;;41170:21:0;;41136:7;41170:21;;;:12;:21;;;;;:28;41216:8;;:51;;-1:-1:-1;;;;;41231:21:0;;;;;;:12;:21;;;;;41253:7;41259:1;41253:3;:7;:::i;:::-;41231:30;;;;;;-1:-1:-1;;;41231:30:0;;;;;;;;;;;;;;;;;;:36;;;;-1:-1:-1;;;;;41231:36:0;41216:51;;;41227:1;41216:51;-1:-1:-1;;;;;41209:58:0;;41063:212;-1:-1:-1;;;41063:212:0:o;33619:436::-;33712:4;28397:10;33712:4;33795:25;28397:10;33812:7;33795:9;:25::i;:::-;33768:52;;33859:15;33839:16;:35;;33831:85;;;;-1:-1:-1;;;33831:85:0;;20372:2:1;33831:85:0;;;20354:21:1;20411:2;20391:18;;;20384:30;20450:34;20430:18;;;20423:62;-1:-1:-1;;;20501:18:1;;;20494:35;20546:19;;33831:85:0;20344:227:1;33831:85:0;33952:60;33961:5;33968:7;33996:15;33977:16;:34;33952:8;:60::i;32505:193::-;32584:4;28397:10;32640:28;28397:10;32657:2;32661:6;32640:9;:28::i;42441:591::-;42668:6;42649:15;:25;;42641:67;;;;-1:-1:-1;;;42641:67:0;;11124:2:1;42641:67:0;;;11106:21:1;11163:2;11143:18;;;11136:30;11202:31;11182:18;;;11175:59;11251:18;;42641:67:0;11096:179:1;42641:67:0;42791:58;;;40364:71;42791:58;;;7402:25:1;-1:-1:-1;;;;;7463:32:1;;7443:18;;;7436:60;;;;7512:18;;;7505:34;;;7555:18;;;7548:34;;;42719:14:0;;42736:174;;42764:87;;7374:19:1;;42791:58:0;;;;;;;;;;;;42781:69;;;;;;42764:16;:87::i;:::-;42866:1;42882;42898;42736:13;:174::i;:::-;42719:191;;42938:17;42948:6;42938:9;:17::i;:::-;42929:5;:26;42921:64;;;;-1:-1:-1;;;42921:64:0;;12245:2:1;42921:64:0;;;12227:21:1;12284:2;12264:18;;;12257:30;12323:27;12303:18;;;12296:55;12368:18;;42921:64:0;12217:175:1;42921:64:0;42996:28;43006:6;43014:9;42996;:28::i;:::-;42441:591;;;;;;;:::o;39014:645::-;39258:8;39239:15;:27;;39231:69;;;;-1:-1:-1;;;39231:69:0;;13767:2:1;39231:69:0;;;13749:21:1;13806:2;13786:18;;;13779:30;13845:31;13825:18;;;13818:59;13894:18;;39231:69:0;13739:179:1;39231:69:0;39313:18;38792:95;39373:5;39380:7;39389:5;39396:16;39406:5;39396:9;:16::i;:::-;39344:79;;;;;;6862:25:1;;;;-1:-1:-1;;;;;6961:15:1;;;6941:18;;;6934:43;7013:15;;;;6993:18;;;6986:43;7045:18;;;7038:34;7088:19;;;7081:35;7132:19;;;7125:35;;;6834:19;;39344:79:0;;;;;;;;;;;;39334:90;;;;;;39313:111;;39437:12;39452:28;39469:10;39452:16;:28::i;:::-;39437:43;;39493:14;39510:28;39524:4;39530:1;39533;39536;39510:13;:28::i;:::-;39493:45;;39567:5;-1:-1:-1;;;;;39557:15:0;:6;-1:-1:-1;;;;;39557:15:0;;39549:58;;;;-1:-1:-1;;;39549:58:0;;16444:2:1;39549:58:0;;;16426:21:1;16483:2;16463:18;;;16456:30;16522:32;16502:18;;;16495:60;16572:18;;39549:58:0;16416:180:1;39549:58:0;39620:31;39629:5;39636:7;39645:5;39620:8;:31::i;:::-;39014:645;;;;;;;;;;:::o;37239:215::-;37326:7;-1:-1:-1;;;;;37354:22:0;;37371:4;37354:22;37346:62;;;;-1:-1:-1;;;37346:62:0;;15685:2:1;37346:62:0;;;15667:21:1;15724:2;15704:18;;;15697:30;15763:29;15743:18;;;15736:57;15810:18;;37346:62:0;15657:177:1;37346:62:0;-1:-1:-1;37445:1:0;37239:215;;;;:::o;32704:151::-;-1:-1:-1;;;;;32820:18:0;;;32793:7;32820:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;32704:151::o;40610:150::-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;40726:21:0;;;;;;:12;:21;;;;;:26;;;;;;;;;;-1:-1:-1;;;40726:26:0;;;;;;;;;;;;;;;;;;40719:33;;;;;;;;;40726:26;;40719:33;;;;;;;;;-1:-1:-1;;;;;40719:33:0;;;;;;;;;40610:150;-1:-1:-1;;;40610:150:0:o;30153:201::-;29774:13;:11;:13::i;:::-;-1:-1:-1;;;;;30242:22:0;::::1;30234:73;;;::::0;-1:-1:-1;;;30234:73:0;;12599:2:1;30234:73:0::1;::::0;::::1;12581:21:1::0;12638:2;12618:18;;;12611:30;12677:34;12657:18;;;12650:62;-1:-1:-1;;;12728:18:1;;;12721:36;12774:19;;30234:73:0::1;12571:228:1::0;30234:73:0::1;30318:28;30337:8;30318:18;:28::i;43153:290::-:0;43238:28;43250:7;43259:6;43238:11;:28::i;:::-;32346:12;;-1:-1:-1;;;;;;43285:29:0;43277:90;;;;-1:-1:-1;;;43277:90:0;;16803:2:1;43277:90:0;;;16785:21:1;16842:2;16822:18;;;16815:30;16881:34;16861:18;;;16854:62;-1:-1:-1;;;16932:18:1;;;16925:46;16988:19;;43277:90:0;16775:238:1;43277:90:0;43380:55;43397:23;43422:4;43428:6;43380:16;:55::i;:::-;;;43153:290;;:::o;34742:399::-;-1:-1:-1;;;;;34826:21:0;;34818:65;;;;-1:-1:-1;;;34818:65:0;;20778:2:1;34818:65:0;;;20760:21:1;20817:2;20797:18;;;20790:30;20856:33;20836:18;;;20829:61;20907:18;;34818:65:0;20750:181:1;34818:65:0;34896:49;34925:1;34929:7;34938:6;34896:20;:49::i;:::-;34974:6;34958:12;;:22;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;34991:18:0;;:9;:18;;;;;;;;;;:28;;35013:6;;34991:9;:28;;35013:6;;34991:28;:::i;:::-;;;;-1:-1:-1;;35035:37:0;;6539:25:1;;;-1:-1:-1;;;;;35035:37:0;;;35052:1;;35035:37;;6527:2:1;6512:18;35035:37:0;;;;;;;35085:48;35113:1;35117:7;35126:6;35085:19;:48::i;45623:98::-;45681:7;45708:5;45712:1;45708;:5;:::i;1341:195::-;1398:7;-1:-1:-1;;;;;1426:26:0;;;1418:78;;;;-1:-1:-1;;;1418:78:0;;17581:2:1;1418:78:0;;;17563:21:1;17620:2;17600:18;;;17593:30;17659:34;17639:18;;;17632:62;-1:-1:-1;;;17710:18:1;;;17703:37;17757:19;;1418:78:0;17553:229:1;1418:78:0;-1:-1:-1;1522:5:0;1341:195::o;6125:190::-;6181:6;6217:16;6208:25;;;6200:76;;;;-1:-1:-1;;;6200:76:0;;19209:2:1;6200:76:0;;;19191:21:1;19248:2;19228:18;;;19221:30;19287:34;19267:18;;;19260:62;-1:-1:-1;;;19338:18:1;;;19331:36;19384:19;;6200:76:0;19181:228:1;47157:622:0;-1:-1:-1;;;;;47361:18:0;;47357:415;;47417:26;47440:2;47417:22;:26::i;:::-;47458:28;:26;:28::i;:::-;47157:622;;;:::o;47357:415::-;-1:-1:-1;;;;;47508:16:0;;47504:268;;47562:28;47585:4;47562:22;:28::i;47504:268::-;47691:28;47714:4;47691:22;:28::i;:::-;47734:26;47757:2;47734:22;:26::i;43653:262::-;-1:-1:-1;;;;;41028:19:0;;;41001:7;41028:19;;;:10;:19;;;;;;;;;;;;;;;43851:56;;41028:19;;;;;43900:6;43851:16;:56::i;45729:103::-;45792:7;45819:5;45823:1;45819;:5;:::i;22985:114::-;23077:14;;22985:114::o;35748:380::-;-1:-1:-1;;;;;35884:19:0;;35876:68;;;;-1:-1:-1;;;35876:68:0;;19616:2:1;35876:68:0;;;19598:21:1;19655:2;19635:18;;;19628:30;19694:34;19674:18;;;19667:62;-1:-1:-1;;;19745:18:1;;;19738:34;19789:19;;35876:68:0;19588:226:1;35876:68:0;-1:-1:-1;;;;;35963:21:0;;35955:68;;;;-1:-1:-1;;;35955:68:0;;13006:2:1;35955:68:0;;;12988:21:1;13045:2;13025:18;;;13018:30;13084:34;13064:18;;;13057:62;-1:-1:-1;;;13135:18:1;;;13128:32;13177:19;;35955:68:0;12978:224:1;35955:68:0;-1:-1:-1;;;;;36036:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;36088:32;;6539:25:1;;;36088:32:0;;6512:18:1;36088:32:0;;;;;;;35748:380;;;:::o;36136:453::-;36271:24;36298:25;36308:5;36315:7;36298:9;:25::i;:::-;36271:52;;-1:-1:-1;;36338:16:0;:37;36334:248;;36420:6;36400:16;:26;;36392:68;;;;-1:-1:-1;;;36392:68:0;;13409:2:1;36392:68:0;;;13391:21:1;13448:2;13428:18;;;13421:30;13487:31;13467:18;;;13460:59;13536:18;;36392:68:0;13381:179:1;36392:68:0;36504:51;36513:5;36520:7;36548:6;36529:16;:25;36504:8;:51::i;34063:671::-;-1:-1:-1;;;;;34194:18:0;;34186:68;;;;-1:-1:-1;;;34186:68:0;;18803:2:1;34186:68:0;;;18785:21:1;18842:2;18822:18;;;18815:30;18881:34;18861:18;;;18854:62;-1:-1:-1;;;18932:18:1;;;18925:35;18977:19;;34186:68:0;18775:227:1;34186:68:0;-1:-1:-1;;;;;34273:16:0;;34265:64;;;;-1:-1:-1;;;34265:64:0;;10011:2:1;34265:64:0;;;9993:21:1;10050:2;10030:18;;;10023:30;10089:34;10069:18;;;10062:62;-1:-1:-1;;;10140:18:1;;;10133:33;10183:19;;34265:64:0;9983:225:1;34265:64:0;34342:38;34363:4;34369:2;34373:6;34342:20;:38::i;:::-;-1:-1:-1;;;;;34415:15:0;;34393:19;34415:15;;;;;;;;;;;34449:21;;;;34441:72;;;;-1:-1:-1;;;34441:72:0;;14125:2:1;34441:72:0;;;14107:21:1;14164:2;14144:18;;;14137:30;14203:34;14183:18;;;14176:62;-1:-1:-1;;;14254:18:1;;;14247:36;14300:19;;34441:72:0;14097:228:1;34441:72:0;-1:-1:-1;;;;;34549:15:0;;;:9;:15;;;;;;;;;;;34567:20;;;34549:38;;34609:13;;;;;;;;:23;;34581:6;;34549:9;34609:23;;34581:6;;34609:23;:::i;:::-;;;;;;;;34665:2;-1:-1:-1;;;;;34650:26:0;34659:4;-1:-1:-1;;;;;34650:26:0;;34669:6;34650:26;;;;6539:25:1;;6527:2;6512:18;;6494:76;34650:26:0;;;;;;;;34689:37;34709:4;34715:2;34719:6;34689:19;:37::i;21727:314::-;21780:7;21812:4;-1:-1:-1;;;;;21821:12:0;21804:29;;:66;;;;;21854:16;21837:13;:33;21804:66;21800:234;;;-1:-1:-1;21894:24:0;;21727:314::o;21800:234::-;-1:-1:-1;22230:73:0;;;21980:10;22230:73;;;;7852:25:1;;;;21992:12:0;7893:18:1;;;7886:34;22006:15:0;7936:18:1;;;7929:34;22274:13:0;7979:18:1;;;7972:34;22297:4:0;8022:19:1;;;;8015:61;;;;22230:73:0;;;;;;;;;;7824:19:1;;;;22230:73:0;;;22220:84;;;;;;39803:115::o;41826:485::-;41962:12;;41925:7;;;42011:236;42024:4;42018:3;:10;42011:236;;;42045:11;42059:23;42072:3;42077:4;42059:12;:23::i;:::-;42045:37;;42124:11;42101:5;42107:3;42101:10;;;;;;-1:-1:-1;;;42101:10:0;;;;;;;;;;;;;;;;;;:20;;;:34;42097:139;;;42163:3;42156:10;;42097:139;;;42213:7;:3;42219:1;42213:7;:::i;:::-;42207:13;;42097:139;42011:236;;;;42266:9;;:37;;42282:5;42288:8;42295:1;42288:4;:8;:::i;:::-;42282:15;;;;;;-1:-1:-1;;;42282:15:0;;;;;;;;;;;;;;;;;;:21;;;;-1:-1:-1;;;;;42282:21:0;42266:37;;;42278:1;42266:37;-1:-1:-1;;;;;42259:44:0;;41826:485;-1:-1:-1;;;;;41826:485:0:o;29906:132::-;29886:6;;-1:-1:-1;;;;;29886:6:0;28397:10;29970:23;29962:68;;;;-1:-1:-1;;;29962:68:0;;17220:2:1;29962:68:0;;;17202:21:1;;;17239:18;;;17232:30;17298:34;17278:18;;;17271:62;17350:18;;29962:68:0;17192:182:1;29356:120:0;28870:16;:14;:16::i;:::-;29415:7:::1;:15:::0;;-1:-1:-1;;;;29415:15:0::1;::::0;;29446:22:::1;28397:10:::0;29455:12:::1;29446:22;::::0;-1:-1:-1;;;;;5415:32:1;;;5397:51;;5385:2;5370:18;29446:22:0::1;;;;;;;29356:120::o:0;50498:145::-;50612:23;50624:2;50628:6;50612:11;:23::i;50651:155::-;50770:28;50782:7;50791:6;50770:11;:28::i;47787:491::-;47876:4;47882:7;47923:1;47910:10;:14;47902:49;;;;-1:-1:-1;;;47902:49:0;;20021:2:1;47902:49:0;;;20003:21:1;20060:2;20040:18;;;20033:30;-1:-1:-1;;;20079:18:1;;;20072:52;20141:18;;47902:49:0;19993:172:1;47902:49:0;47984:23;:21;:23::i;:::-;47970:10;:37;;47962:79;;;;-1:-1:-1;;;47962:79:0;;9653:2:1;47962:79:0;;;9635:21:1;9692:2;9672:18;;;9665:30;9731:31;9711:18;;;9704:59;9780:18;;47962:79:0;9625:179:1;47962:79:0;48052:13;48068:40;:9;48097:10;48068:28;:40::i;:::-;48134:20;;48052:56;;-1:-1:-1;48125:29:0;;48121:150;;;48179:5;48186:1;48171:17;;;;;;;48121:150;48229:4;48235:9;:16;;48252:5;48235:23;;;;;;-1:-1:-1;;;48235:23:0;;;;;;;;;;;;;;;;;48221:38;;;;;47787:491;;;;;;:::o;43923:388::-;-1:-1:-1;;;;;41028:19:0;;;44008:23;41028:19;;;:10;:19;;;;;;;;;;32473:18;;;;;;;44123:21;;;;:33;;;-1:-1:-1;;;;;;44123:33:0;;;;;;;44174:54;;41028:19;;;;;32473:18;;44123:33;;41028:19;;;44174:54;;44008:23;44174:54;44241:62;44258:15;44275:9;44286:16;44241;:62::i;30362:191::-;30455:6;;;-1:-1:-1;;;;;30472:17:0;;;-1:-1:-1;;;;;;30472:17:0;;;;;;;30505:40;;30455:6;;;30472:17;30455:6;;30505:40;;30436:16;;30505:40;30362:191;;:::o;29232:118::-;28792:19;:17;:19::i;:::-;29292:7:::1;:14:::0;;-1:-1:-1;;;;29292:14:0::1;-1:-1:-1::0;;;29292:14:0::1;::::0;;29322:20:::1;29329:12;28397:10:::0;;28317:98;46275:223;46322:7;46342:30;:18;23196:19;;23214:1;23196:19;;;23107:127;46342:30;46385:17;46405:23;:21;:23::i;:::-;46385:43;;46444:19;46453:9;46444:19;;;;6539:25:1;;6527:2;6512:18;;6494:76;46444:19:0;;;;;;;;46481:9;46275:223;-1:-1:-1;46275:223:0:o;22318:167::-;22395:7;22422:55;22444:20;:18;:20::i;:::-;22466:10;20689:57;;-1:-1:-1;;;20689:57:0;;;5112:27:1;5155:11;;;5148:27;;;5191:12;;;5184:28;;;20652:7:0;;5228:12:1;;20689:57:0;;;;;;;;;;;;20679:68;;;;;;20672:75;;20559:196;;;;;19891:279;20019:7;20040:17;20059:18;20081:25;20092:4;20098:1;20101;20104;20081:10;:25::i;:::-;20039:67;;;;20117:18;20129:5;20117:11;:18::i;:::-;-1:-1:-1;20153:9:0;19891:279;-1:-1:-1;;;;;19891:279:0:o;39926:207::-;-1:-1:-1;;;;;40047:14:0;;39986:15;40047:14;;;:7;:14;;;;;23077;;23214:1;23196:19;;;;23077:14;40108:17;39926:207;;;;:::o;44970:645::-;45207:12;;45144:17;;;;45242:8;;:35;;45257:5;45263:7;45269:1;45263:3;:7;:::i;:::-;45257:14;;;;;;-1:-1:-1;;;45257:14:0;;;;;;;;;;;;;;;;;;:20;;;;-1:-1:-1;;;;;45257:20:0;45242:35;;;45253:1;45242:35;-1:-1:-1;;;;;45230:47:0;;;45300:20;45303:9;45314:5;45300:2;:20;;:::i;:::-;45288:32;;45343:1;45337:3;:7;:51;;;;-1:-1:-1;45376:12:0;45348:5;45354:7;45360:1;45354:3;:7;:::i;:::-;45348:14;;;;;;-1:-1:-1;;;45348:14:0;;;;;;;;;;;;;;;;;;:24;;;:40;45337:51;45333:275;;;45428:29;45447:9;45428:18;:29::i;:::-;45405:5;45411:7;45417:1;45411:3;:7;:::i;:::-;45405:14;;;;;;-1:-1:-1;;;45405:14:0;;;;;;;;;;;;;;;;:20;;;:52;;;;;-1:-1:-1;;;;;45405:52:0;;;;;-1:-1:-1;;;;;45405:52:0;;;;;;45333:275;;;45490:5;45501:94;;;;;;;;45524:31;45542:12;45524:17;:31::i;:::-;45501:94;;;;;;45564:29;45583:9;45564:18;:29::i;:::-;-1:-1:-1;;;;;45501:94:0;;;;;;45490:106;;;;;;;-1:-1:-1;45490:106:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;45333:275;44970:645;;;;;;;:::o;50068:221::-;28792:19;:17;:19::i;:::-;50237:44:::1;50264:4;50270:2;50274:6;50237:26;:44::i;50297:193::-:0;50439:43;50465:4;50471:2;50475:6;50439:25;:43::i;48286:146::-;-1:-1:-1;;;;;48370:33:0;;;;;;:24;:33;;;;;;;;32473:18;;;;;;;;48354:70;;48370:33;48354:15;:70::i;48405:18::-;48354:15;:70::i;48440:118::-;48497:53;48513:21;48536:13;32346:12;;;32258:108;44319:643;44451:3;-1:-1:-1;;;;;44444:10:0;:3;-1:-1:-1;;;;;44444:10:0;;;:24;;;;;44467:1;44458:6;:10;44444:24;44440:515;;;-1:-1:-1;;;;;44489:17:0;;;44485:224;;-1:-1:-1;;;;;44585:17:0;;44528;44585;;;:12;:17;;;;;44528;;44568:54;;44604:9;44615:6;44568:16;:54::i;:::-;44527:95;;;;44667:3;-1:-1:-1;;;;;44646:47:0;;44672:9;44683;44646:47;;;;;;21643:25:1;;;21699:2;21684:18;;21677:34;21631:2;21616:18;;21598:119;44646:47:0;;;;;;;;44485:224;;;-1:-1:-1;;;;;44729:17:0;;;44725:219;;-1:-1:-1;;;;;44825:17:0;;44768;44825;;;:12;:17;;;;;44768;;44808:49;;44844:4;44850:6;44808:16;:49::i;:::-;44767:90;;;;44902:3;-1:-1:-1;;;;;44881:47:0;;44907:9;44918;44881:47;;;;;;21643:25:1;;;21699:2;21684:18;;21677:34;21631:2;21616:18;;21598:119;44881:47:0;;;;;;;;44725:219;;44319:643;;;:::o;23916:156::-;23978:7;24053:11;24063:1;24054:5;;;24053:11;:::i;:::-;24043:21;;24044:5;;;24043:21;:::i;29118:108::-;28983:7;;-1:-1:-1;;;28983:7:0;;;;29177:41;;;;-1:-1:-1;;;29177:41:0;;10775:2:1;29177:41:0;;;10757:21:1;10814:2;10794:18;;;10787:30;-1:-1:-1;;;10833:18:1;;;10826:50;10893:18;;29177:41:0;10747:170:1;43451:194:0;43536:28;43548:7;43557:6;43536:11;:28::i;:::-;43577:60;43594:23;43619:9;43630:6;43577:16;:60::i;46506:127::-;46570:7;46597:28;:18;23077:14;;22985:114;27644:610;27757:12;;27733:7;;27753:58;;-1:-1:-1;27798:1:0;27791:8;;27753:58;27864:12;;27823:11;;27889:222;27902:4;27896:3;:10;27889:222;;;27923:11;27937:23;27950:3;27955:4;27937:12;:23::i;:::-;27923:37;;27992:7;27979:5;27985:3;27979:10;;;;;;-1:-1:-1;;;27979:10:0;;;;;;;;;;;;;;;;;:20;27975:125;;;28027:3;28020:10;;27975:125;;;28077:7;:3;28083:1;28077:7;:::i;:::-;28071:13;;27975:125;27889:222;;;;28131:1;28125:3;:7;:36;;;;-1:-1:-1;28154:7:0;28136:5;28142:7;28148:1;28142:3;:7;:::i;:::-;28136:14;;;;;;-1:-1:-1;;;28136:14:0;;;;;;;;;;;;;;;;;:25;28125:36;28121:126;;;28185:7;28191:1;28185:3;:7;:::i;:::-;28178:14;;;;;;28121:126;-1:-1:-1;28232:3:0;-1:-1:-1;28225:10:0;;29004:108;28983:7;;-1:-1:-1;;;28983:7:0;;;;29074:9;29066:38;;;;-1:-1:-1;;;29066:38:0;;15340:2:1;29066:38:0;;;15322:21:1;15379:2;15359:18;;;15352:30;-1:-1:-1;;;15398:18:1;;;15391:46;15454:18;;29066:38:0;15312:166:1;19222:663:0;19353:7;;19405:66;19392:79;;19388:163;;;-1:-1:-1;19504:1:0;;-1:-1:-1;19508:30:0;19488:51;;19388:163;19565:1;:7;;19570:2;19565:7;;:18;;;;;19576:1;:7;;19581:2;19576:7;;19565:18;19561:102;;;-1:-1:-1;19616:1:0;;-1:-1:-1;19620:30:0;19600:51;;19561:102;19690:24;;;19673:14;19690:24;;;;;;;;;8314:25:1;;;8387:4;8375:17;;8355:18;;;8348:45;;;;8409:18;;;8402:34;;;8452:18;;;8445:34;;;19690:24:0;;8286:19:1;;19690:24:0;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;19690:24:0;;-1:-1:-1;;19690:24:0;;;-1:-1:-1;;;;;;;19729:20:0;;19725:103;;19782:1;19786:29;19766:50;;;;;;;19725:103;19848:6;-1:-1:-1;19856:20:0;;-1:-1:-1;19222:663:0;;;;;;;;:::o;16892:620::-;16970:20;16961:5;:29;;;;;;-1:-1:-1;;;16961:29:0;;;;;;;;;;16957:548;;;16892:620;:::o;16957:548::-;17045:29;17036:5;:38;;;;;;-1:-1:-1;;;17036:38:0;;;;;;;;;;17032:473;;;17091:34;;-1:-1:-1;;;17091:34:0;;9300:2:1;17091:34:0;;;9282:21:1;9339:2;9319:18;;;9312:30;9378:26;9358:18;;;9351:54;9422:18;;17091:34:0;9272:174:1;17032:473:0;17156:35;17147:5;:44;;;;;;-1:-1:-1;;;17147:44:0;;;;;;;;;;17143:362;;;17208:41;;-1:-1:-1;;;17208:41:0;;11885:2:1;17208:41:0;;;11867:21:1;11924:2;11904:18;;;11897:30;11963:33;11943:18;;;11936:61;12014:18;;17208:41:0;11857:181:1;17143:362:0;17280:30;17271:5;:39;;;;;;-1:-1:-1;;;17271:39:0;;;;;;;;;;17267:238;;;17327:44;;-1:-1:-1;;;17327:44:0;;14532:2:1;17327:44:0;;;14514:21:1;14571:2;14551:18;;;14544:30;14610:34;14590:18;;;14583:62;-1:-1:-1;;;14661:18:1;;;14654:32;14703:19;;17327:44:0;14504:224:1;17267:238:0;17402:30;17393:5;:39;;;;;;-1:-1:-1;;;17393:39:0;;;;;;;;;;17389:116;;;17449:44;;-1:-1:-1;;;17449:44:0;;16041:2:1;17449:44:0;;;16023:21:1;16080:2;16060:18;;;16053:30;16119:34;16099:18;;;16092:62;-1:-1:-1;;;16170:18:1;;;16163:32;16212:19;;17449:44:0;16013:224:1;48566:310:0;48661:17;48681:23;:21;:23::i;:::-;48661:43;-1:-1:-1;48661:43:0;48719:30;48735:9;48719:15;:30::i;:::-;:42;48715:154;;;48778:29;;;;;;;;-1:-1:-1;48778:29:0;;;;;;;;;;;;;;48822:16;;;:35;;;;;;;;;;;;;;;48566:310::o;35149:591::-;-1:-1:-1;;;;;35233:21:0;;35225:67;;;;-1:-1:-1;;;35225:67:0;;18401:2:1;35225:67:0;;;18383:21:1;18440:2;18420:18;;;18413:30;18479:34;18459:18;;;18452:62;-1:-1:-1;;;18530:18:1;;;18523:31;18571:19;;35225:67:0;18373:223:1;35225:67:0;35305:49;35326:7;35343:1;35347:6;35305:20;:49::i;:::-;-1:-1:-1;;;;;35392:18:0;;35367:22;35392:18;;;;;;;;;;;35429:24;;;;35421:71;;;;-1:-1:-1;;;35421:71:0;;11482:2:1;35421:71:0;;;11464:21:1;11521:2;11501:18;;;11494:30;11560:34;11540:18;;;11533:62;-1:-1:-1;;;11611:18:1;;;11604:32;11653:19;;35421:71:0;11454:224:1;35421:71:0;-1:-1:-1;;;;;35528:18:0;;:9;:18;;;;;;;;;;35549:23;;;35528:44;;35594:12;:22;;35566:6;;35528:9;35594:22;;35566:6;;35594:22;:::i;:::-;;;;-1:-1:-1;;35634:37:0;;6539:25:1;;;35660:1:0;;-1:-1:-1;;;;;35634:37:0;;;;;6527:2:1;6512:18;35634:37:0;;;;;;;35684:48;35704:7;35721:1;35725:6;35684:19;:48::i;48884:212::-;48978:10;;48954:7;;48974:115;;-1:-1:-1;49017:1:0;;48884:212;-1:-1:-1;48884:212:0:o;48974:115::-;49062:10;;49058:3;;49062:14;;49075:1;;49062:14;:::i;:::-;49058:19;;;;;;-1:-1:-1;;;49058:19:0;;;;;;;;;;;;;;;;;49051:26;;48884:212;;;:::o;48974:115::-;48884:212;;;:::o;14:156:1:-;80:20;;140:4;129:16;;119:27;;109:2;;160:1;157;150:12;175:257;234:6;287:2;275:9;266:7;262:23;258:32;255:2;;;308:6;300;293:22;255:2;352:9;339:23;371:31;396:5;371:31;:::i;437:398::-;505:6;513;566:2;554:9;545:7;541:23;537:32;534:2;;;587:6;579;572:22;534:2;631:9;618:23;650:31;675:5;650:31;:::i;:::-;700:5;-1:-1:-1;757:2:1;742:18;;729:32;770:33;729:32;770:33;:::i;:::-;822:7;812:17;;;524:311;;;;;:::o;840:466::-;917:6;925;933;986:2;974:9;965:7;961:23;957:32;954:2;;;1007:6;999;992:22;954:2;1051:9;1038:23;1070:31;1095:5;1070:31;:::i;:::-;1120:5;-1:-1:-1;1177:2:1;1162:18;;1149:32;1190:33;1149:32;1190:33;:::i;:::-;944:362;;1242:7;;-1:-1:-1;;;1296:2:1;1281:18;;;;1268:32;;944:362::o;1311:744::-;1422:6;1430;1438;1446;1454;1462;1470;1523:3;1511:9;1502:7;1498:23;1494:33;1491:2;;;1545:6;1537;1530:22;1491:2;1589:9;1576:23;1608:31;1633:5;1608:31;:::i;:::-;1658:5;-1:-1:-1;1715:2:1;1700:18;;1687:32;1728:33;1687:32;1728:33;:::i;:::-;1780:7;-1:-1:-1;1834:2:1;1819:18;;1806:32;;-1:-1:-1;1885:2:1;1870:18;;1857:32;;-1:-1:-1;1908:37:1;1940:3;1925:19;;1908:37;:::i;:::-;1898:47;;1992:3;1981:9;1977:19;1964:33;1954:43;;2044:3;2033:9;2029:19;2016:33;2006:43;;1481:574;;;;;;;;;;:::o;2060:325::-;2128:6;2136;2189:2;2177:9;2168:7;2164:23;2160:32;2157:2;;;2210:6;2202;2195:22;2157:2;2254:9;2241:23;2273:31;2298:5;2273:31;:::i;:::-;2323:5;2375:2;2360:18;;;;2347:32;;-1:-1:-1;;;2147:238:1:o;2390:602::-;2492:6;2500;2508;2516;2524;2532;2585:3;2573:9;2564:7;2560:23;2556:33;2553:2;;;2607:6;2599;2592:22;2553:2;2651:9;2638:23;2670:31;2695:5;2670:31;:::i;:::-;2720:5;-1:-1:-1;2772:2:1;2757:18;;2744:32;;-1:-1:-1;2823:2:1;2808:18;;2795:32;;-1:-1:-1;2846:36:1;2878:2;2863:18;;2846:36;:::i;:::-;2836:46;;2929:3;2918:9;2914:19;2901:33;2891:43;;2981:3;2970:9;2966:19;2953:33;2943:43;;2543:449;;;;;;;;:::o;2997:439::-;3064:6;3072;3125:2;3113:9;3104:7;3100:23;3096:32;3093:2;;;3146:6;3138;3131:22;3093:2;3190:9;3177:23;3209:31;3234:5;3209:31;:::i;:::-;3259:5;-1:-1:-1;3316:2:1;3301:18;;3288:32;3364:10;3351:24;;3339:37;;3329:2;;3395:6;3387;3380:22;3441:194;3511:6;3564:2;3552:9;3543:7;3539:23;3535:32;3532:2;;;3585:6;3577;3570:22;3532:2;-1:-1:-1;3613:16:1;;3522:113;-1:-1:-1;3522:113:1:o;3640:1014::-;3765:6;3773;3781;3789;3797;3850:3;3838:9;3829:7;3825:23;3821:33;3818:2;;;3872:6;3864;3857:22;3818:2;3916:9;3903:23;3935:31;3960:5;3935:31;:::i;:::-;3985:5;-1:-1:-1;4042:2:1;4027:18;;4014:32;4055:33;4014:32;4055:33;:::i;:::-;4107:7;-1:-1:-1;4161:2:1;4146:18;;4133:32;;-1:-1:-1;4216:2:1;4201:18;;4188:32;4239:18;4269:14;;;4266:2;;;4301:6;4293;4286:22;4266:2;4344:6;4333:9;4329:22;4319:32;;4389:7;4382:4;4378:2;4374:13;4370:27;4360:2;;4416:6;4408;4401:22;4360:2;4461;4448:16;4487:2;4479:6;4476:14;4473:2;;;4508:6;4500;4493:22;4473:2;4558:7;4553:2;4544:6;4540:2;4536:15;4532:24;4529:37;4526:2;;;4584:6;4576;4569:22;4526:2;3808:846;;;;-1:-1:-1;3808:846:1;;-1:-1:-1;4620:2:1;4612:11;;4642:6;3808:846;-1:-1:-1;;;3808:846:1:o;4659:190::-;4718:6;4771:2;4759:9;4750:7;4746:23;4742:32;4739:2;;;4792:6;4784;4777:22;4739:2;-1:-1:-1;4820:23:1;;4729:120;-1:-1:-1;4729:120:1:o;5459:737::-;-1:-1:-1;;;;;5766:15:1;;;5748:34;;5818:15;;5813:2;5798:18;;5791:43;5865:2;5850:18;;5843:34;;;5908:2;5893:18;;5886:34;;;5728:3;5951;5936:19;;5929:32;;;5977:19;;5970:35;;;5691:4;5998:6;6048;6042:3;6027:19;;6014:49;6083:22;;;6107:3;6079:32;;;6072:46;;;;6179:2;6158:15;;;-1:-1:-1;;6154:29:1;6139:45;6135:55;;5700:496;-1:-1:-1;;;;;5700:496:1:o;8490:603::-;8602:4;8631:2;8660;8649:9;8642:21;8692:6;8686:13;8735:6;8730:2;8719:9;8715:18;8708:34;8760:4;8773:140;8787:6;8784:1;8781:13;8773:140;;;8882:14;;;8878:23;;8872:30;8848:17;;;8867:2;8844:26;8837:66;8802:10;;8773:140;;;8931:6;8928:1;8925:13;8922:2;;;9001:4;8996:2;8987:6;8976:9;8972:22;8968:31;8961:45;8922:2;-1:-1:-1;9077:2:1;9056:15;-1:-1:-1;;9052:29:1;9037:45;;;;9084:2;9033:54;;8611:482;-1:-1:-1;;;8611:482:1:o;22108:128::-;22148:3;22179:1;22175:6;22172:1;22169:13;22166:2;;;22185:18;;:::i;:::-;-1:-1:-1;22221:9:1;;22156:80::o;22241:217::-;22281:1;22307;22297:2;;-1:-1:-1;;;22332:31:1;;22386:4;22383:1;22376:15;22414:4;22339:1;22404:15;22297:2;-1:-1:-1;22443:9:1;;22287:171::o;22463:125::-;22503:4;22531:1;22528;22525:8;22522:2;;;22536:18;;:::i;:::-;-1:-1:-1;22573:9:1;;22512:76::o;22593:380::-;22672:1;22668:12;;;;22715;;;22736:2;;22790:4;22782:6;22778:17;22768:27;;22736:2;22843;22835:6;22832:14;22812:18;22809:38;22806:2;;;22889:10;22884:3;22880:20;22877:1;22870:31;22924:4;22921:1;22914:15;22952:4;22949:1;22942:15;22978:127;23039:10;23034:3;23030:20;23027:1;23020:31;23070:4;23067:1;23060:15;23094:4;23091:1;23084:15;23110:131;-1:-1:-1;;;;;23185:31:1;;23175:42;;23165:2;;23231:1;23228;23221:12
Swarm Source
ipfs://280683de1c568378c88cac5b63bb51f1a4f06141e0774b8ff918e4fbe8868ad5
Age | Block | Fee Address | BC Fee Address | Voting Power | Jailed | Incoming |
---|
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.