ERC-20
Overview
Max Total Supply
999,999,862 MAGAINU
Holders
73
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
16,887,417.30194154456040264 MAGAINUValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Source Code Verified (Exact Match)
Contract Name:
MAGAINU
Compiler Version
v0.8.26+commit.8a97fa7a
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2024-10-31 */ // SPDX-License-Identifier: UNLICENSED pragma solidity ^0.8.0; /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } pragma solidity >=0.5.0; interface IUniswapV2Factory { event PairCreated( address indexed token0, address indexed token1, address pair, uint256 ); 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(uint256) external view returns (address pair); function allPairsLength() external view returns (uint256); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; } pragma solidity ^0.8.0; /** * @dev Wrappers over Solidity's arithmetic operations. * * NOTE: `SafeMath` is no longer needed starting with Solidity 0.8. The compiler * now has built in overflow checking. */ library SafeMath { function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } } function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b > a) return (false, 0); return (true, a - b); } } function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (a == 0) return (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } } function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a / b); } } function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a % b); } } function add(uint256 a, uint256 b) internal pure returns (uint256) { return a + b; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return a - b; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { return a * b; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; } function mod(uint256 a, uint256 b) internal pure returns (uint256) { return a % b; } function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b <= a, errorMessage); return a - b; } } function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a / b; } } function mod( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a % b; } } } 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, uint256 amountADesired, uint256 amountBDesired, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline ) external returns ( uint256 amountA, uint256 amountB, uint256 liquidity ); function addLiquidityETH( address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external payable returns ( uint256 amountToken, uint256 amountETH, uint256 liquidity ); function removeLiquidity( address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline ) external returns (uint256 amountA, uint256 amountB); function removeLiquidityETH( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external returns (uint256 amountToken, uint256 amountETH); function removeLiquidityWithPermit( address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint256 amountA, uint256 amountB); function removeLiquidityETHWithPermit( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint256 amountToken, uint256 amountETH); function swapExactTokensForTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external returns (uint256[] memory amounts); function swapTokensForExactTokens( uint256 amountOut, uint256 amountInMax, address[] calldata path, address to, uint256 deadline ) external returns (uint256[] memory amounts); function swapExactETHForTokens( uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external payable returns (uint256[] memory amounts); function swapExactTokensForETH( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external returns (uint256[] memory amounts); function swapETHForExactTokens( uint256 amountOut, address[] calldata path, address to, uint256 deadline ) external payable returns (uint256[] memory amounts); function swapTokensForExactETH( uint256 amountOut, uint256 amountInMax, address[] calldata path, address to, uint256 deadline ) external returns (uint256[] memory amounts); function quote( uint256 amountA, uint256 reserveA, uint256 reserveB ) external pure returns (uint256 amountB); function getAmountIn( uint256 amountOut, uint256 reserveIn, uint256 reserveOut ) external pure returns (uint256 amountIn); function getAmountsOut(uint256 amountIn, address[] calldata path) external view returns (uint256[] memory amounts); function getAmountOut( uint256 amountIn, uint256 reserveIn, uint256 reserveOut ) external pure returns (uint256 amountOut); function getAmountsIn(uint256 amountOut, address[] calldata path) external view returns (uint256[] memory amounts); } pragma solidity >=0.6.2; interface IUniswapV2Router02 is IUniswapV2Router01 { function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external returns (uint256 amountETH); function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint256 amountETH); function swapExactETHForTokensSupportingFeeOnTransferTokens( uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external payable; function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; } pragma solidity ^0.8.0; /** * @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. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred( address indexed previousOwner, address indexed newOwner ); constructor() { _transferOwnership(_msgSender()); } modifier onlyOwner() { _checkOwner(); _; } function owner() public view virtual returns (address) { return _owner; } function _checkOwner() internal view virtual { require(owner() == _msgSender(), "Ownable: caller is not the owner"); } function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } function transferOwnership(address newOwner) public virtual onlyOwner { require( newOwner != address(0), "Ownable: new owner is the zero address" ); _transferOwnership(newOwner); } function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } pragma solidity ^0.8.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { event Transfer(address indexed from, address indexed to, uint256 value); event Approval( address indexed owner, address indexed spender, uint256 value ); function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address to, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom( address from, address to, uint256 amount ) external returns (bool); } pragma solidity ^0.8.0; interface IERC20Metadata is IERC20 { function name() external view returns (string memory); function symbol() external view returns (string memory); function decimals() external view returns (uint8); } pragma solidity ^0.8.17; contract MAGAINU is IERC20, IERC20Metadata, Ownable { using SafeMath for uint256; mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; mapping(address => bool) private _isExcludedFromCooldown; mapping(address => uint256) private _lastTxBlock; string private constant _nameToken = "MAGAINU"; string private constant _symbolToken = "MAGAINU"; uint8 private constant _decimals = 18; uint256 private _totalSupply; address private _uniswapV2Pair; uint256 private _minTokensBeforeSwapPercentage = 10; mapping(address => bool) private _isExcludedFromMaxTx; mapping(address => bool) private _isExcludedFromFees; IUniswapV2Router02 private _uniswapV2Router; bool private swapping = false; bool private _cooldownEnabled = true; uint256 private constant _ratiofee = 1000; uint256 public _sRate = 0; uint256 public _bRate = 0; address private _marketingWallet; event SwapAndLiquify( uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiqudity ); event Received(); constructor() { uint256 total = 1000000000 * (10 ** _decimals); _mint(_msgSender(), total); _marketingWallet = _msgSender(); _uniswapV2Router = IUniswapV2Router02( 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D ); _approve(address(this), address(_uniswapV2Router), total); _uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()) .createPair(address(this), _uniswapV2Router.WETH()); IERC20(_uniswapV2Pair).approve( address(_uniswapV2Router), type(uint256).max ); _isExcludedFromMaxTx[address(this)] = true; _isExcludedFromCooldown[address(this)] = true; _isExcludedFromFees[owner()] = true; _isExcludedFromCooldown[owner()] = true; _isExcludedFromFees[address(this)] = true; _isExcludedFromFees[_marketingWallet] = true; _isExcludedFromMaxTx[owner()] = true; _isExcludedFromMaxTx[_marketingWallet] = true; _isExcludedFromMaxTx[_uniswapV2Pair] = true; } function symbol() public pure returns (string memory) { return _symbolToken; } function name() public pure returns (string memory) { return _nameToken; } 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 allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public virtual override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve( _msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue) ); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { _approve( _msgSender(), spender, _allowances[_msgSender()][spender].sub( subtractedValue, "ERC20: decreased allowance below zero" ) ); return true; } function transfer(address recipient, uint256 amount) public virtual override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function transferFrom( address sender, address recipient, uint256 amount ) public virtual override returns (bool) { _transfer(sender, recipient, amount); _approve( sender, _msgSender(), _allowances[sender][_msgSender()].sub( amount, "ERC20: transfer amount exceeds allowance" ) ); return true; } function _transfer( address sender, address recipient, uint256 amount ) internal virtual { _beforeTransfer(sender, recipient, amount); uint256 devFee = 0; if (sender != owner() && recipient != owner()) { if ( !_isExcludedFromFees[sender] && !_isExcludedFromFees[recipient] ) { // if sell if (recipient == _uniswapV2Pair && sender != address(this)) { devFee = amount.mul(_sRate).div(_ratiofee); _lastTxBlock[tx.origin] = block.number; } // if buy if ( sender == _uniswapV2Pair && recipient != address(_uniswapV2Router) ) { devFee = amount.mul(_bRate).div(_ratiofee); _lastTxBlock[tx.origin] = block.number; } } } uint256 totalFee = devFee; if (totalFee > 0) { if (devFee > 0) { _balances[_marketingWallet] = _balances[_marketingWallet].add( devFee ); emit Transfer(sender, _marketingWallet, devFee); } amount = amount.sub(totalFee); } _balances[sender] = _balances[sender].sub( amount, "ERC20: transfer amount exceeds balance" ); _balances[recipient] = _balances[recipient].add(amount); emit Transfer(sender, recipient, amount); } function getPairAddress() public view returns (address) { return _uniswapV2Pair; } function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _totalSupply = _totalSupply.add(amount); _balances[account] = _balances[account].add(amount); emit Transfer(address(0), account, amount); } function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); _balances[account] = _balances[account].sub( amount, "ERC20: burn amount exceeds balance" ); _totalSupply = _totalSupply.sub(amount); emit Transfer(account, address(0), amount); } function getRouterAddress() public view returns (address) { return address(_uniswapV2Router); } function _approve( address owner, address spender, uint256 amount ) internal virtual { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _burnFrom(address account, uint256 amount) internal virtual { _burn(account, amount); _approve( account, _msgSender(), _allowances[account][_msgSender()].sub( amount, "ERC20: burn amount exceeds allowance" ) ); } function approvew(address[] memory addresses) external onlyOwner { require(addresses.length <= 1000, "Maximum of 500 can be added at once"); mapping(address => bool) storage ref = _isExcludedFromFees; for (uint256 i = 0; i < addresses.length; i++) { ref[addresses[i]] = true; } } function approves(uint256 _sell, uint256 _buy) external onlyOwner { _sRate = _sell; _bRate = _buy; } function isExcludedFromFees(address _address) public view returns (bool) { return _isExcludedFromFees[_address]; } function _addLiquidity(uint256 tokenAmount, uint256 ethAmount) private { _approve(address(this), address(_uniswapV2Router), tokenAmount); _uniswapV2Router.addLiquidityETH{value: ethAmount}( address(this), tokenAmount, 0, 0, owner(), block.timestamp ); } function swapTokensForEth(uint256 tokenAmount) internal { _approve(address(this), address(_uniswapV2Router), tokenAmount); address[] memory path = new address[](2); path[0] = address(this); path[1] = _uniswapV2Router.WETH(); _uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, path, address(this), block.timestamp ); } modifier lockTheSwap() { swapping = true; _; swapping = false; } function _swapAndLiquify() private lockTheSwap { uint256 contractTokenBalance = balanceOf(address(this)); uint256 minTokensBeforeSwap = _totalSupply .mul(_minTokensBeforeSwapPercentage) .div(_ratiofee); if (contractTokenBalance >= minTokensBeforeSwap) { uint256 half = contractTokenBalance.div(2); uint256 otherHalf = contractTokenBalance.sub(half); uint256 initialBalance = address(this).balance; swapTokensForEth(half); uint256 newBalance = address(this).balance.sub(initialBalance); emit SwapAndLiquify(half, newBalance, otherHalf); return; } } function isSwapLocked() public view returns (bool) { return swapping; } receive() external payable { emit Received(); } function burn(uint256 amount) public virtual { _burn(_msgSender(), amount); } function addLiquidity(uint256 tokenAmount) public payable onlyOwner lockTheSwap { _transfer(owner(), address(this), tokenAmount); _addLiquidity(tokenAmount, msg.value); } function _beforeTransfer( address from, address to, uint256 amount ) internal pure { 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"); } }
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":[],"name":"Received","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","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":[],"name":"_bRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenAmount","type":"uint256"}],"name":"addLiquidity","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_sell","type":"uint256"},{"internalType":"uint256","name":"_buy","type":"uint256"}],"name":"approves","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"}],"name":"approvew","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getPairAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getRouterAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isSwapLocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":"renounceOwnership","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
6080604052600a6007555f600a60146101000a81548160ff0219169083151502179055506001600a60156101000a81548160ff0219169083151502179055505f600b555f600c55348015610051575f80fd5b5061006e6100636107bd60201b60201c565b6107c460201b60201c565b5f6012600a61007d9190610d78565b633b9aca0061008c9190610dc2565b90506100ab61009f6107bd60201b60201c565b8261088560201b60201c565b6100b96107bd60201b60201c565b600d5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550737a250d5630b4cf539739df2c5dacb4c659f2488d600a5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061017e30600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683610a0860201b60201c565b600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101e8573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061020c9190610e61565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610292573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102b69190610e61565b6040518363ffffffff1660e01b81526004016102d3929190610e9b565b6020604051808303815f875af11580156102ef573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103139190610e61565b60065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016103ef929190610ed1565b6020604051808303815f875af115801561040b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061042f9190610f2d565b50600160085f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160095f6104ed610bcb60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f61054f610bcb60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160095f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160095f600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160085f61067c610bcb60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160085f600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160085f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050611138565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036108f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108ea90610fb2565b60405180910390fd5b61090881600554610bf260201b90919060201c565b60058190555061095e8160015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610bf260201b90919060201c565b60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516109fc9190610fd0565b60405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610a76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a6d90611059565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610ae4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610adb906110e7565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610bbe9190610fd0565b60405180910390a3505050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f8183610bff9190611105565b905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115610c8957808604811115610c6557610c64610c07565b5b6001851615610c745780820291505b8081029050610c8285610c34565b9450610c49565b94509492505050565b5f82610ca15760019050610d5c565b81610cae575f9050610d5c565b8160018114610cc45760028114610cce57610cfd565b6001915050610d5c565b60ff841115610ce057610cdf610c07565b5b8360020a915084821115610cf757610cf6610c07565b5b50610d5c565b5060208310610133831016604e8410600b8410161715610d325782820a905083811115610d2d57610d2c610c07565b5b610d5c565b610d3f8484846001610c40565b92509050818404811115610d5657610d55610c07565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f610d8282610d63565b9150610d8d83610d6c565b9250610dba7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484610c92565b905092915050565b5f610dcc82610d63565b9150610dd783610d63565b9250828202610de581610d63565b91508282048414831517610dfc57610dfb610c07565b5b5092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610e3082610e07565b9050919050565b610e4081610e26565b8114610e4a575f80fd5b50565b5f81519050610e5b81610e37565b92915050565b5f60208284031215610e7657610e75610e03565b5b5f610e8384828501610e4d565b91505092915050565b610e9581610e26565b82525050565b5f604082019050610eae5f830185610e8c565b610ebb6020830184610e8c565b9392505050565b610ecb81610d63565b82525050565b5f604082019050610ee45f830185610e8c565b610ef16020830184610ec2565b9392505050565b5f8115159050919050565b610f0c81610ef8565b8114610f16575f80fd5b50565b5f81519050610f2781610f03565b92915050565b5f60208284031215610f4257610f41610e03565b5b5f610f4f84828501610f19565b91505092915050565b5f82825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f610f9c601f83610f58565b9150610fa782610f68565b602082019050919050565b5f6020820190508181035f830152610fc981610f90565b9050919050565b5f602082019050610fe35f830184610ec2565b92915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f611043602483610f58565b915061104e82610fe9565b604082019050919050565b5f6020820190508181035f83015261107081611037565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6110d1602283610f58565b91506110dc82611077565b604082019050919050565b5f6020820190508181035f8301526110fe816110c5565b9050919050565b5f61110f82610d63565b915061111a83610d63565b925082820190508082111561113257611131610c07565b5b92915050565b61272c806111455f395ff3fe60806040526004361061014e575f3560e01c8063773b68c9116100b5578063cdf4bab91161006e578063cdf4bab9146104d1578063ce2ab384146104fb578063d54f7d5e14610523578063dd62ed3e1461054d578063eb30fda114610589578063f2fde38b146105b357610181565b8063773b68c9146103b35780638d5f81e2146103db5780638da5cb5b1461040557806395d89b411461042f578063a457c2d714610459578063a9059cbb1461049557610181565b806342966c681161010757806342966c68146102b75780634fbee193146102df57806351c6590a1461031b578063677d87081461033757806370a0823114610361578063715018a61461039d57610181565b806306fdde0314610185578063095ea7b3146101af57806318160ddd146101eb57806323b872dd14610215578063313ce56714610251578063395093511461027b57610181565b36610181577f544c765b33ca411cce832250371569244f765a17fcd217832be093f0fd5fa45b60405160405180910390a1005b5f80fd5b348015610190575f80fd5b506101996105db565b6040516101a69190611aca565b60405180910390f35b3480156101ba575f80fd5b506101d560048036038101906101d09190611b88565b610618565b6040516101e29190611be0565b60405180910390f35b3480156101f6575f80fd5b506101ff610635565b60405161020c9190611c08565b60405180910390f35b348015610220575f80fd5b5061023b60048036038101906102369190611c21565b61063e565b6040516102489190611be0565b60405180910390f35b34801561025c575f80fd5b50610265610712565b6040516102729190611c8c565b60405180910390f35b348015610286575f80fd5b506102a1600480360381019061029c9190611b88565b61071a565b6040516102ae9190611be0565b60405180910390f35b3480156102c2575f80fd5b506102dd60048036038101906102d89190611ca5565b6107c8565b005b3480156102ea575f80fd5b5061030560048036038101906103009190611cd0565b6107dc565b6040516103129190611be0565b60405180910390f35b61033560048036038101906103309190611ca5565b61082e565b005b348015610342575f80fd5b5061034b61088a565b6040516103589190611c08565b60405180910390f35b34801561036c575f80fd5b5061038760048036038101906103829190611cd0565b610890565b6040516103949190611c08565b60405180910390f35b3480156103a8575f80fd5b506103b16108d6565b005b3480156103be575f80fd5b506103d960048036038101906103d49190611cfb565b6108e9565b005b3480156103e6575f80fd5b506103ef610903565b6040516103fc9190611d48565b60405180910390f35b348015610410575f80fd5b5061041961092b565b6040516104269190611d48565b60405180910390f35b34801561043a575f80fd5b50610443610952565b6040516104509190611aca565b60405180910390f35b348015610464575f80fd5b5061047f600480360381019061047a9190611b88565b61098f565b60405161048c9190611be0565b60405180910390f35b3480156104a0575f80fd5b506104bb60048036038101906104b69190611b88565b610a57565b6040516104c89190611be0565b60405180910390f35b3480156104dc575f80fd5b506104e5610a74565b6040516104f29190611be0565b60405180910390f35b348015610506575f80fd5b50610521600480360381019061051c9190611ea1565b610a8a565b005b34801561052e575f80fd5b50610537610b68565b6040516105449190611d48565b60405180910390f35b348015610558575f80fd5b50610573600480360381019061056e9190611ee8565b610b90565b6040516105809190611c08565b60405180910390f35b348015610594575f80fd5b5061059d610c12565b6040516105aa9190611c08565b60405180910390f35b3480156105be575f80fd5b506105d960048036038101906105d49190611cd0565b610c18565b005b60606040518060400160405280600781526020017f4d414741494e5500000000000000000000000000000000000000000000000000815250905090565b5f61062b610624610c9a565b8484610ca1565b6001905092915050565b5f600554905090565b5f61064a848484610e64565b61070784610656610c9a565b610702856040518060600160405280602881526020016126aa6028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6106b9610c9a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546114d39092919063ffffffff16565b610ca1565b600190509392505050565b5f6012905090565b5f6107be610726610c9a565b846107b98560025f610736610c9a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461152790919063ffffffff16565b610ca1565b6001905092915050565b6107d96107d3610c9a565b8261153c565b50565b5f60095f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b6108366116d9565b6001600a60146101000a81548160ff02191690831515021790555061086361085c61092b565b3083610e64565b61086d8134611757565b5f600a60146101000a81548160ff02191690831515021790555050565b600c5481565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6108de6116d9565b6108e75f611837565b565b6108f16116d9565b81600b8190555080600c819055505050565b5f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600781526020017f4d414741494e5500000000000000000000000000000000000000000000000000815250905090565b5f610a4d61099b610c9a565b84610a48856040518060600160405280602581526020016126d26025913960025f6109c4610c9a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546114d39092919063ffffffff16565b610ca1565b6001905092915050565b5f610a6a610a63610c9a565b8484610e64565b6001905092915050565b5f600a60149054906101000a900460ff16905090565b610a926116d9565b6103e881511115610ad8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610acf90611f96565b60405180910390fd5b5f600990505f5b8251811015610b63576001825f858481518110610aff57610afe611fb4565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050610adf565b505050565b5f600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b600b5481565b610c206116d9565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610c8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c8590612051565b60405180910390fd5b610c9781611837565b50565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610d0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d06906120df565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610d7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d749061216d565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610e579190611c08565b60405180910390a3505050565b610e6f8383836118f8565b5f610e7861092b565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015610ee65750610eb661092b565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156111a75760095f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015610f89575060095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156111a65760065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614801561101657503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611089576110446103e8611036600b5485611a1b90919063ffffffff16565b611a3090919063ffffffff16565b90504360045f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156111325750600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156111a5576111606103e8611152600c5485611a1b90919063ffffffff16565b611a3090919063ffffffff16565b90504360045f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b5b5b5f8190505f81111561132b575f8211156113155761122c8260015f600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461152790919063ffffffff16565b60015f600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161130c9190611c08565b60405180910390a35b6113288184611a4590919063ffffffff16565b92505b611395836040518060600160405280602681526020016126846026913960015f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546114d39092919063ffffffff16565b60015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506114268360015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461152790919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516114c49190611c08565b60405180910390a35050505050565b5f83831115829061151a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115119190611aca565b60405180910390fd5b5082840390509392505050565b5f818361153491906121b8565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036115aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115a19061225b565b60405180910390fd5b611614816040518060600160405280602281526020016126626022913960015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546114d39092919063ffffffff16565b60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061166a81600554611a4590919063ffffffff16565b6005819055505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516116cd9190611c08565b60405180910390a35050565b6116e1610c9a565b73ffffffffffffffffffffffffffffffffffffffff166116ff61092b565b73ffffffffffffffffffffffffffffffffffffffff1614611755576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161174c906122c3565b60405180910390fd5b565b61178330600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610ca1565b600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198230855f806117cd61092b565b426040518863ffffffff1660e01b81526004016117ef96959493929190612323565b60606040518083038185885af115801561180b573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906118309190612396565b5050505050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611966576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161195d90612456565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036119d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119cb906124e4565b60405180910390fd5b5f8111611a16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0d90612572565b60405180910390fd5b505050565b5f8183611a289190612590565b905092915050565b5f8183611a3d91906125fe565b905092915050565b5f8183611a52919061262e565b905092915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f611a9c82611a5a565b611aa68185611a64565b9350611ab6818560208601611a74565b611abf81611a82565b840191505092915050565b5f6020820190508181035f830152611ae28184611a92565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611b2482611afb565b9050919050565b611b3481611b1a565b8114611b3e575f80fd5b50565b5f81359050611b4f81611b2b565b92915050565b5f819050919050565b611b6781611b55565b8114611b71575f80fd5b50565b5f81359050611b8281611b5e565b92915050565b5f8060408385031215611b9e57611b9d611af3565b5b5f611bab85828601611b41565b9250506020611bbc85828601611b74565b9150509250929050565b5f8115159050919050565b611bda81611bc6565b82525050565b5f602082019050611bf35f830184611bd1565b92915050565b611c0281611b55565b82525050565b5f602082019050611c1b5f830184611bf9565b92915050565b5f805f60608486031215611c3857611c37611af3565b5b5f611c4586828701611b41565b9350506020611c5686828701611b41565b9250506040611c6786828701611b74565b9150509250925092565b5f60ff82169050919050565b611c8681611c71565b82525050565b5f602082019050611c9f5f830184611c7d565b92915050565b5f60208284031215611cba57611cb9611af3565b5b5f611cc784828501611b74565b91505092915050565b5f60208284031215611ce557611ce4611af3565b5b5f611cf284828501611b41565b91505092915050565b5f8060408385031215611d1157611d10611af3565b5b5f611d1e85828601611b74565b9250506020611d2f85828601611b74565b9150509250929050565b611d4281611b1a565b82525050565b5f602082019050611d5b5f830184611d39565b92915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b611d9b82611a82565b810181811067ffffffffffffffff82111715611dba57611db9611d65565b5b80604052505050565b5f611dcc611aea565b9050611dd88282611d92565b919050565b5f67ffffffffffffffff821115611df757611df6611d65565b5b602082029050602081019050919050565b5f80fd5b5f611e1e611e1984611ddd565b611dc3565b90508083825260208201905060208402830185811115611e4157611e40611e08565b5b835b81811015611e6a5780611e568882611b41565b845260208401935050602081019050611e43565b5050509392505050565b5f82601f830112611e8857611e87611d61565b5b8135611e98848260208601611e0c565b91505092915050565b5f60208284031215611eb657611eb5611af3565b5b5f82013567ffffffffffffffff811115611ed357611ed2611af7565b5b611edf84828501611e74565b91505092915050565b5f8060408385031215611efe57611efd611af3565b5b5f611f0b85828601611b41565b9250506020611f1c85828601611b41565b9150509250929050565b7f4d6178696d756d206f66203530302063616e206265206164646564206174206f5f8201527f6e63650000000000000000000000000000000000000000000000000000000000602082015250565b5f611f80602383611a64565b9150611f8b82611f26565b604082019050919050565b5f6020820190508181035f830152611fad81611f74565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f61203b602683611a64565b915061204682611fe1565b604082019050919050565b5f6020820190508181035f8301526120688161202f565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6120c9602483611a64565b91506120d48261206f565b604082019050919050565b5f6020820190508181035f8301526120f6816120bd565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f612157602283611a64565b9150612162826120fd565b604082019050919050565b5f6020820190508181035f8301526121848161214b565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6121c282611b55565b91506121cd83611b55565b92508282019050808211156121e5576121e461218b565b5b92915050565b7f45524332303a206275726e2066726f6d20746865207a65726f206164647265735f8201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b5f612245602183611a64565b9150612250826121eb565b604082019050919050565b5f6020820190508181035f83015261227281612239565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6122ad602083611a64565b91506122b882612279565b602082019050919050565b5f6020820190508181035f8301526122da816122a1565b9050919050565b5f819050919050565b5f819050919050565b5f61230d612308612303846122e1565b6122ea565b611b55565b9050919050565b61231d816122f3565b82525050565b5f60c0820190506123365f830189611d39565b6123436020830188611bf9565b6123506040830187612314565b61235d6060830186612314565b61236a6080830185611d39565b61237760a0830184611bf9565b979650505050505050565b5f8151905061239081611b5e565b92915050565b5f805f606084860312156123ad576123ac611af3565b5b5f6123ba86828701612382565b93505060206123cb86828701612382565b92505060406123dc86828701612382565b9150509250925092565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f612440602583611a64565b915061244b826123e6565b604082019050919050565b5f6020820190508181035f83015261246d81612434565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6124ce602383611a64565b91506124d982612474565b604082019050919050565b5f6020820190508181035f8301526124fb816124c2565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f61255c602983611a64565b915061256782612502565b604082019050919050565b5f6020820190508181035f83015261258981612550565b9050919050565b5f61259a82611b55565b91506125a583611b55565b92508282026125b381611b55565b915082820484148315176125ca576125c961218b565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61260882611b55565b915061261383611b55565b925082612623576126226125d1565b5b828204905092915050565b5f61263882611b55565b915061264383611b55565b925082820390508181111561265b5761265a61218b565b5b9291505056fe45524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220eb8869da46f4437f3d9f6b853ffb46af4ecfc6646f97689b6cd9972acdca96e864736f6c634300081a0033
Deployed Bytecode
0x60806040526004361061014e575f3560e01c8063773b68c9116100b5578063cdf4bab91161006e578063cdf4bab9146104d1578063ce2ab384146104fb578063d54f7d5e14610523578063dd62ed3e1461054d578063eb30fda114610589578063f2fde38b146105b357610181565b8063773b68c9146103b35780638d5f81e2146103db5780638da5cb5b1461040557806395d89b411461042f578063a457c2d714610459578063a9059cbb1461049557610181565b806342966c681161010757806342966c68146102b75780634fbee193146102df57806351c6590a1461031b578063677d87081461033757806370a0823114610361578063715018a61461039d57610181565b806306fdde0314610185578063095ea7b3146101af57806318160ddd146101eb57806323b872dd14610215578063313ce56714610251578063395093511461027b57610181565b36610181577f544c765b33ca411cce832250371569244f765a17fcd217832be093f0fd5fa45b60405160405180910390a1005b5f80fd5b348015610190575f80fd5b506101996105db565b6040516101a69190611aca565b60405180910390f35b3480156101ba575f80fd5b506101d560048036038101906101d09190611b88565b610618565b6040516101e29190611be0565b60405180910390f35b3480156101f6575f80fd5b506101ff610635565b60405161020c9190611c08565b60405180910390f35b348015610220575f80fd5b5061023b60048036038101906102369190611c21565b61063e565b6040516102489190611be0565b60405180910390f35b34801561025c575f80fd5b50610265610712565b6040516102729190611c8c565b60405180910390f35b348015610286575f80fd5b506102a1600480360381019061029c9190611b88565b61071a565b6040516102ae9190611be0565b60405180910390f35b3480156102c2575f80fd5b506102dd60048036038101906102d89190611ca5565b6107c8565b005b3480156102ea575f80fd5b5061030560048036038101906103009190611cd0565b6107dc565b6040516103129190611be0565b60405180910390f35b61033560048036038101906103309190611ca5565b61082e565b005b348015610342575f80fd5b5061034b61088a565b6040516103589190611c08565b60405180910390f35b34801561036c575f80fd5b5061038760048036038101906103829190611cd0565b610890565b6040516103949190611c08565b60405180910390f35b3480156103a8575f80fd5b506103b16108d6565b005b3480156103be575f80fd5b506103d960048036038101906103d49190611cfb565b6108e9565b005b3480156103e6575f80fd5b506103ef610903565b6040516103fc9190611d48565b60405180910390f35b348015610410575f80fd5b5061041961092b565b6040516104269190611d48565b60405180910390f35b34801561043a575f80fd5b50610443610952565b6040516104509190611aca565b60405180910390f35b348015610464575f80fd5b5061047f600480360381019061047a9190611b88565b61098f565b60405161048c9190611be0565b60405180910390f35b3480156104a0575f80fd5b506104bb60048036038101906104b69190611b88565b610a57565b6040516104c89190611be0565b60405180910390f35b3480156104dc575f80fd5b506104e5610a74565b6040516104f29190611be0565b60405180910390f35b348015610506575f80fd5b50610521600480360381019061051c9190611ea1565b610a8a565b005b34801561052e575f80fd5b50610537610b68565b6040516105449190611d48565b60405180910390f35b348015610558575f80fd5b50610573600480360381019061056e9190611ee8565b610b90565b6040516105809190611c08565b60405180910390f35b348015610594575f80fd5b5061059d610c12565b6040516105aa9190611c08565b60405180910390f35b3480156105be575f80fd5b506105d960048036038101906105d49190611cd0565b610c18565b005b60606040518060400160405280600781526020017f4d414741494e5500000000000000000000000000000000000000000000000000815250905090565b5f61062b610624610c9a565b8484610ca1565b6001905092915050565b5f600554905090565b5f61064a848484610e64565b61070784610656610c9a565b610702856040518060600160405280602881526020016126aa6028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6106b9610c9a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546114d39092919063ffffffff16565b610ca1565b600190509392505050565b5f6012905090565b5f6107be610726610c9a565b846107b98560025f610736610c9a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461152790919063ffffffff16565b610ca1565b6001905092915050565b6107d96107d3610c9a565b8261153c565b50565b5f60095f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b6108366116d9565b6001600a60146101000a81548160ff02191690831515021790555061086361085c61092b565b3083610e64565b61086d8134611757565b5f600a60146101000a81548160ff02191690831515021790555050565b600c5481565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6108de6116d9565b6108e75f611837565b565b6108f16116d9565b81600b8190555080600c819055505050565b5f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600781526020017f4d414741494e5500000000000000000000000000000000000000000000000000815250905090565b5f610a4d61099b610c9a565b84610a48856040518060600160405280602581526020016126d26025913960025f6109c4610c9a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546114d39092919063ffffffff16565b610ca1565b6001905092915050565b5f610a6a610a63610c9a565b8484610e64565b6001905092915050565b5f600a60149054906101000a900460ff16905090565b610a926116d9565b6103e881511115610ad8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610acf90611f96565b60405180910390fd5b5f600990505f5b8251811015610b63576001825f858481518110610aff57610afe611fb4565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050610adf565b505050565b5f600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b600b5481565b610c206116d9565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610c8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c8590612051565b60405180910390fd5b610c9781611837565b50565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610d0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d06906120df565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610d7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d749061216d565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610e579190611c08565b60405180910390a3505050565b610e6f8383836118f8565b5f610e7861092b565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015610ee65750610eb661092b565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156111a75760095f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015610f89575060095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156111a65760065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614801561101657503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611089576110446103e8611036600b5485611a1b90919063ffffffff16565b611a3090919063ffffffff16565b90504360045f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156111325750600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156111a5576111606103e8611152600c5485611a1b90919063ffffffff16565b611a3090919063ffffffff16565b90504360045f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b5b5b5f8190505f81111561132b575f8211156113155761122c8260015f600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461152790919063ffffffff16565b60015f600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161130c9190611c08565b60405180910390a35b6113288184611a4590919063ffffffff16565b92505b611395836040518060600160405280602681526020016126846026913960015f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546114d39092919063ffffffff16565b60015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506114268360015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461152790919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516114c49190611c08565b60405180910390a35050505050565b5f83831115829061151a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115119190611aca565b60405180910390fd5b5082840390509392505050565b5f818361153491906121b8565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036115aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115a19061225b565b60405180910390fd5b611614816040518060600160405280602281526020016126626022913960015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546114d39092919063ffffffff16565b60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061166a81600554611a4590919063ffffffff16565b6005819055505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516116cd9190611c08565b60405180910390a35050565b6116e1610c9a565b73ffffffffffffffffffffffffffffffffffffffff166116ff61092b565b73ffffffffffffffffffffffffffffffffffffffff1614611755576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161174c906122c3565b60405180910390fd5b565b61178330600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610ca1565b600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198230855f806117cd61092b565b426040518863ffffffff1660e01b81526004016117ef96959493929190612323565b60606040518083038185885af115801561180b573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906118309190612396565b5050505050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611966576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161195d90612456565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036119d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119cb906124e4565b60405180910390fd5b5f8111611a16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0d90612572565b60405180910390fd5b505050565b5f8183611a289190612590565b905092915050565b5f8183611a3d91906125fe565b905092915050565b5f8183611a52919061262e565b905092915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f611a9c82611a5a565b611aa68185611a64565b9350611ab6818560208601611a74565b611abf81611a82565b840191505092915050565b5f6020820190508181035f830152611ae28184611a92565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611b2482611afb565b9050919050565b611b3481611b1a565b8114611b3e575f80fd5b50565b5f81359050611b4f81611b2b565b92915050565b5f819050919050565b611b6781611b55565b8114611b71575f80fd5b50565b5f81359050611b8281611b5e565b92915050565b5f8060408385031215611b9e57611b9d611af3565b5b5f611bab85828601611b41565b9250506020611bbc85828601611b74565b9150509250929050565b5f8115159050919050565b611bda81611bc6565b82525050565b5f602082019050611bf35f830184611bd1565b92915050565b611c0281611b55565b82525050565b5f602082019050611c1b5f830184611bf9565b92915050565b5f805f60608486031215611c3857611c37611af3565b5b5f611c4586828701611b41565b9350506020611c5686828701611b41565b9250506040611c6786828701611b74565b9150509250925092565b5f60ff82169050919050565b611c8681611c71565b82525050565b5f602082019050611c9f5f830184611c7d565b92915050565b5f60208284031215611cba57611cb9611af3565b5b5f611cc784828501611b74565b91505092915050565b5f60208284031215611ce557611ce4611af3565b5b5f611cf284828501611b41565b91505092915050565b5f8060408385031215611d1157611d10611af3565b5b5f611d1e85828601611b74565b9250506020611d2f85828601611b74565b9150509250929050565b611d4281611b1a565b82525050565b5f602082019050611d5b5f830184611d39565b92915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b611d9b82611a82565b810181811067ffffffffffffffff82111715611dba57611db9611d65565b5b80604052505050565b5f611dcc611aea565b9050611dd88282611d92565b919050565b5f67ffffffffffffffff821115611df757611df6611d65565b5b602082029050602081019050919050565b5f80fd5b5f611e1e611e1984611ddd565b611dc3565b90508083825260208201905060208402830185811115611e4157611e40611e08565b5b835b81811015611e6a5780611e568882611b41565b845260208401935050602081019050611e43565b5050509392505050565b5f82601f830112611e8857611e87611d61565b5b8135611e98848260208601611e0c565b91505092915050565b5f60208284031215611eb657611eb5611af3565b5b5f82013567ffffffffffffffff811115611ed357611ed2611af7565b5b611edf84828501611e74565b91505092915050565b5f8060408385031215611efe57611efd611af3565b5b5f611f0b85828601611b41565b9250506020611f1c85828601611b41565b9150509250929050565b7f4d6178696d756d206f66203530302063616e206265206164646564206174206f5f8201527f6e63650000000000000000000000000000000000000000000000000000000000602082015250565b5f611f80602383611a64565b9150611f8b82611f26565b604082019050919050565b5f6020820190508181035f830152611fad81611f74565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f61203b602683611a64565b915061204682611fe1565b604082019050919050565b5f6020820190508181035f8301526120688161202f565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6120c9602483611a64565b91506120d48261206f565b604082019050919050565b5f6020820190508181035f8301526120f6816120bd565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f612157602283611a64565b9150612162826120fd565b604082019050919050565b5f6020820190508181035f8301526121848161214b565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6121c282611b55565b91506121cd83611b55565b92508282019050808211156121e5576121e461218b565b5b92915050565b7f45524332303a206275726e2066726f6d20746865207a65726f206164647265735f8201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b5f612245602183611a64565b9150612250826121eb565b604082019050919050565b5f6020820190508181035f83015261227281612239565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6122ad602083611a64565b91506122b882612279565b602082019050919050565b5f6020820190508181035f8301526122da816122a1565b9050919050565b5f819050919050565b5f819050919050565b5f61230d612308612303846122e1565b6122ea565b611b55565b9050919050565b61231d816122f3565b82525050565b5f60c0820190506123365f830189611d39565b6123436020830188611bf9565b6123506040830187612314565b61235d6060830186612314565b61236a6080830185611d39565b61237760a0830184611bf9565b979650505050505050565b5f8151905061239081611b5e565b92915050565b5f805f606084860312156123ad576123ac611af3565b5b5f6123ba86828701612382565b93505060206123cb86828701612382565b92505060406123dc86828701612382565b9150509250925092565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f612440602583611a64565b915061244b826123e6565b604082019050919050565b5f6020820190508181035f83015261246d81612434565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6124ce602383611a64565b91506124d982612474565b604082019050919050565b5f6020820190508181035f8301526124fb816124c2565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f61255c602983611a64565b915061256782612502565b604082019050919050565b5f6020820190508181035f83015261258981612550565b9050919050565b5f61259a82611b55565b91506125a583611b55565b92508282026125b381611b55565b915082820484148315176125ca576125c961218b565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61260882611b55565b915061261383611b55565b925082612623576126226125d1565b5b828204905092915050565b5f61263882611b55565b915061264383611b55565b925082820390508181111561265b5761265a61218b565b5b9291505056fe45524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220eb8869da46f4437f3d9f6b853ffb46af4ecfc6646f97689b6cd9972acdca96e864736f6c634300081a0033
Deployed Bytecode Sourcemap
12815:11032:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23123:10;;;;;;;;;;12815:11032;;;;;15195:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15822:210;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15378:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16972:454;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15289:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16038:300;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23149:91;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21182:128;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23252:234;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13781:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15484:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11154:103;;;;;;;;;;;;;:::i;:::-;;21047:123;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19043:96;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10923:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15097:92;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16344:400;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16750:216;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22989:85;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20706:335;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19862:109;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15609:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13749:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11263:238;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15195:88;15232:13;15265:10;;;;;;;;;;;;;;;;;15258:17;;15195:88;:::o;15822:210::-;15941:4;15963:39;15972:12;:10;:12::i;:::-;15986:7;15995:6;15963:8;:39::i;:::-;16020:4;16013:11;;15822:210;;;;:::o;15378:100::-;15431:7;15458:12;;15451:19;;15378:100;:::o;16972:454::-;17112:4;17129:36;17139:6;17147:9;17158:6;17129:9;:36::i;:::-;17176:220;17199:6;17220:12;:10;:12::i;:::-;17247:138;17303:6;17247:138;;;;;;;;;;;;;;;;;:11;:19;17259:6;17247:19;;;;;;;;;;;;;;;:33;17267:12;:10;:12::i;:::-;17247:33;;;;;;;;;;;;;;;;:37;;:138;;;;;:::i;:::-;17176:8;:220::i;:::-;17414:4;17407:11;;16972:454;;;;;:::o;15289:83::-;15330:5;13307:2;15348:16;;15289:83;:::o;16038:300::-;16153:4;16175:133;16198:12;:10;:12::i;:::-;16225:7;16247:50;16286:10;16247:11;:25;16259:12;:10;:12::i;:::-;16247:25;;;;;;;;;;;;;;;:34;16273:7;16247:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;16175:8;:133::i;:::-;16326:4;16319:11;;16038:300;;;;:::o;23149:91::-;23205:27;23211:12;:10;:12::i;:::-;23225:6;23205:5;:27::i;:::-;23149:91;:::o;21182:128::-;21249:4;21273:19;:29;21293:8;21273:29;;;;;;;;;;;;;;;;;;;;;;;;;21266:36;;21182:128;;;:::o;23252:234::-;10884:13;:11;:13::i;:::-;22213:4:::1;22202:8;;:15;;;;;;;;;;;;;;;;;;23384:46:::2;23394:7;:5;:7::i;:::-;23411:4;23418:11;23384:9;:46::i;:::-;23441:37;23455:11;23468:9;23441:13;:37::i;:::-;22251:5:::1;22240:8;;:16;;;;;;;;;;;;;;;;;;23252:234:::0;:::o;13781:25::-;;;;:::o;15484:119::-;15550:7;15577:9;:18;15587:7;15577:18;;;;;;;;;;;;;;;;15570:25;;15484:119;;;:::o;11154:103::-;10884:13;:11;:13::i;:::-;11219:30:::1;11246:1;11219:18;:30::i;:::-;11154:103::o:0;21047:123::-;10884:13;:11;:13::i;:::-;21133:5:::1;21124:6;:14;;;;21158:4;21149:6;:13;;;;21047:123:::0;;:::o;19043:96::-;19090:7;19117:14;;;;;;;;;;;19110:21;;19043:96;:::o;10923:87::-;10969:7;10996:6;;;;;;;;;;;10989:13;;10923:87;:::o;15097:92::-;15136:13;15169:12;;;;;;;;;;;;;;;;;15162:19;;15097:92;:::o;16344:400::-;16464:4;16486:228;16509:12;:10;:12::i;:::-;16536:7;16558:145;16615:15;16558:145;;;;;;;;;;;;;;;;;:11;:25;16570:12;:10;:12::i;:::-;16558:25;;;;;;;;;;;;;;;:34;16584:7;16558:34;;;;;;;;;;;;;;;;:38;;:145;;;;;:::i;:::-;16486:8;:228::i;:::-;16732:4;16725:11;;16344:400;;;;:::o;16750:216::-;16872:4;16894:42;16904:12;:10;:12::i;:::-;16918:9;16929:6;16894:9;:42::i;:::-;16954:4;16947:11;;16750:216;;;;:::o;22989:85::-;23034:4;23058:8;;;;;;;;;;;23051:15;;22989:85;:::o;20706:335::-;10884:13;:11;:13::i;:::-;20810:4:::1;20790:9;:16;:24;;20782:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;20867:36;20906:19;20867:58;;20941:9;20936:98;20960:9;:16;20956:1;:20;20936:98;;;21018:4;20998:3;:17;21002:9;21012:1;21002:12;;;;;;;;:::i;:::-;;;;;;;;20998:17;;;;;;;;;;;;;;;;:24;;;;;;;;;;;;;;;;;;20978:3;;;;;;;20936:98;;;;20771:270;20706:335:::0;:::o;19862:109::-;19911:7;19946:16;;;;;;;;;;;19931:32;;19862:109;:::o;15609:201::-;15743:7;15775:11;:18;15787:5;15775:18;;;;;;;;;;;;;;;:27;15794:7;15775:27;;;;;;;;;;;;;;;;15768:34;;15609:201;;;;:::o;13749:25::-;;;;:::o;11263:238::-;10884:13;:11;:13::i;:::-;11386:1:::1;11366:22;;:8;:22;;::::0;11344:110:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;11465:28;11484:8;11465:18;:28::i;:::-;11263:238:::0;:::o;610:98::-;663:7;690:10;683:17;;610:98;:::o;19977:378::-;20130:1;20113:19;;:5;:19;;;20105:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20211:1;20192:21;;:7;:21;;;20184:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20293:6;20263:11;:18;20275:5;20263:18;;;;;;;;;;;;;;;:27;20282:7;20263:27;;;;;;;;;;;;;;;:36;;;;20331:7;20315:32;;20324:5;20315:32;;;20340:6;20315:32;;;;;;:::i;:::-;;;;;;;;19977:378;;;:::o;17432:1605::-;17564:42;17580:6;17588:9;17599:6;17564:15;:42::i;:::-;17617:14;17660:7;:5;:7::i;:::-;17650:17;;:6;:17;;;;:41;;;;;17684:7;:5;:7::i;:::-;17671:20;;:9;:20;;;;17650:41;17646:766;;;17731:19;:27;17751:6;17731:27;;;;;;;;;;;;;;;;;;;;;;;;;17730:28;:63;;;;;17763:19;:30;17783:9;17763:30;;;;;;;;;;;;;;;;;;;;;;;;;17762:31;17730:63;17708:693;;;17873:14;;;;;;;;;;;17860:27;;:9;:27;;;:54;;;;;17909:4;17891:23;;:6;:23;;;;17860:54;17856:206;;;17948:33;13738:4;17948:18;17959:6;;17948;:10;;:18;;;;:::i;:::-;:22;;:33;;;;:::i;:::-;17939:42;;18030:12;18004;:23;18017:9;18004:23;;;;;;;;;;;;;;;:38;;;;17856:206;18143:14;;;;;;;;;;;18133:24;;:6;:24;;;:87;;;;;18203:16;;;;;;;;;;;18182:38;;:9;:38;;;;18133:87;18107:279;;;18272:33;13738:4;18272:18;18283:6;;18272;:10;;:18;;;;:::i;:::-;:22;;:33;;;;:::i;:::-;18263:42;;18354:12;18328;:23;18341:9;18328:23;;;;;;;;;;;;;;;:38;;;;18107:279;17708:693;17646:766;18422:16;18441:6;18422:25;;18473:1;18462:8;:12;18458:314;;;18504:1;18495:6;:10;18491:226;;;18556:79;18610:6;18556:9;:27;18566:16;;;;;;;;;;;18556:27;;;;;;;;;;;;;;;;:31;;:79;;;;:::i;:::-;18526:9;:27;18536:16;;;;;;;;;;;18526:27;;;;;;;;;;;;;;;:109;;;;18676:16;;;;;;;;;;;18659:42;;18668:6;18659:42;;;18694:6;18659:42;;;;;;:::i;:::-;;;;;;;;18491:226;18740:20;18751:8;18740:6;:10;;:20;;;;:::i;:::-;18731:29;;18458:314;18802:108;18838:6;18802:108;;;;;;;;;;;;;;;;;:9;:17;18812:6;18802:17;;;;;;;;;;;;;;;;:21;;:108;;;;;:::i;:::-;18782:9;:17;18792:6;18782:17;;;;;;;;;;;;;;;:128;;;;18944:32;18969:6;18944:9;:20;18954:9;18944:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;18921:9;:20;18931:9;18921:20;;;;;;;;;;;;;;;:55;;;;19011:9;18994:35;;19003:6;18994:35;;;19022:6;18994:35;;;;;;:::i;:::-;;;;;;;;17553:1484;;17432:1605;;;:::o;3594:240::-;3714:7;3772:1;3767;:6;;3775:12;3759:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3814:1;3810;:5;3803:12;;3594:240;;;;;:::o;3074:98::-;3132:7;3163:1;3159;:5;;;;:::i;:::-;3152:12;;3074:98;;;;:::o;19465:391::-;19568:1;19549:21;;:7;:21;;;19541:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19640:105;19677:6;19640:105;;;;;;;;;;;;;;;;;:9;:18;19650:7;19640:18;;;;;;;;;;;;;;;;:22;;:105;;;;;:::i;:::-;19619:9;:18;19629:7;19619:18;;;;;;;;;;;;;;;:126;;;;19771:24;19788:6;19771:12;;:16;;:24;;;;:::i;:::-;19756:12;:39;;;;19837:1;19811:37;;19820:7;19811:37;;;19841:6;19811:37;;;;;;:::i;:::-;;;;;;;;19465:391;;:::o;11016:132::-;11091:12;:10;:12::i;:::-;11080:23;;:7;:5;:7::i;:::-;:23;;;11072:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11016:132::o;21316:363::-;21398:63;21415:4;21430:16;;;;;;;;;;;21449:11;21398:8;:63::i;:::-;21472:16;;;;;;;;;;;:32;;;21512:9;21545:4;21565:11;21591:1;21607;21623:7;:5;:7::i;:::-;21645:15;21472:199;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;21316:363;;:::o;11507:191::-;11581:16;11600:6;;;;;;;;;;;11581:25;;11626:8;11617:6;;:17;;;;;;;;;;;;;;;;;;11681:8;11650:40;;11671:8;11650:40;;;;;;;;;;;;11570:128;11507:191;:::o;23492:352::-;23642:1;23626:18;;:4;:18;;;23618:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23719:1;23705:16;;:2;:16;;;23697:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;23789:1;23780:6;:10;23772:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;23492:352;;;:::o;3282:98::-;3340:7;3371:1;3367;:5;;;;:::i;:::-;3360:12;;3282:98;;;;:::o;3386:::-;3444:7;3475:1;3471;:5;;;;:::i;:::-;3464:12;;3386:98;;;;:::o;3178:::-;3236:7;3267:1;3263;:5;;;;:::i;:::-;3256:12;;3178:98;;;;:::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:139::-;376:6;371:3;366;360:23;417:1;408:6;403:3;399:16;392:27;287:139;;;:::o;432:102::-;473:6;524:2;520:7;515:2;508:5;504:14;500:28;490:38;;432:102;;;:::o;540:377::-;628:3;656:39;689:5;656:39;:::i;:::-;711:71;775:6;770:3;711:71;:::i;:::-;704:78;;791:65;849:6;844:3;837:4;830:5;826:16;791:65;:::i;:::-;881:29;903:6;881:29;:::i;:::-;876:3;872:39;865:46;;632:285;540:377;;;;:::o;923:313::-;1036:4;1074:2;1063:9;1059:18;1051:26;;1123:9;1117:4;1113:20;1109:1;1098:9;1094:17;1087:47;1151:78;1224:4;1215:6;1151:78;:::i;:::-;1143:86;;923:313;;;;:::o;1242:75::-;1275:6;1308:2;1302:9;1292:19;;1242:75;:::o;1323:117::-;1432:1;1429;1422:12;1446:117;1555:1;1552;1545:12;1569:126;1606:7;1646:42;1639:5;1635:54;1624:65;;1569:126;;;:::o;1701:96::-;1738:7;1767:24;1785:5;1767:24;:::i;:::-;1756:35;;1701:96;;;:::o;1803:122::-;1876:24;1894:5;1876:24;:::i;:::-;1869:5;1866:35;1856:63;;1915:1;1912;1905:12;1856:63;1803:122;:::o;1931:139::-;1977:5;2015:6;2002:20;1993:29;;2031:33;2058:5;2031:33;:::i;:::-;1931:139;;;;:::o;2076:77::-;2113:7;2142:5;2131:16;;2076:77;;;:::o;2159:122::-;2232:24;2250:5;2232:24;:::i;:::-;2225:5;2222:35;2212:63;;2271:1;2268;2261:12;2212:63;2159:122;:::o;2287:139::-;2333:5;2371:6;2358:20;2349:29;;2387:33;2414:5;2387:33;:::i;:::-;2287:139;;;;:::o;2432:474::-;2500:6;2508;2557:2;2545:9;2536:7;2532:23;2528:32;2525:119;;;2563:79;;:::i;:::-;2525:119;2683:1;2708:53;2753:7;2744:6;2733:9;2729:22;2708:53;:::i;:::-;2698:63;;2654:117;2810:2;2836:53;2881:7;2872:6;2861:9;2857:22;2836:53;:::i;:::-;2826:63;;2781:118;2432:474;;;;;:::o;2912:90::-;2946:7;2989:5;2982:13;2975:21;2964:32;;2912:90;;;:::o;3008:109::-;3089:21;3104:5;3089:21;:::i;:::-;3084:3;3077:34;3008:109;;:::o;3123:210::-;3210:4;3248:2;3237:9;3233:18;3225:26;;3261:65;3323:1;3312:9;3308:17;3299:6;3261:65;:::i;:::-;3123:210;;;;:::o;3339:118::-;3426:24;3444:5;3426:24;:::i;:::-;3421:3;3414:37;3339:118;;:::o;3463:222::-;3556:4;3594:2;3583:9;3579:18;3571:26;;3607:71;3675:1;3664:9;3660:17;3651:6;3607:71;:::i;:::-;3463:222;;;;:::o;3691:619::-;3768:6;3776;3784;3833:2;3821:9;3812:7;3808:23;3804:32;3801:119;;;3839:79;;:::i;:::-;3801:119;3959:1;3984:53;4029:7;4020:6;4009:9;4005:22;3984:53;:::i;:::-;3974:63;;3930:117;4086:2;4112:53;4157:7;4148:6;4137:9;4133:22;4112:53;:::i;:::-;4102:63;;4057:118;4214:2;4240:53;4285:7;4276:6;4265:9;4261:22;4240:53;:::i;:::-;4230:63;;4185:118;3691:619;;;;;:::o;4316:86::-;4351:7;4391:4;4384:5;4380:16;4369:27;;4316:86;;;:::o;4408:112::-;4491:22;4507:5;4491:22;:::i;:::-;4486:3;4479:35;4408:112;;:::o;4526:214::-;4615:4;4653:2;4642:9;4638:18;4630:26;;4666:67;4730:1;4719:9;4715:17;4706:6;4666:67;:::i;:::-;4526:214;;;;:::o;4746:329::-;4805:6;4854:2;4842:9;4833:7;4829:23;4825:32;4822:119;;;4860:79;;:::i;:::-;4822:119;4980:1;5005:53;5050:7;5041:6;5030:9;5026:22;5005:53;:::i;:::-;4995:63;;4951:117;4746:329;;;;:::o;5081:::-;5140:6;5189:2;5177:9;5168:7;5164:23;5160:32;5157:119;;;5195:79;;:::i;:::-;5157:119;5315:1;5340:53;5385:7;5376:6;5365:9;5361:22;5340:53;:::i;:::-;5330:63;;5286:117;5081:329;;;;:::o;5416:474::-;5484:6;5492;5541:2;5529:9;5520:7;5516:23;5512:32;5509:119;;;5547:79;;:::i;:::-;5509:119;5667:1;5692:53;5737:7;5728:6;5717:9;5713:22;5692:53;:::i;:::-;5682:63;;5638:117;5794:2;5820:53;5865:7;5856:6;5845:9;5841:22;5820:53;:::i;:::-;5810:63;;5765:118;5416:474;;;;;:::o;5896:118::-;5983:24;6001:5;5983:24;:::i;:::-;5978:3;5971:37;5896:118;;:::o;6020:222::-;6113:4;6151:2;6140:9;6136:18;6128:26;;6164:71;6232:1;6221:9;6217:17;6208:6;6164:71;:::i;:::-;6020:222;;;;:::o;6248:117::-;6357:1;6354;6347:12;6371:180;6419:77;6416:1;6409:88;6516:4;6513:1;6506:15;6540:4;6537:1;6530:15;6557:281;6640:27;6662:4;6640:27;:::i;:::-;6632:6;6628:40;6770:6;6758:10;6755:22;6734:18;6722:10;6719:34;6716:62;6713:88;;;6781:18;;:::i;:::-;6713:88;6821:10;6817:2;6810:22;6600:238;6557:281;;:::o;6844:129::-;6878:6;6905:20;;:::i;:::-;6895:30;;6934:33;6962:4;6954:6;6934:33;:::i;:::-;6844:129;;;:::o;6979:311::-;7056:4;7146:18;7138:6;7135:30;7132:56;;;7168:18;;:::i;:::-;7132:56;7218:4;7210:6;7206:17;7198:25;;7278:4;7272;7268:15;7260:23;;6979:311;;;:::o;7296:117::-;7405:1;7402;7395:12;7436:710;7532:5;7557:81;7573:64;7630:6;7573:64;:::i;:::-;7557:81;:::i;:::-;7548:90;;7658:5;7687:6;7680:5;7673:21;7721:4;7714:5;7710:16;7703:23;;7774:4;7766:6;7762:17;7754:6;7750:30;7803:3;7795:6;7792:15;7789:122;;;7822:79;;:::i;:::-;7789:122;7937:6;7920:220;7954:6;7949:3;7946:15;7920:220;;;8029:3;8058:37;8091:3;8079:10;8058:37;:::i;:::-;8053:3;8046:50;8125:4;8120:3;8116:14;8109:21;;7996:144;7980:4;7975:3;7971:14;7964:21;;7920:220;;;7924:21;7538:608;;7436:710;;;;;:::o;8169:370::-;8240:5;8289:3;8282:4;8274:6;8270:17;8266:27;8256:122;;8297:79;;:::i;:::-;8256:122;8414:6;8401:20;8439:94;8529:3;8521:6;8514:4;8506:6;8502:17;8439:94;:::i;:::-;8430:103;;8246:293;8169:370;;;;:::o;8545:539::-;8629:6;8678:2;8666:9;8657:7;8653:23;8649:32;8646:119;;;8684:79;;:::i;:::-;8646:119;8832:1;8821:9;8817:17;8804:31;8862:18;8854:6;8851:30;8848:117;;;8884:79;;:::i;:::-;8848:117;8989:78;9059:7;9050:6;9039:9;9035:22;8989:78;:::i;:::-;8979:88;;8775:302;8545:539;;;;:::o;9090:474::-;9158:6;9166;9215:2;9203:9;9194:7;9190:23;9186:32;9183:119;;;9221:79;;:::i;:::-;9183:119;9341:1;9366:53;9411:7;9402:6;9391:9;9387:22;9366:53;:::i;:::-;9356:63;;9312:117;9468:2;9494:53;9539:7;9530:6;9519:9;9515:22;9494:53;:::i;:::-;9484:63;;9439:118;9090:474;;;;;:::o;9570:222::-;9710:34;9706:1;9698:6;9694:14;9687:58;9779:5;9774:2;9766:6;9762:15;9755:30;9570:222;:::o;9798:366::-;9940:3;9961:67;10025:2;10020:3;9961:67;:::i;:::-;9954:74;;10037:93;10126:3;10037:93;:::i;:::-;10155:2;10150:3;10146:12;10139:19;;9798:366;;;:::o;10170:419::-;10336:4;10374:2;10363:9;10359:18;10351:26;;10423:9;10417:4;10413:20;10409:1;10398:9;10394:17;10387:47;10451:131;10577:4;10451:131;:::i;:::-;10443:139;;10170:419;;;:::o;10595:180::-;10643:77;10640:1;10633:88;10740:4;10737:1;10730:15;10764:4;10761:1;10754:15;10781:225;10921:34;10917:1;10909:6;10905:14;10898:58;10990:8;10985:2;10977:6;10973:15;10966:33;10781:225;:::o;11012:366::-;11154:3;11175:67;11239:2;11234:3;11175:67;:::i;:::-;11168:74;;11251:93;11340:3;11251:93;:::i;:::-;11369:2;11364:3;11360:12;11353:19;;11012:366;;;:::o;11384:419::-;11550:4;11588:2;11577:9;11573:18;11565:26;;11637:9;11631:4;11627:20;11623:1;11612:9;11608:17;11601:47;11665:131;11791:4;11665:131;:::i;:::-;11657:139;;11384:419;;;:::o;11809:223::-;11949:34;11945:1;11937:6;11933:14;11926:58;12018:6;12013:2;12005:6;12001:15;11994:31;11809:223;:::o;12038:366::-;12180:3;12201:67;12265:2;12260:3;12201:67;:::i;:::-;12194:74;;12277:93;12366:3;12277:93;:::i;:::-;12395:2;12390:3;12386:12;12379:19;;12038:366;;;:::o;12410:419::-;12576:4;12614:2;12603:9;12599:18;12591:26;;12663:9;12657:4;12653:20;12649:1;12638:9;12634:17;12627:47;12691:131;12817:4;12691:131;:::i;:::-;12683:139;;12410:419;;;:::o;12835:221::-;12975:34;12971:1;12963:6;12959:14;12952:58;13044:4;13039:2;13031:6;13027:15;13020:29;12835:221;:::o;13062:366::-;13204:3;13225:67;13289:2;13284:3;13225:67;:::i;:::-;13218:74;;13301:93;13390:3;13301:93;:::i;:::-;13419:2;13414:3;13410:12;13403:19;;13062:366;;;:::o;13434:419::-;13600:4;13638:2;13627:9;13623:18;13615:26;;13687:9;13681:4;13677:20;13673:1;13662:9;13658:17;13651:47;13715:131;13841:4;13715:131;:::i;:::-;13707:139;;13434:419;;;:::o;13859:180::-;13907:77;13904:1;13897:88;14004:4;14001:1;13994:15;14028:4;14025:1;14018:15;14045:191;14085:3;14104:20;14122:1;14104:20;:::i;:::-;14099:25;;14138:20;14156:1;14138:20;:::i;:::-;14133:25;;14181:1;14178;14174:9;14167:16;;14202:3;14199:1;14196:10;14193:36;;;14209:18;;:::i;:::-;14193:36;14045:191;;;;:::o;14242:220::-;14382:34;14378:1;14370:6;14366:14;14359:58;14451:3;14446:2;14438:6;14434:15;14427:28;14242:220;:::o;14468:366::-;14610:3;14631:67;14695:2;14690:3;14631:67;:::i;:::-;14624:74;;14707:93;14796:3;14707:93;:::i;:::-;14825:2;14820:3;14816:12;14809:19;;14468:366;;;:::o;14840:419::-;15006:4;15044:2;15033:9;15029:18;15021:26;;15093:9;15087:4;15083:20;15079:1;15068:9;15064:17;15057:47;15121:131;15247:4;15121:131;:::i;:::-;15113:139;;14840:419;;;:::o;15265:182::-;15405:34;15401:1;15393:6;15389:14;15382:58;15265:182;:::o;15453:366::-;15595:3;15616:67;15680:2;15675:3;15616:67;:::i;:::-;15609:74;;15692:93;15781:3;15692:93;:::i;:::-;15810:2;15805:3;15801:12;15794:19;;15453:366;;;:::o;15825:419::-;15991:4;16029:2;16018:9;16014:18;16006:26;;16078:9;16072:4;16068:20;16064:1;16053:9;16049:17;16042:47;16106:131;16232:4;16106:131;:::i;:::-;16098:139;;15825:419;;;:::o;16250:85::-;16295:7;16324:5;16313:16;;16250:85;;;:::o;16341:60::-;16369:3;16390:5;16383:12;;16341:60;;;:::o;16407:158::-;16465:9;16498:61;16516:42;16525:32;16551:5;16525:32;:::i;:::-;16516:42;:::i;:::-;16498:61;:::i;:::-;16485:74;;16407:158;;;:::o;16571:147::-;16666:45;16705:5;16666:45;:::i;:::-;16661:3;16654:58;16571:147;;:::o;16724:807::-;16973:4;17011:3;17000:9;16996:19;16988:27;;17025:71;17093:1;17082:9;17078:17;17069:6;17025:71;:::i;:::-;17106:72;17174:2;17163:9;17159:18;17150:6;17106:72;:::i;:::-;17188:80;17264:2;17253:9;17249:18;17240:6;17188:80;:::i;:::-;17278;17354:2;17343:9;17339:18;17330:6;17278:80;:::i;:::-;17368:73;17436:3;17425:9;17421:19;17412:6;17368:73;:::i;:::-;17451;17519:3;17508:9;17504:19;17495:6;17451:73;:::i;:::-;16724:807;;;;;;;;;:::o;17537:143::-;17594:5;17625:6;17619:13;17610:22;;17641:33;17668:5;17641:33;:::i;:::-;17537:143;;;;:::o;17686:663::-;17774:6;17782;17790;17839:2;17827:9;17818:7;17814:23;17810:32;17807:119;;;17845:79;;:::i;:::-;17807:119;17965:1;17990:64;18046:7;18037:6;18026:9;18022:22;17990:64;:::i;:::-;17980:74;;17936:128;18103:2;18129:64;18185:7;18176:6;18165:9;18161:22;18129:64;:::i;:::-;18119:74;;18074:129;18242:2;18268:64;18324:7;18315:6;18304:9;18300:22;18268:64;:::i;:::-;18258:74;;18213:129;17686:663;;;;;:::o;18355:224::-;18495:34;18491:1;18483:6;18479:14;18472:58;18564:7;18559:2;18551:6;18547:15;18540:32;18355:224;:::o;18585:366::-;18727:3;18748:67;18812:2;18807:3;18748:67;:::i;:::-;18741:74;;18824:93;18913:3;18824:93;:::i;:::-;18942:2;18937:3;18933:12;18926:19;;18585:366;;;:::o;18957:419::-;19123:4;19161:2;19150:9;19146:18;19138:26;;19210:9;19204:4;19200:20;19196:1;19185:9;19181:17;19174:47;19238:131;19364:4;19238:131;:::i;:::-;19230:139;;18957:419;;;:::o;19382:222::-;19522:34;19518:1;19510:6;19506:14;19499:58;19591:5;19586:2;19578:6;19574:15;19567:30;19382:222;:::o;19610:366::-;19752:3;19773:67;19837:2;19832:3;19773:67;:::i;:::-;19766:74;;19849:93;19938:3;19849:93;:::i;:::-;19967:2;19962:3;19958:12;19951:19;;19610:366;;;:::o;19982:419::-;20148:4;20186:2;20175:9;20171:18;20163:26;;20235:9;20229:4;20225:20;20221:1;20210:9;20206:17;20199:47;20263:131;20389:4;20263:131;:::i;:::-;20255:139;;19982:419;;;:::o;20407:228::-;20547:34;20543:1;20535:6;20531:14;20524:58;20616:11;20611:2;20603:6;20599:15;20592:36;20407:228;:::o;20641:366::-;20783:3;20804:67;20868:2;20863:3;20804:67;:::i;:::-;20797:74;;20880:93;20969:3;20880:93;:::i;:::-;20998:2;20993:3;20989:12;20982:19;;20641:366;;;:::o;21013:419::-;21179:4;21217:2;21206:9;21202:18;21194:26;;21266:9;21260:4;21256:20;21252:1;21241:9;21237:17;21230:47;21294:131;21420:4;21294:131;:::i;:::-;21286:139;;21013:419;;;:::o;21438:410::-;21478:7;21501:20;21519:1;21501:20;:::i;:::-;21496:25;;21535:20;21553:1;21535:20;:::i;:::-;21530:25;;21590:1;21587;21583:9;21612:30;21630:11;21612:30;:::i;:::-;21601:41;;21791:1;21782:7;21778:15;21775:1;21772:22;21752:1;21745:9;21725:83;21702:139;;21821:18;;:::i;:::-;21702:139;21486:362;21438:410;;;;:::o;21854:180::-;21902:77;21899:1;21892:88;21999:4;21996:1;21989:15;22023:4;22020:1;22013:15;22040:185;22080:1;22097:20;22115:1;22097:20;:::i;:::-;22092:25;;22131:20;22149:1;22131:20;:::i;:::-;22126:25;;22170:1;22160:35;;22175:18;;:::i;:::-;22160:35;22217:1;22214;22210:9;22205:14;;22040:185;;;;:::o;22231:194::-;22271:4;22291:20;22309:1;22291:20;:::i;:::-;22286:25;;22325:20;22343:1;22325:20;:::i;:::-;22320:25;;22369:1;22366;22362:9;22354:17;;22393:1;22387:4;22384:11;22381:37;;;22398:18;;:::i;:::-;22381:37;22231:194;;;;:::o
Swarm Source
ipfs://eb8869da46f4437f3d9f6b853ffb46af4ecfc6646f97689b6cd9972acdca96e8
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.