ERC-20
Overview
Max Total Supply
1,900,000,000 ONTP
Holders
192
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
CROS
Compiler Version
v0.6.6+commit.6c089d02
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2021-12-30 */ /** *Submitted for verification at Etherscan.io on 2021-07-14 */ // File: contracts/library/SafeMath.sol pragma solidity 0.6.6; /** * @dev Wrappers over Solidity's arithmetic operations with added overflow * checks. * * Arithmetic operations in Solidity wrap on overflow. This can easily result * in bugs, because programmers usually assume that an overflow raises an * error, which is the standard behavior in high level programming languages. * `SafeMath` restores this intuition by reverting the transaction when an * operation overflows. * * Using this library instead of the unchecked operations eliminates an entire * class of bugs, so it's recommended to use it always. */ library SafeMath { /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * - Subtraction cannot overflow. * * _Available since v2.4.0._ */ function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } /** * @dev Returns the integer division of two unsigned integers. Reverts on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } /** * @dev Returns the integer division of two unsigned integers. Reverts with custom message on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * - The divisor cannot be zero. * * _Available since v2.4.0._ */ function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { // Solidity only automatically asserts when dividing by 0 require(b > 0, errorMessage); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts with custom message when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * - The divisor cannot be zero. * * _Available since v2.4.0._ */ function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } } // File: contracts/erc20/ERC20.sol pragma solidity 0.6.6; abstract contract ERC20 { using SafeMath for uint256; uint256 private _totalSupply; mapping(address => uint256) internal _balances; mapping(address => mapping(address => uint256)) internal _allowances; event Transfer(address indexed from, address indexed to, uint256 amount); event Approval( address indexed owner, address indexed spender, uint256 amount ); /* * Internal Functions for ERC20 standard logics */ function _transfer(address from, address to, uint256 amount) internal returns (bool success) { _balances[from] = _balances[from].sub( amount, "ERC20/transfer : cannot transfer more than token owner balance" ); _balances[to] = _balances[to].add(amount); emit Transfer(from, to, amount); success = true; } function _approve(address owner, address spender, uint256 amount) internal returns (bool success) { _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); success = true; } function _mint(address recipient, uint256 amount) internal returns (bool success) { _totalSupply = _totalSupply.add(amount); _balances[recipient] = _balances[recipient].add(amount); emit Transfer(address(0), recipient, amount); success = true; } function _burn(address burned, uint256 amount) internal returns (bool success) { _balances[burned] = _balances[burned].sub( amount, "ERC20Burnable/burn : Cannot burn more than user's balance" ); _totalSupply = _totalSupply.sub( amount, "ERC20Burnable/burn : Cannot burn more than totalSupply" ); emit Transfer(burned, address(0), amount); success = true; } /* * public view functions to view common data */ function totalSupply() external view returns (uint256 total) { total = _totalSupply; } function balanceOf(address owner) external view returns (uint256 balance) { balance = _balances[owner]; } function allowance(address owner, address spender) external view returns (uint256 remaining) { remaining = _allowances[owner][spender]; } /* * External view Function Interface to implement on final contract */ function name() virtual external view returns (string memory tokenName); function symbol() virtual external view returns (string memory tokenSymbol); function decimals() virtual external view returns (uint8 tokenDecimals); /* * External Function Interface to implement on final contract */ function transfer(address to, uint256 amount) virtual external returns (bool success); function transferFrom(address from, address to, uint256 amount) virtual external returns (bool success); function approve(address spender, uint256 amount) virtual external returns (bool success); } // File: contracts/library/Ownable.sol pragma solidity 0.6.6; contract Ownable { address internal _owner; event OwnershipTransferred( address indexed currentOwner, address indexed newOwner ); constructor() internal { _owner = msg.sender; emit OwnershipTransferred(address(0), msg.sender); } modifier onlyOwner() { require( msg.sender == _owner, "Ownable : Function called by unauthorized user." ); _; } function owner() external view returns (address ownerAddress) { ownerAddress = _owner; } function transferOwnership(address newOwner) public onlyOwner returns (bool success) { require(newOwner != address(0), "Ownable/transferOwnership : cannot transfer ownership to zero address"); success = _transferOwnership(newOwner); } function renounceOwnership() external onlyOwner returns (bool success) { success = _transferOwnership(address(0)); } function _transferOwnership(address newOwner) internal returns (bool success) { emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; success = true; } } // File: contracts/erc20/ERC20Lockable.sol pragma solidity 0.6.6; abstract contract ERC20Lockable is ERC20, Ownable { struct LockInfo { uint256 amount; uint256 due; } mapping(address => LockInfo[]) internal _locks; mapping(address => uint256) internal _totalLocked; event Lock(address indexed from, uint256 amount, uint256 due); event Unlock(address indexed from, uint256 amount); modifier checkLock(address from, uint256 amount) { require(_balances[from] >= _totalLocked[from].add(amount), "ERC20Lockable/Cannot send more than unlocked amount"); _; } function _lock(address from, uint256 amount, uint256 due) internal returns (bool success) { require(due > now, "ERC20Lockable/lock : Cannot set due to past"); require( _balances[from] >= amount.add(_totalLocked[from]), "ERC20Lockable/lock : locked total should be smaller than balance" ); _totalLocked[from] = _totalLocked[from].add(amount); _locks[from].push(LockInfo(amount, due)); emit Lock(from, amount, due); success = true; } function _unlock(address from, uint256 index) internal returns (bool success) { LockInfo storage lock = _locks[from][index]; _totalLocked[from] = _totalLocked[from].sub(lock.amount); emit Unlock(from, lock.amount); _locks[from][index] = _locks[from][_locks[from].length - 1]; _locks[from].pop(); success = true; } function unlock(address from) external returns (bool success) { for(uint256 i = 0; i < _locks[from].length; i++){ if(_locks[from][i].due < now){ _unlock(from, i); } } success = true; } function releaseLock(address from) external onlyOwner returns (bool success) { for(uint256 i = 0; i < _locks[from].length; i++){ _unlock(from, i); } success = true; } function transferWithLockUp(address recipient, uint256 amount, uint256 due) external returns (bool success) { require( recipient != address(0), "ERC20Lockable/transferWithLockUp : Cannot send to zero address" ); _transfer(msg.sender, recipient, amount); _lock(recipient, amount, due); success = true; } function lockInfo(address locked, uint256 index) external view returns (uint256 amount, uint256 due) { LockInfo memory lock = _locks[locked][index]; amount = lock.amount; due = lock.due; } function totalLocked(address locked) external view returns(uint256 amount, uint256 length){ amount = _totalLocked[locked]; length = _locks[locked].length; } } // File: contracts/library/Pausable.sol pragma solidity 0.6.6; contract Pausable is Ownable { bool internal _paused; event Paused(); event Unpaused(); modifier whenPaused() { require(_paused, "Paused : This function can only be called when paused"); _; } modifier whenNotPaused() { require(!_paused, "Paused : This function can only be called when not paused"); _; } function pause() external onlyOwner whenNotPaused returns (bool success) { _paused = true; emit Paused(); success = true; } function unPause() external onlyOwner whenPaused returns (bool success) { _paused = false; emit Unpaused(); success = true; } function paused() external view returns (bool) { return _paused; } } // File: contracts/erc20/ERC20Burnable.sol pragma solidity 0.6.6; abstract contract ERC20Burnable is ERC20, Pausable { event Burn(address indexed burned, uint256 amount); function burn(uint256 amount) external whenNotPaused returns (bool success) { success = _burn(msg.sender, amount); emit Burn(msg.sender, amount); success = true; } function burnFrom(address burned, uint256 amount) external whenNotPaused returns (bool success) { _burn(burned, amount); emit Burn(burned, amount); success = _approve( burned, msg.sender, _allowances[burned][msg.sender].sub( amount, "ERC20Burnable/burnFrom : Cannot burn more than allowance" ) ); } } // File: contracts/erc20/ERC20Mintable.sol pragma solidity 0.6.6; abstract contract ERC20Mintable is ERC20, Pausable { event Mint(address indexed receiver, uint256 amount); event MintFinished(); bool internal _mintingFinished; ///@notice mint token ///@dev only owner can call this function function mint(address receiver, uint256 amount) external onlyOwner whenNotPaused returns (bool success) { require( receiver != address(0), "ERC20Mintable/mint : Should not mint to zero address" ); require( !_mintingFinished, "ERC20Mintable/mint : Cannot mint after finished" ); _mint(receiver, amount); emit Mint(receiver, amount); success = true; } ///@notice finish minting, cannot mint after calling this function ///@dev only owner can call this function function finishMint() external onlyOwner returns (bool success) { require( !_mintingFinished, "ERC20Mintable/finishMinting : Already finished" ); _mintingFinished = true; emit MintFinished(); return true; } function isFinished() external view returns(bool finished) { finished = _mintingFinished; } } // File: contracts/library/Freezable.sol pragma solidity 0.6.6; contract Freezable is Ownable { mapping(address => bool) private _frozen; event Freeze(address indexed target); event Unfreeze(address indexed target); modifier whenNotFrozen(address target) { require(!_frozen[target], "Freezable : target is frozen"); _; } function freeze(address target) external onlyOwner returns (bool success) { _frozen[target] = true; emit Freeze(target); success = true; } function unFreeze(address target) external onlyOwner returns (bool success) { _frozen[target] = false; emit Unfreeze(target); success = true; } function isFrozen(address target) external view returns (bool frozen) { return _frozen[target]; } } // File: contracts/Ontact Protocol.sol pragma solidity 0.6.6; contract CROS is ERC20Lockable, ERC20Burnable, ERC20Mintable, Freezable { string constant private _name = "ONTACT Protocol"; string constant private _symbol = "ONTP"; uint8 constant private _decimals = 18; uint256 constant private _initial_supply = 1_900_000_000; constructor() public Ownable() { _mint(msg.sender, _initial_supply * (10**uint256(_decimals))); } function transfer(address to, uint256 amount) override external whenNotFrozen(msg.sender) whenNotPaused checkLock(msg.sender, amount) returns (bool success) { require( to != address(0), "ONTP/transfer : Should not send to zero address" ); _transfer(msg.sender, to, amount); success = true; } function transferFrom(address from, address to, uint256 amount) override external whenNotFrozen(from) whenNotPaused checkLock(from, amount) returns (bool success) { require( to != address(0), "CROS/transferFrom : Should not send to zero address" ); _transfer(from, to, amount); _approve( from, msg.sender, _allowances[from][msg.sender].sub( amount, "CROS/transferFrom : Cannot send more than allowance" ) ); success = true; } function approve(address spender, uint256 amount) override external returns (bool success) { require( spender != address(0), "CROS/approve : Should not approve zero address" ); _approve(msg.sender, spender, amount); success = true; } function name() override external view returns (string memory tokenName) { tokenName = _name; } function symbol() override external view returns (string memory tokenSymbol) { tokenSymbol = _symbol; } function decimals() override external view returns (uint8 tokenDecimals) { tokenDecimals = _decimals; } }
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":"amount","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"burned","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Burn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"target","type":"address"}],"name":"Freeze","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"due","type":"uint256"}],"name":"Lock","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"receiver","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Mint","type":"event"},{"anonymous":false,"inputs":[],"name":"MintFinished","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"currentOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"target","type":"address"}],"name":"Unfreeze","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Unlock","type":"event"},{"anonymous":false,"inputs":[],"name":"Unpaused","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"remaining","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":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"burned","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnFrom","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"tokenDecimals","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"finishMint","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"name":"freeze","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"isFinished","outputs":[{"internalType":"bool","name":"finished","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"name":"isFrozen","outputs":[{"internalType":"bool","name":"frozen","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"locked","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"lockInfo","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"due","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"tokenName","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"ownerAddress","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pause","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"}],"name":"releaseLock","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"tokenSymbol","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"locked","type":"address"}],"name":"totalLocked","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"length","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"total","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":"success","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":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"due","type":"uint256"}],"name":"transferWithLockUp","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"name":"unFreeze","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unPause","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"}],"name":"unlock","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60806040523480156200001157600080fd5b5033600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3620000cd33601260ff16600a0a63713fb30002620000d460201b60201c565b506200028d565b6000620000f2826000546200020460201b620025791790919060201c565b6000819055506200015182600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546200020460201b620025791790919060201c565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b60008082840190508381101562000283576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b6135e4806200029d6000396000f3fe608060405234801561001057600080fd5b50600436106101c45760003560e01c806383cfab42116100f9578063d1c4691611610097578063e4cc18be11610071578063e4cc18be146109bf578063e5839836146109e1578063f2fde38b14610a3d578063f7b188a514610a99576101c4565b8063d1c469161461088c578063d8fb9337146108e8578063dd62ed3e14610947576101c4565b80638da5cb5b116100d35780638da5cb5b146106f057806395d89b411461073a578063a9059cbb146107bd578063b2520a7c14610823576101c4565b806383cfab42146106165780638456cb59146106725780638d1fdf2f14610694576101c4565b806340c10f191161016657806370a082311161014057806370a0823114610514578063715018a61461056c57806379cc67901461058e5780637b352962146105f4576101c4565b806340c10f191461044657806342966c68146104ac5780635c975abb146104f2576101c4565b806323b872dd116101a257806323b872dd146102d05780632f6c493c14610356578063313ce567146103b257806338b82092146103d6576101c4565b806306fdde03146101c9578063095ea7b31461024c57806318160ddd146102b2575b600080fd5b6101d1610abb565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102115780820151818401526020810190506101f6565b50505050905090810190601f16801561023e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102986004803603604081101561026257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610af8565b604051808215151515815260200191505060405180910390f35b6102ba610b95565b6040518082815260200191505060405180910390f35b61033c600480360360608110156102e657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610b9e565b604051808215151515815260200191505060405180910390f35b6103986004803603602081101561036c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610f06565b604051808215151515815260200191505060405180910390f35b6103ba610fde565b604051808260ff1660ff16815260200191505060405180910390f35b61042c600480360360608110156103ec57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190505050610fe7565b604051808215151515815260200191505060405180910390f35b6104926004803603604081101561045c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611091565b604051808215151515815260200191505060405180910390f35b6104d8600480360360208110156104c257600080fd5b81019080803590602001909291905050506112ee565b604051808215151515815260200191505060405180910390f35b6104fa6113b9565b604051808215151515815260200191505060405180910390f35b6105566004803603602081101561052a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506113d0565b6040518082815260200191505060405180910390f35b610574611419565b604051808215151515815260200191505060405180910390f35b6105da600480360360408110156105a457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506114d0565b604051808215151515815260200191505060405180910390f35b6105fc61164c565b604051808215151515815260200191505060405180910390f35b6106586004803603602081101561062c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611663565b604051808215151515815260200191505060405180910390f35b61067a6117af565b604051808215151515815260200191505060405180910390f35b6106d6600480360360208110156106aa57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061190b565b604051808215151515815260200191505060405180910390f35b6106f8611a57565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610742611a81565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610782578082015181840152602081019050610767565b50505050905090810190601f1680156107af5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610809600480360360408110156107d357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611abe565b604051808215151515815260200191505060405180910390f35b61086f6004803603604081101561083957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611d71565b604051808381526020018281526020019250505060405180910390f35b6108ce600480360360208110156108a257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611e0b565b604051808215151515815260200191505060405180910390f35b61092a600480360360208110156108fe57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611f25565b604051808381526020018281526020019250505060405180910390f35b6109a96004803603604081101561095d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611fb4565b6040518082815260200191505060405180910390f35b6109c761203b565b604051808215151515815260200191505060405180910390f35b610a23600480360360208110156109f757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612197565b604051808215151515815260200191505060405180910390f35b610a7f60048036036020811015610a5357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506121ed565b604051808215151515815260200191505060405180910390f35b610aa161232b565b604051808215151515815260200191505060405180910390f35b60606040518060400160405280600f81526020017f4f4e544143542050726f746f636f6c0000000000000000000000000000000000815250905090565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610b7f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e815260200180613436602e913960400191505060405180910390fd5b610b8a338484612486565b506001905092915050565b60008054905090565b600083600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610c61576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f467265657a61626c65203a207461726765742069732066726f7a656e0000000081525060200191505060405180910390fd5b600660009054906101000a900460ff1615610cc7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603981526020018061332e6039913960400191505060405180910390fd5b8483610d1b81600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461257990919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610db2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260338152602001806134d36033913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161415610e38576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260338152602001806133676033913960400191505060405180910390fd5b610e43878787612601565b50610ef78733610ef28860405180606001604052806033815260200161328f60339139600260008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127b79092919063ffffffff16565b612486565b50600193505050509392505050565b600080600090505b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050811015610fd45742600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208281548110610fa357fe5b9060005260206000209060020201600101541015610fc757610fc58382612877565b505b8080600101915050610f0e565b5060019050919050565b60006012905090565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141561106e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603e8152602001806131b8603e913960400191505060405180910390fd5b611079338585612601565b50611085848484612b47565b50600190509392505050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611139576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f815260200180613407602f913960400191505060405180910390fd5b600660009054906101000a900460ff161561119f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603981526020018061332e6039913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611225576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260348152602001806132fa6034913960400191505060405180910390fd5b600660019054906101000a900460ff161561128b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f8152602001806133d8602f913960400191505060405180910390fd5b6112958383612e13565b508273ffffffffffffffffffffffffffffffffffffffff167f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d4121396885836040518082815260200191505060405180910390a26001905092915050565b6000600660009054906101000a900460ff1615611356576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603981526020018061332e6039913960400191505060405180910390fd5b6113603383612f35565b90503373ffffffffffffffffffffffffffffffffffffffff167fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5836040518082815260200191505060405180910390a260019050919050565b6000600660009054906101000a900460ff16905090565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146114c1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f815260200180613407602f913960400191505060405180910390fd5b6114cb600061308b565b905090565b6000600660009054906101000a900460ff1615611538576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603981526020018061332e6039913960400191505060405180910390fd5b6115428383612f35565b508273ffffffffffffffffffffffffffffffffffffffff167fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5836040518082815260200191505060405180910390a2611644833361163f856040518060600160405280603881526020016132c260389139600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127b79092919063ffffffff16565b612486565b905092915050565b6000600660019054906101000a900460ff16905090565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461170b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f815260200180613407602f913960400191505060405180910390fd5b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167fca5069937e68fd197927055037f59d7c90bf75ac104e6e375539ef480c3ad6ee60405160405180910390a260019050919050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611857576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f815260200180613407602f913960400191505060405180910390fd5b600660009054906101000a900460ff16156118bd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603981526020018061332e6039913960400191505060405180910390fd5b6001600660006101000a81548160ff0219169083151502179055507f9e87fac88ff661f02d44f95383c817fece4bce600a3dab7a54406878b965e75260405160405180910390a16001905090565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146119b3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f815260200180613407602f913960400191505060405180910390fd5b6001600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167faf85b60d26151edd11443b704d424da6c43d0468f2235ebae3d1904dbc32304960405160405180910390a260019050919050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600481526020017f4f4e545000000000000000000000000000000000000000000000000000000000815250905090565b600033600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611b81576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f467265657a61626c65203a207461726765742069732066726f7a656e0000000081525060200191505060405180910390fd5b600660009054906101000a900460ff1615611be7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603981526020018061332e6039913960400191505060405180910390fd5b3383611c3b81600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461257990919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015611cd2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260338152602001806134d36033913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161415611d58576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f815260200180613506602f913960400191505060405180910390fd5b611d63338787612601565b506001935050505092915050565b600080611d7c61319d565b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208481548110611dc657fe5b90600052602060002090600202016040518060400160405290816000820154815260200160018201548152505090508060000151925080602001519150509250929050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611eb3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f815260200180613407602f913960400191505060405180910390fd5b60008090505b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050811015611f1b57611f0d8382612877565b508080600101915050611eb9565b5060019050919050565b600080600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549150600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490509050915091565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146120e3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f815260200180613407602f913960400191505060405180910390fd5b600660019054906101000a900460ff1615612149576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e8152602001806131f6602e913960400191505060405180910390fd5b6001600660016101000a81548160ff0219169083151502179055507fae5184fba832cb2b1f702aca6117b8d265eaf03ad33eb133f19dde0f5920fa0860405160405180910390a16001905090565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612295576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f815260200180613407602f913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561231b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252604581526020018061356a6045913960600191505060405180910390fd5b6123248261308b565b9050919050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146123d3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f815260200180613407602f913960400191505060405180910390fd5b600660009054906101000a900460ff16612438576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260358152602001806135356035913960400191505060405180910390fd5b6000600660006101000a81548160ff0219169083151502179055507fa45f47fdea8a1efdd9029a5691c7f759c32b7c698632b563573e155625d1693360405160405180910390a16001905090565b600081600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a3600190509392505050565b6000808284019050838110156125f7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600061266f826040518060600160405280603e815260200161339a603e9139600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127b79092919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061270482600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461257990919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b6000838311158290612864576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561282957808201518184015260208101905061280e565b50505050905090810190601f1680156128565780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b600080600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002083815481106128c457fe5b9060005260206000209060020201905061292a8160000154600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461315390919063ffffffff16565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff167f6381d9813cabeb57471b5a7e05078e64845ccdb563146a6911d536f24ce960f182600001546040518082815260200191505060405180910390a2600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490500381548110612a4e57fe5b9060005260206000209060020201600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208481548110612aa657fe5b90600052602060002090600202016000820154816000015560018201548160010155905050600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805480612b1357fe5b6001900381819060005260206000209060020201600080820160009055600182016000905550509055600191505092915050565b6000428211612ba1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180613264602b913960400191505060405180910390fd5b612bf3600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548461257990919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015612c8a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260408152602001806132246040913960400191505060405180910390fd5b612cdc83600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461257990919063ffffffff16565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060400160405280858152602001848152509080600181540180825580915050600190039060005260206000209060020201600090919091909150600082015181600001556020820151816001015550508373ffffffffffffffffffffffffffffffffffffffff167f49eaf4942f1237055eb4cfa5f31c9dfe50d5b4ade01e021f7de8be2fbbde557b8484604051808381526020018281526020019250505060405180910390a2600190509392505050565b6000612e2a8260005461257990919063ffffffff16565b600081905550612e8282600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461257990919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b6000612fa38260405180606001604052806039815260200161346460399139600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127b79092919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506130158260405180606001604052806036815260200161349d603691396000546127b79092919063ffffffff16565b600081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b60008173ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a381600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060019050919050565b600061319583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506127b7565b905092915050565b60405180604001604052806000815260200160008152509056fe45524332304c6f636b61626c652f7472616e73666572576974684c6f636b5570203a2043616e6e6f742073656e6420746f207a65726f206164647265737345524332304d696e7461626c652f66696e6973684d696e74696e67203a20416c72656164792066696e697368656445524332304c6f636b61626c652f6c6f636b203a206c6f636b656420746f74616c2073686f756c6420626520736d616c6c6572207468616e2062616c616e636545524332304c6f636b61626c652f6c6f636b203a2043616e6e6f74207365742064756520746f207061737443524f532f7472616e7366657246726f6d203a2043616e6e6f742073656e64206d6f7265207468616e20616c6c6f77616e636545524332304275726e61626c652f6275726e46726f6d203a2043616e6e6f74206275726e206d6f7265207468616e20616c6c6f77616e636545524332304d696e7461626c652f6d696e74203a2053686f756c64206e6f74206d696e7420746f207a65726f2061646472657373506175736564203a20546869732066756e6374696f6e2063616e206f6e6c792062652063616c6c6564207768656e206e6f742070617573656443524f532f7472616e7366657246726f6d203a2053686f756c64206e6f742073656e6420746f207a65726f206164647265737345524332302f7472616e73666572203a2063616e6e6f74207472616e73666572206d6f7265207468616e20746f6b656e206f776e65722062616c616e636545524332304d696e7461626c652f6d696e74203a2043616e6e6f74206d696e742061667465722066696e69736865644f776e61626c65203a2046756e6374696f6e2063616c6c656420627920756e617574686f72697a656420757365722e43524f532f617070726f7665203a2053686f756c64206e6f7420617070726f7665207a65726f206164647265737345524332304275726e61626c652f6275726e203a2043616e6e6f74206275726e206d6f7265207468616e207573657227732062616c616e636545524332304275726e61626c652f6275726e203a2043616e6e6f74206275726e206d6f7265207468616e20746f74616c537570706c7945524332304c6f636b61626c652f43616e6e6f742073656e64206d6f7265207468616e20756e6c6f636b656420616d6f756e744f4e54502f7472616e73666572203a2053686f756c64206e6f742073656e6420746f207a65726f2061646472657373506175736564203a20546869732066756e6374696f6e2063616e206f6e6c792062652063616c6c6564207768656e207061757365644f776e61626c652f7472616e736665724f776e657273686970203a2063616e6e6f74207472616e73666572206f776e65727368697020746f207a65726f2061646472657373a2646970667358221220afe7234a6441e75725e527cbf37b1de961cfdcd98bb86e3d5479550553bdb3e364736f6c63430006060033
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101c45760003560e01c806383cfab42116100f9578063d1c4691611610097578063e4cc18be11610071578063e4cc18be146109bf578063e5839836146109e1578063f2fde38b14610a3d578063f7b188a514610a99576101c4565b8063d1c469161461088c578063d8fb9337146108e8578063dd62ed3e14610947576101c4565b80638da5cb5b116100d35780638da5cb5b146106f057806395d89b411461073a578063a9059cbb146107bd578063b2520a7c14610823576101c4565b806383cfab42146106165780638456cb59146106725780638d1fdf2f14610694576101c4565b806340c10f191161016657806370a082311161014057806370a0823114610514578063715018a61461056c57806379cc67901461058e5780637b352962146105f4576101c4565b806340c10f191461044657806342966c68146104ac5780635c975abb146104f2576101c4565b806323b872dd116101a257806323b872dd146102d05780632f6c493c14610356578063313ce567146103b257806338b82092146103d6576101c4565b806306fdde03146101c9578063095ea7b31461024c57806318160ddd146102b2575b600080fd5b6101d1610abb565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102115780820151818401526020810190506101f6565b50505050905090810190601f16801561023e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102986004803603604081101561026257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610af8565b604051808215151515815260200191505060405180910390f35b6102ba610b95565b6040518082815260200191505060405180910390f35b61033c600480360360608110156102e657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610b9e565b604051808215151515815260200191505060405180910390f35b6103986004803603602081101561036c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610f06565b604051808215151515815260200191505060405180910390f35b6103ba610fde565b604051808260ff1660ff16815260200191505060405180910390f35b61042c600480360360608110156103ec57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190505050610fe7565b604051808215151515815260200191505060405180910390f35b6104926004803603604081101561045c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611091565b604051808215151515815260200191505060405180910390f35b6104d8600480360360208110156104c257600080fd5b81019080803590602001909291905050506112ee565b604051808215151515815260200191505060405180910390f35b6104fa6113b9565b604051808215151515815260200191505060405180910390f35b6105566004803603602081101561052a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506113d0565b6040518082815260200191505060405180910390f35b610574611419565b604051808215151515815260200191505060405180910390f35b6105da600480360360408110156105a457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506114d0565b604051808215151515815260200191505060405180910390f35b6105fc61164c565b604051808215151515815260200191505060405180910390f35b6106586004803603602081101561062c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611663565b604051808215151515815260200191505060405180910390f35b61067a6117af565b604051808215151515815260200191505060405180910390f35b6106d6600480360360208110156106aa57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061190b565b604051808215151515815260200191505060405180910390f35b6106f8611a57565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610742611a81565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610782578082015181840152602081019050610767565b50505050905090810190601f1680156107af5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610809600480360360408110156107d357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611abe565b604051808215151515815260200191505060405180910390f35b61086f6004803603604081101561083957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611d71565b604051808381526020018281526020019250505060405180910390f35b6108ce600480360360208110156108a257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611e0b565b604051808215151515815260200191505060405180910390f35b61092a600480360360208110156108fe57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611f25565b604051808381526020018281526020019250505060405180910390f35b6109a96004803603604081101561095d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611fb4565b6040518082815260200191505060405180910390f35b6109c761203b565b604051808215151515815260200191505060405180910390f35b610a23600480360360208110156109f757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612197565b604051808215151515815260200191505060405180910390f35b610a7f60048036036020811015610a5357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506121ed565b604051808215151515815260200191505060405180910390f35b610aa161232b565b604051808215151515815260200191505060405180910390f35b60606040518060400160405280600f81526020017f4f4e544143542050726f746f636f6c0000000000000000000000000000000000815250905090565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610b7f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e815260200180613436602e913960400191505060405180910390fd5b610b8a338484612486565b506001905092915050565b60008054905090565b600083600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610c61576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f467265657a61626c65203a207461726765742069732066726f7a656e0000000081525060200191505060405180910390fd5b600660009054906101000a900460ff1615610cc7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603981526020018061332e6039913960400191505060405180910390fd5b8483610d1b81600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461257990919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610db2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260338152602001806134d36033913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161415610e38576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260338152602001806133676033913960400191505060405180910390fd5b610e43878787612601565b50610ef78733610ef28860405180606001604052806033815260200161328f60339139600260008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127b79092919063ffffffff16565b612486565b50600193505050509392505050565b600080600090505b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050811015610fd45742600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208281548110610fa357fe5b9060005260206000209060020201600101541015610fc757610fc58382612877565b505b8080600101915050610f0e565b5060019050919050565b60006012905090565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141561106e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603e8152602001806131b8603e913960400191505060405180910390fd5b611079338585612601565b50611085848484612b47565b50600190509392505050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611139576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f815260200180613407602f913960400191505060405180910390fd5b600660009054906101000a900460ff161561119f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603981526020018061332e6039913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611225576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260348152602001806132fa6034913960400191505060405180910390fd5b600660019054906101000a900460ff161561128b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f8152602001806133d8602f913960400191505060405180910390fd5b6112958383612e13565b508273ffffffffffffffffffffffffffffffffffffffff167f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d4121396885836040518082815260200191505060405180910390a26001905092915050565b6000600660009054906101000a900460ff1615611356576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603981526020018061332e6039913960400191505060405180910390fd5b6113603383612f35565b90503373ffffffffffffffffffffffffffffffffffffffff167fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5836040518082815260200191505060405180910390a260019050919050565b6000600660009054906101000a900460ff16905090565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146114c1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f815260200180613407602f913960400191505060405180910390fd5b6114cb600061308b565b905090565b6000600660009054906101000a900460ff1615611538576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603981526020018061332e6039913960400191505060405180910390fd5b6115428383612f35565b508273ffffffffffffffffffffffffffffffffffffffff167fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5836040518082815260200191505060405180910390a2611644833361163f856040518060600160405280603881526020016132c260389139600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127b79092919063ffffffff16565b612486565b905092915050565b6000600660019054906101000a900460ff16905090565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461170b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f815260200180613407602f913960400191505060405180910390fd5b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167fca5069937e68fd197927055037f59d7c90bf75ac104e6e375539ef480c3ad6ee60405160405180910390a260019050919050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611857576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f815260200180613407602f913960400191505060405180910390fd5b600660009054906101000a900460ff16156118bd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603981526020018061332e6039913960400191505060405180910390fd5b6001600660006101000a81548160ff0219169083151502179055507f9e87fac88ff661f02d44f95383c817fece4bce600a3dab7a54406878b965e75260405160405180910390a16001905090565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146119b3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f815260200180613407602f913960400191505060405180910390fd5b6001600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167faf85b60d26151edd11443b704d424da6c43d0468f2235ebae3d1904dbc32304960405160405180910390a260019050919050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600481526020017f4f4e545000000000000000000000000000000000000000000000000000000000815250905090565b600033600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611b81576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f467265657a61626c65203a207461726765742069732066726f7a656e0000000081525060200191505060405180910390fd5b600660009054906101000a900460ff1615611be7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603981526020018061332e6039913960400191505060405180910390fd5b3383611c3b81600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461257990919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015611cd2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260338152602001806134d36033913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161415611d58576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f815260200180613506602f913960400191505060405180910390fd5b611d63338787612601565b506001935050505092915050565b600080611d7c61319d565b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208481548110611dc657fe5b90600052602060002090600202016040518060400160405290816000820154815260200160018201548152505090508060000151925080602001519150509250929050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611eb3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f815260200180613407602f913960400191505060405180910390fd5b60008090505b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050811015611f1b57611f0d8382612877565b508080600101915050611eb9565b5060019050919050565b600080600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549150600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490509050915091565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146120e3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f815260200180613407602f913960400191505060405180910390fd5b600660019054906101000a900460ff1615612149576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e8152602001806131f6602e913960400191505060405180910390fd5b6001600660016101000a81548160ff0219169083151502179055507fae5184fba832cb2b1f702aca6117b8d265eaf03ad33eb133f19dde0f5920fa0860405160405180910390a16001905090565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612295576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f815260200180613407602f913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561231b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252604581526020018061356a6045913960600191505060405180910390fd5b6123248261308b565b9050919050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146123d3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f815260200180613407602f913960400191505060405180910390fd5b600660009054906101000a900460ff16612438576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260358152602001806135356035913960400191505060405180910390fd5b6000600660006101000a81548160ff0219169083151502179055507fa45f47fdea8a1efdd9029a5691c7f759c32b7c698632b563573e155625d1693360405160405180910390a16001905090565b600081600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a3600190509392505050565b6000808284019050838110156125f7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600061266f826040518060600160405280603e815260200161339a603e9139600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127b79092919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061270482600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461257990919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b6000838311158290612864576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561282957808201518184015260208101905061280e565b50505050905090810190601f1680156128565780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b600080600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002083815481106128c457fe5b9060005260206000209060020201905061292a8160000154600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461315390919063ffffffff16565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff167f6381d9813cabeb57471b5a7e05078e64845ccdb563146a6911d536f24ce960f182600001546040518082815260200191505060405180910390a2600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490500381548110612a4e57fe5b9060005260206000209060020201600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208481548110612aa657fe5b90600052602060002090600202016000820154816000015560018201548160010155905050600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805480612b1357fe5b6001900381819060005260206000209060020201600080820160009055600182016000905550509055600191505092915050565b6000428211612ba1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180613264602b913960400191505060405180910390fd5b612bf3600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548461257990919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015612c8a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260408152602001806132246040913960400191505060405180910390fd5b612cdc83600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461257990919063ffffffff16565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060400160405280858152602001848152509080600181540180825580915050600190039060005260206000209060020201600090919091909150600082015181600001556020820151816001015550508373ffffffffffffffffffffffffffffffffffffffff167f49eaf4942f1237055eb4cfa5f31c9dfe50d5b4ade01e021f7de8be2fbbde557b8484604051808381526020018281526020019250505060405180910390a2600190509392505050565b6000612e2a8260005461257990919063ffffffff16565b600081905550612e8282600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461257990919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b6000612fa38260405180606001604052806039815260200161346460399139600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127b79092919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506130158260405180606001604052806036815260200161349d603691396000546127b79092919063ffffffff16565b600081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b60008173ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a381600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060019050919050565b600061319583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506127b7565b905092915050565b60405180604001604052806000815260200160008152509056fe45524332304c6f636b61626c652f7472616e73666572576974684c6f636b5570203a2043616e6e6f742073656e6420746f207a65726f206164647265737345524332304d696e7461626c652f66696e6973684d696e74696e67203a20416c72656164792066696e697368656445524332304c6f636b61626c652f6c6f636b203a206c6f636b656420746f74616c2073686f756c6420626520736d616c6c6572207468616e2062616c616e636545524332304c6f636b61626c652f6c6f636b203a2043616e6e6f74207365742064756520746f207061737443524f532f7472616e7366657246726f6d203a2043616e6e6f742073656e64206d6f7265207468616e20616c6c6f77616e636545524332304275726e61626c652f6275726e46726f6d203a2043616e6e6f74206275726e206d6f7265207468616e20616c6c6f77616e636545524332304d696e7461626c652f6d696e74203a2053686f756c64206e6f74206d696e7420746f207a65726f2061646472657373506175736564203a20546869732066756e6374696f6e2063616e206f6e6c792062652063616c6c6564207768656e206e6f742070617573656443524f532f7472616e7366657246726f6d203a2053686f756c64206e6f742073656e6420746f207a65726f206164647265737345524332302f7472616e73666572203a2063616e6e6f74207472616e73666572206d6f7265207468616e20746f6b656e206f776e65722062616c616e636545524332304d696e7461626c652f6d696e74203a2043616e6e6f74206d696e742061667465722066696e69736865644f776e61626c65203a2046756e6374696f6e2063616c6c656420627920756e617574686f72697a656420757365722e43524f532f617070726f7665203a2053686f756c64206e6f7420617070726f7665207a65726f206164647265737345524332304275726e61626c652f6275726e203a2043616e6e6f74206275726e206d6f7265207468616e207573657227732062616c616e636545524332304275726e61626c652f6275726e203a2043616e6e6f74206275726e206d6f7265207468616e20746f74616c537570706c7945524332304c6f636b61626c652f43616e6e6f742073656e64206d6f7265207468616e20756e6c6f636b656420616d6f756e744f4e54502f7472616e73666572203a2053686f756c64206e6f742073656e6420746f207a65726f2061646472657373506175736564203a20546869732066756e6374696f6e2063616e206f6e6c792062652063616c6c6564207768656e207061757365644f776e61626c652f7472616e736665724f776e657273686970203a2063616e6e6f74207472616e73666572206f776e65727368697020746f207a65726f2061646472657373a2646970667358221220afe7234a6441e75725e527cbf37b1de961cfdcd98bb86e3d5479550553bdb3e364736f6c63430006060033
Deployed Bytecode Sourcemap
17411:2221:0:-:0;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;17411:2221:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;9;2:12;19270:109:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;19270:109:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18930:332;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;18930:332:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;7777:100;;;:::i;:::-;;;;;;;;;;;;;;;;;;;18267:655;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;18267:655:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;11864:259;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;11864:259:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;19512:117;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;12382:401;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;12382:401:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;15336:510;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;15336:510:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;14304:227;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;14304:227:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;14024:80;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;7883:119;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;7883:119:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;9939:130;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;14539:457;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;14539:457:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;16295:105;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;16968:207;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;16968:207:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;13696:155;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;16790:170;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;16790:170:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;9532:102;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;19387:117;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;19387:117:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17842:417;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;17842:417:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;12791:252;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;12791:252:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;12131:243;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;12131:243:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;13051:179;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;13051:179:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;8010:183;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;8010:183:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;15973:314;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;17183:143;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;17183:143:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;9642:289;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;9642:289:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;13859:157;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;19270:109;19318:23;19366:5;;;;;;;;;;;;;;;;;19354:17;;19270:109;:::o;18930:332::-;19034:12;19105:1;19086:21;;:7;:21;;;;19064:117;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19192:37;19201:10;19213:7;19222:6;19192:8;:37::i;:::-;;19250:4;19240:14;;18930:332;;;;:::o;7777:100::-;7823:13;7857:12;;7849:20;;7777:100;:::o;18267:655::-;18470:12;18390:4;16714:7;:15;16722:6;16714:15;;;;;;;;;;;;;;;;;;;;;;;;;16713:16;16705:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13599:7:::1;;;;;;;;;;;13598:8;13590:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18438:4:::2;18444:6;10814:30;10837:6;10814:12;:18;10827:4;10814:18;;;;;;;;;;;;;;;;:22;;:30;;;;:::i;:::-;10795:9;:15;10805:4;10795:15;;;;;;;;;;;;;;;;:49;;10787:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18536:1:::3;18522:16;;:2;:16;;;;18500:117;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18628:27;18638:4;18644:2;18648:6;18628:9;:27::i;:::-;;18666:223;18689:4;18708:10;18733:145;18785:6;18733:145;;;;;;;;;;;;;;;;;:11;:17;18745:4;18733:17;;;;;;;;;;;;;;;:29;18751:10;18733:29;;;;;;;;;;;;;;;;:33;;:145;;;;;:::i;:::-;18666:8;:223::i;:::-;;18910:4;18900:14;;13679:1:::2;;18267:655:::0;;;;;;:::o;11864:259::-;11912:12;11941:9;11953:1;11941:13;;11937:154;11960:6;:12;11967:4;11960:12;;;;;;;;;;;;;;;:19;;;;11956:1;:23;11937:154;;;12025:3;12003:6;:12;12010:4;12003:12;;;;;;;;;;;;;;;12016:1;12003:15;;;;;;;;;;;;;;;;;;:19;;;:25;12000:80;;;12048:16;12056:4;12062:1;12048:7;:16::i;:::-;;12000:80;11981:3;;;;;;;11937:154;;;;12111:4;12101:14;;11864:259;;;:::o;19512:117::-;19564:19;17649:2;19596:25;;19512:117;:::o;12382:401::-;12494:12;12567:1;12546:23;;:9;:23;;;;12524:135;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12670:40;12680:10;12692:9;12703:6;12670:9;:40::i;:::-;;12721:29;12727:9;12738:6;12746:3;12721:5;:29::i;:::-;;12771:4;12761:14;;12382:401;;;;;:::o;15336:510::-;15462:12;9423:6;;;;;;;;;;;9409:20;;:10;:20;;;9387:117;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13599:7:::1;;;;;;;;;;;13598:8;13590:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15534:1:::2;15514:22;;:8;:22;;;;15492:124;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15650:16;;;;;;;;;;;15649:17;15627:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15752:23;15758:8;15768:6;15752:5;:23::i;:::-;;15796:8;15791:22;;;15806:6;15791:22;;;;;;;;;;;;;;;;;;15834:4;15824:14;;15336:510:::0;;;;:::o;14304:227::-;14393:12;13599:7;;;;;;;;;;;13598:8;13590:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14433:25:::1;14439:10;14451:6;14433:5;:25::i;:::-;14423:35;;14479:10;14474:24;;;14491:6;14474:24;;;;;;;;;;;;;;;;;;14519:4;14509:14;;14304:227:::0;;;:::o;14024:80::-;14065:4;14089:7;;;;;;;;;;;14082:14;;14024:80;:::o;7883:119::-;7940:15;7978:9;:16;7988:5;7978:16;;;;;;;;;;;;;;;;7968:26;;7883:119;;;:::o;9939:130::-;9996:12;9423:6;;;;;;;;;;;9409:20;;:10;:20;;;9387:117;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10031:30:::1;10058:1;10031:18;:30::i;:::-;10021:40;;9939:130:::0;:::o;14539:457::-;14648:12;13599:7;;;;;;;;;;;13598:8;13590:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14678:21:::1;14684:6;14692;14678:5;:21::i;:::-;;14720:6;14715:20;;;14728:6;14715:20;;;;;;;;;;;;;;;;;;14756:232;14779:6;14800:10;14825:152;14879:6;14825:152;;;;;;;;;;;;;;;;;:11;:19;14837:6;14825:19;;;;;;;;;;;;;;;:31;14845:10;14825:31;;;;;;;;;;;;;;;;:35;;:152;;;;;:::i;:::-;14756:8;:232::i;:::-;14746:242;;14539:457:::0;;;;:::o;16295:105::-;16339:13;16376:16;;;;;;;;;;;16365:27;;16295:105;:::o;16968:207::-;17057:12;9423:6;;;;;;;;;;;9409:20;;:10;:20;;;9387:117;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17105:5:::1;17087:7;:15;17095:6;17087:15;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;17135:6;17126:16;;;;;;;;;;;;17163:4;17153:14;;16968:207:::0;;;:::o;13696:155::-;13755:12;9423:6;;;;;;;;;;;9409:20;;:10;:20;;;9387:117;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13599:7:::1;;;;;;;;;;;13598:8;13590:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13790:4:::2;13780:7;;:14;;;;;;;;;;;;;;;;;;13810:8;;;;;;;;;;13839:4;13829:14;;13696:155:::0;:::o;16790:170::-;16850:12;9423:6;;;;;;;;;;;9409:20;;:10;:20;;;9387:117;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16893:4:::1;16875:7;:15;16883:6;16875:15;;;;;;;;;;;;;;;;:22;;;;;;;;;;;;;;;;;;16920:6;16913:14;;;;;;;;;;;;16948:4;16938:14;;16790:170:::0;;;:::o;9532:102::-;9572:20;9620:6;;;;;;;;;;;9605:21;;9532:102;:::o;19387:117::-;19437:25;19489:7;;;;;;;;;;;;;;;;;19475:21;;19387:117;:::o;17842:417::-;18039:12;17947:10;16714:7;:15;16722:6;16714:15;;;;;;;;;;;;;;;;;;;;;;;;;16713:16;16705:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13599:7:::1;;;;;;;;;;;13598:8;13590:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18001:10:::2;18013:6;10814:30;10837:6;10814:12;:18;10827:4;10814:18;;;;;;;;;;;;;;;;:22;;:30;;;;:::i;:::-;10795:9;:15;10805:4;10795:15;;;;;;;;;;;;;;;;:49;;10787:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18105:1:::3;18091:16;;:2;:16;;;;18069:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18193:33;18203:10;18215:2;18219:6;18193:9;:33::i;:::-;;18247:4;18237:14;;13679:1:::2;;17842:417:::0;;;;;:::o;12791:252::-;12890:14;12906:11;12935:20;;:::i;:::-;12958:6;:14;12965:6;12958:14;;;;;;;;;;;;;;;12973:5;12958:21;;;;;;;;;;;;;;;;;;12935:44;;;;;;;;;;;;;;;;;;;;;;;;;;;12999:4;:11;;;12990:20;;13027:4;:8;;;13021:14;;12791:252;;;;;;:::o;12131:243::-;12221:12;9423:6;;;;;;;;;;;9409:20;;:10;:20;;;9387:117;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12255:9:::1;12267:1:::0;12255:13:::1;;12251:91;12274:6;:12;12281:4;12274:12;;;;;;;;;;;;;;;:19;;;;12270:1;:23;12251:91;;;12314:16;12322:4;12328:1;12314:7;:16::i;:::-;;12295:3;;;;;;;12251:91;;;;12362:4;12352:14;;12131:243:::0;;;:::o;13051:179::-;13110:14;13126;13161:12;:20;13174:6;13161:20;;;;;;;;;;;;;;;;13152:29;;13201:6;:14;13208:6;13201:14;;;;;;;;;;;;;;;:21;;;;13192:30;;13051:179;;;:::o;8010:183::-;8111:17;8158:11;:18;8170:5;8158:18;;;;;;;;;;;;;;;:27;8177:7;8158:27;;;;;;;;;;;;;;;;8146:39;;8010:183;;;;:::o;15973:314::-;16050:12;9423:6;;;;;;;;;;;9409:20;;:10;:20;;;9387:117;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16103:16:::1;;;;;;;;;;;16102:17;16080:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16223:4;16204:16;;:23;;;;;;;;;;;;;;;;;;16243:14;;;;;;;;;;16275:4;16268:11;;15973:314:::0;:::o;17183:143::-;17267:11;17303:7;:15;17311:6;17303:15;;;;;;;;;;;;;;;;;;;;;;;;;17296:22;;17183:143;;;:::o;9642:289::-;9740:12;9423:6;;;;;;;;;;;9409:20;;:10;:20;;;9387:117;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9798:1:::1;9778:22;;:8;:22;;;;9770:104;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9895:28;9914:8;9895:18;:28::i;:::-;9885:38;;9642:289:::0;;;:::o;13859:157::-;13917:12;9423:6;;;;;;;;;;;9409:20;;:10;:20;;;9387:117;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13461:7:::1;;;;;;;;;;;13453:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13952:5:::2;13942:7;;:15;;;;;;;;;;;;;;;;;;13973:10;;;;;;;;;;14004:4;13994:14;;13859:157:::0;:::o;6640:249::-;6742:12;6802:6;6772:11;:18;6784:5;6772:18;;;;;;;;;;;;;;;:27;6791:7;6772:27;;;;;;;;;;;;;;;:36;;;;6840:7;6824:32;;6833:5;6824:32;;;6849:6;6824:32;;;;;;;;;;;;;;;;;;6877:4;6867:14;;6640:249;;;;;:::o;972:181::-;1030:7;1050:9;1066:1;1062;:5;1050:17;;1091:1;1086;:6;;1078:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1144:1;1137:8;;;972:181;;;;:::o;6230:402::-;6327:12;6375:130;6409:6;6375:130;;;;;;;;;;;;;;;;;:9;:15;6385:4;6375:15;;;;;;;;;;;;;;;;:19;;:130;;;;;:::i;:::-;6357:9;:15;6367:4;6357:15;;;;;;;;;;;;;;;:148;;;;6532:25;6550:6;6532:9;:13;6542:2;6532:13;;;;;;;;;;;;;;;;:17;;:25;;;;:::i;:::-;6516:9;:13;6526:2;6516:13;;;;;;;;;;;;;;;:41;;;;6588:2;6573:26;;6582:4;6573:26;;;6592:6;6573:26;;;;;;;;;;;;;;;;;;6620:4;6610:14;;6230:402;;;;;:::o;1901:224::-;2014:7;2052:1;2047;:6;;2055:12;2039:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;2039:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2079:9;2095:1;2091;:5;2079:17;;2116:1;2109:8;;;1901:224;;;;;:::o;11484:372::-;11548:12;11573:21;11597:6;:12;11604:4;11597:12;;;;;;;;;;;;;;;11610:5;11597:19;;;;;;;;;;;;;;;;;;11573:43;;11648:35;11671:4;:11;;;11648:12;:18;11661:4;11648:18;;;;;;;;;;;;;;;;:22;;:35;;;;:::i;:::-;11627:12;:18;11640:4;11627:18;;;;;;;;;;;;;;;:56;;;;11706:4;11699:25;;;11712:4;:11;;;11699:25;;;;;;;;;;;;;;;;;;11757:6;:12;11764:4;11757:12;;;;;;;;;;;;;;;11792:1;11770:6;:12;11777:4;11770:12;;;;;;;;;;;;;;;:19;;;;:23;11757:37;;;;;;;;;;;;;;;;;;11735:6;:12;11742:4;11735:12;;;;;;;;;;;;;;;11748:5;11735:19;;;;;;;;;;;;;;;;;;:59;;;;;;;;;;;;;;;;;;;11805:6;:12;11812:4;11805:12;;;;;;;;;;;;;;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11844:4;11834:14;;11484:372;;;;;:::o;10928:548::-;11022:12;11066:3;11060;:9;11052:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11169:30;11180:12;:18;11193:4;11180:18;;;;;;;;;;;;;;;;11169:6;:10;;:30;;;;:::i;:::-;11150:9;:15;11160:4;11150:15;;;;;;;;;;;;;;;;:49;;11128:163;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11323:30;11346:6;11323:12;:18;11336:4;11323:18;;;;;;;;;;;;;;;;:22;;:30;;;;:::i;:::-;11302:12;:18;11315:4;11302:18;;;;;;;;;;;;;;;:51;;;;11364:6;:12;11371:4;11364:12;;;;;;;;;;;;;;;11382:21;;;;;;;;11391:6;11382:21;;;;11399:3;11382:21;;;11364:40;;39:1:-1;33:3;27:10;23:18;57:10;52:3;45:23;79:10;72:17;;0:93;11364:40:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11425:4;11420:23;;;11431:6;11439:3;11420:23;;;;;;;;;;;;;;;;;;;;;;;;11464:4;11454:14;;10928:548;;;;;:::o;6897:309::-;6983:12;7028:24;7045:6;7028:12;;:16;;:24;;;;:::i;:::-;7013:12;:39;;;;7086:32;7111:6;7086:9;:20;7096:9;7086:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;7063:9;:20;7073:9;7063:20;;;;;;;;;;;;;;;:55;;;;7155:9;7134:39;;7151:1;7134:39;;;7166:6;7134:39;;;;;;;;;;;;;;;;;;7194:4;7184:14;;6897:309;;;;:::o;7214:490::-;7297:12;7347:127;7383:6;7347:127;;;;;;;;;;;;;;;;;:9;:17;7357:6;7347:17;;;;;;;;;;;;;;;;:21;;:127;;;;;:::i;:::-;7327:9;:17;7337:6;7327:17;;;;;;;;;;;;;;;:147;;;;7500:119;7531:6;7500:119;;;;;;;;;;;;;;;;;:12;;:16;;:119;;;;;:::i;:::-;7485:12;:134;;;;7660:1;7635:36;;7644:6;7635:36;;;7664:6;7635:36;;;;;;;;;;;;;;;;;;7692:4;7682:14;;7214:490;;;;:::o;10077:193::-;10141:12;10200:8;10171:38;;10192:6;;;;;;;;;;;10171:38;;;;;;;;;;;;10229:8;10220:6;;:17;;;;;;;;;;;;;;;;;;10258:4;10248:14;;10077:193;;;:::o;1428:136::-;1486:7;1513:43;1517:1;1520;1513:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1506:50;;1428:136;;;;:::o;17411:2221::-;;;;;;;;;;;;;;;;;;;:::o
Swarm Source
ipfs://afe7234a6441e75725e527cbf37b1de961cfdcd98bb86e3d5479550553bdb3e3
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.