ERC-20
Overview
Max Total Supply
100,000 PRAXIS
Holders
66
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Source Code Verified (Exact Match)
Contract Name:
ModusOperandi
Compiler Version
v0.8.9+commit.e5eed63a
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-08-10 */ /* $PRAXIS Modus Operandi Tax 5% (4% Auto LP / 1% Dev) Keep in mind, with high volume 4% AUTO LP will make the most sustainable ERC20 protocol owned by community. Locked and renounced! https://praxispath.xyz/ https://t.me/PRAXIS_Portal https://twitter.com/PRAXISPATH */ // SPDX-License-Identifier: Unlicensed pragma solidity 0.8.9; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } interface IUniswapV2Pair { event Approval(address indexed owner, address indexed spender, uint value); event Transfer(address indexed from, address indexed to, uint value); function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure returns (uint8); function totalSupply() external view returns (uint); function balanceOf(address owner) external view returns (uint); function allowance(address owner, address spender) external view returns (uint); function approve(address spender, uint value) external returns (bool); function transfer(address to, uint value) external returns (bool); function transferFrom(address from, address to, uint value) external returns (bool); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint); function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external; event Mint(address indexed sender, uint amount0, uint amount1); event Swap( address indexed sender, uint amount0In, uint amount1In, uint amount0Out, uint amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint); function factory() external view returns (address); function token0() external view returns (address); function token1() external view returns (address); function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast); function price0CumulativeLast() external view returns (uint); function price1CumulativeLast() external view returns (uint); function kLast() external view returns (uint); function mint(address to) external returns (uint liquidity); function burn(address to) external returns (uint amount0, uint amount1); function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external; function skim(address to) external; function sync() external; function initialize(address, address) external; } interface IUniswapV2Factory { event PairCreated(address indexed token0, address indexed token1, address pair, uint); function feeTo() external view returns (address); function feeToSetter() external view returns (address); function getPair(address tokenA, address tokenB) external view returns (address pair); function allPairs(uint) external view returns (address pair); function allPairsLength() external view returns (uint); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; } interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); } interface IERC20Metadata is IERC20 { /** * @dev Returns the name of the token. */ function name() external view returns (string memory); /** * @dev Returns the symbol of the token. */ function symbol() external view returns (string memory); /** * @dev Returns the decimals places of the token. */ function decimals() external view returns (uint8); } contract ERC20 is Context, IERC20, IERC20Metadata { using SafeMath for uint256; mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; /** * @dev Sets the values for {name} and {symbol}. * * The default value of {decimals} is 18. To select a different value for * {decimals} you should overload it. * * All two of these values are immutable: they can only be set once during * construction. */ constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } /** * @dev Returns the name of the token. */ function name() public view virtual override returns (string memory) { return _name; } /** * @dev Returns the symbol of the token, usually a shorter version of the * name. */ function symbol() public view virtual override returns (string memory) { return _symbol; } /** * @dev Returns the number of decimals used to get its user representation. * For example, if `decimals` equals `2`, a balance of `505` tokens should * be displayed to a user as `5,05` (`505 / 10 ** 2`). * * Tokens usually opt for a value of 18, imitating the relationship between * Ether and Wei. This is the value {ERC20} uses, unless this function is * overridden; * * NOTE: This information is only used for _display_ purposes: it in * no way affects any of the arithmetic of the contract, including * {IERC20-balanceOf} and {IERC20-transfer}. */ function decimals() public view virtual override returns (uint8) { return 18; } /** * @dev See {IERC20-totalSupply}. */ function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } /** * @dev See {IERC20-balanceOf}. */ function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } /** * @dev See {IERC20-transfer}. * * Requirements: * * - `recipient` cannot be the zero address. * - the caller must have a balance of at least `amount`. */ function transfer(address recipient, uint256 amount) public virtual override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } /** * @dev See {IERC20-allowance}. */ function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } /** * @dev See {IERC20-approve}. * * Requirements: * * - `spender` cannot be the zero address. */ function approve(address spender, uint256 amount) public virtual override returns (bool) { _approve(_msgSender(), spender, amount); return true; } /** * @dev See {IERC20-transferFrom}. * * Emits an {Approval} event indicating the updated allowance. This is not * required by the EIP. See the note at the beginning of {ERC20}. * * Requirements: * * - `sender` and `recipient` cannot be the zero address. * - `sender` must have a balance of at least `amount`. * - the caller must have allowance for ``sender``'s tokens of at least * `amount`. */ 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; } /** * @dev Atomically increases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. */ function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue)); return true; } /** * @dev Atomically decreases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. * - `spender` must have allowance for the caller of at least * `subtractedValue`. */ 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; } /** * @dev Moves tokens `amount` from `sender` to `recipient`. * * This is internal function is equivalent to {transfer}, and can be used to * e.g. implement automatic token fees, slashing mechanisms, etc. * * Emits a {Transfer} event. * * Requirements: * * - `sender` cannot be the zero address. * - `recipient` cannot be the zero address. * - `sender` must have a balance of at least `amount`. */ function _transfer( address sender, address recipient, uint256 amount ) internal virtual { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(sender, recipient, amount); _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance"); _balances[recipient] = _balances[recipient].add(amount); emit Transfer(sender, recipient, amount); } /** @dev Creates `amount` tokens and assigns them to `account`, increasing * the total supply. * * Emits a {Transfer} event with `from` set to the zero address. * * Requirements: * * - `account` cannot be the zero address. */ function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _beforeTokenTransfer(address(0), account, amount); _totalSupply = _totalSupply.add(amount); _balances[account] = _balances[account].add(amount); emit Transfer(address(0), account, amount); } /** * @dev Destroys `amount` tokens from `account`, reducing the * total supply. * * Emits a {Transfer} event with `to` set to the zero address. * * Requirements: * * - `account` cannot be the zero address. * - `account` must have at least `amount` tokens. */ function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); _beforeTokenTransfer(account, address(0), amount); _balances[account] = _balances[account].sub(amount, "ERC20: burn amount exceeds balance"); _totalSupply = _totalSupply.sub(amount); emit Transfer(account, address(0), amount); } /** * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens. * * This internal function is equivalent to `approve`, and can be used to * e.g. set automatic allowances for certain subsystems, etc. * * Emits an {Approval} event. * * Requirements: * * - `owner` cannot be the zero address. * - `spender` cannot be the zero address. */ 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); } /** * @dev Hook that is called before any transfer of tokens. This includes * minting and burning. * * Calling conditions: * * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens * will be to transferred to `to`. * - when `from` is zero, `amount` tokens will be minted for `to`. * - when `to` is zero, `amount` of ``from``'s tokens will be burned. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _beforeTokenTransfer( address from, address to, uint256 amount ) internal virtual {} } library SafeMath { /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } /** * @dev Returns the integer division of two unsigned integers. Reverts on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } /** * @dev Returns the integer division of two unsigned integers. Reverts with custom message on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts with custom message when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } } contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor () { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } /** * @dev Returns the address of the current owner. */ function owner() public view returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } library SafeMathInt { int256 private constant MIN_INT256 = int256(1) << 255; int256 private constant MAX_INT256 = ~(int256(1) << 255); /** * @dev Multiplies two int256 variables and fails on overflow. */ function mul(int256 a, int256 b) internal pure returns (int256) { int256 c = a * b; // Detect overflow when multiplying MIN_INT256 with -1 require(c != MIN_INT256 || (a & MIN_INT256) != (b & MIN_INT256)); require((b == 0) || (c / b == a)); return c; } /** * @dev Division of two int256 variables and fails on overflow. */ function div(int256 a, int256 b) internal pure returns (int256) { // Prevent overflow when dividing MIN_INT256 by -1 require(b != -1 || a != MIN_INT256); // Solidity already throws when dividing by 0. return a / b; } /** * @dev Subtracts two int256 variables and fails on overflow. */ function sub(int256 a, int256 b) internal pure returns (int256) { int256 c = a - b; require((b >= 0 && c <= a) || (b < 0 && c > a)); return c; } /** * @dev Adds two int256 variables and fails on overflow. */ function add(int256 a, int256 b) internal pure returns (int256) { int256 c = a + b; require((b >= 0 && c >= a) || (b < 0 && c < a)); return c; } /** * @dev Converts to absolute value, and fails on overflow. */ function abs(int256 a) internal pure returns (int256) { require(a != MIN_INT256); return a < 0 ? -a : a; } function toUint256Safe(int256 a) internal pure returns (uint256) { require(a >= 0); return uint256(a); } } library SafeMathUint { function toInt256Safe(uint256 a) internal pure returns (int256) { int256 b = int256(a); require(b >= 0); return b; } } interface IUniswapV2Router01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB, uint liquidity); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function removeLiquidity( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB); function removeLiquidityETH( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountToken, uint amountETH); function removeLiquidityWithPermit( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountA, uint amountB); function removeLiquidityETHWithPermit( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountToken, uint amountETH); function swapExactTokensForTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapTokensForExactTokens( uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB); function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut); function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn); function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts); function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts); } interface IUniswapV2Router02 is IUniswapV2Router01 { function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountETH); function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountETH); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; } contract ModusOperandi is ERC20, Ownable { using SafeMath for uint256; IUniswapV2Router02 public immutable uniswapV2Router; address public immutable uniswapV2Pair; address public constant deadAddress = address(0xdead); bool private swapping; address private marketingWallet; address private devWallet; uint256 public maxTransactionAmount; uint256 public swapTokensAtAmount; uint256 public maxWallet; bool public limitsInEffect = true; bool public tradingActive = false; bool public swapEnabled = false; bool public enableEarlySellTax = true; // Anti-bot and anti-whale mappings and variables mapping(address => uint256) private _holderLastTransferTimestamp; // to hold last Transfers temporarily during launch // Seller Map mapping (address => uint256) private _holderFirstBuyTimestamp; bool public transferDelayEnabled = true; uint256 public buyTotalFees; uint256 public buyMarketingFee; uint256 public buyLiquidityFee; uint256 public buyDevFee; uint256 public sellTotalFees; uint256 public sellMarketingFee; uint256 public sellLiquidityFee; uint256 public sellDevFee; uint256 public earlySellLiquidityFee; uint256 public earlySellMarketingFee; uint256 public earlySellDevFee; uint256 public tokensForMarketing; uint256 public tokensForLiquidity; uint256 public tokensForDev; /******************/ // exclude from fees and max transaction amount mapping (address => bool) private _isExcludedFromFees; mapping (address => bool) public _isExcludedMaxTransactionAmount; // store addresses that a automatic market maker pairs. Any transfer *to* these addresses // could be subject to a maximum transfer amount mapping (address => bool) public automatedMarketMakerPairs; event UpdateUniswapV2Router(address indexed newAddress, address indexed oldAddress); event ExcludeFromFees(address indexed account, bool isExcluded); event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value); event marketingWalletUpdated(address indexed newWallet, address indexed oldWallet); event devWalletUpdated(address indexed newWallet, address indexed oldWallet); event SwapAndLiquify( uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiquidity ); constructor() ERC20("Modus Operandi", "PRAXIS") { IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); excludeFromMaxTransaction(address(_uniswapV2Router), true); uniswapV2Router = _uniswapV2Router; uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH()); excludeFromMaxTransaction(address(uniswapV2Pair), true); _setAutomatedMarketMakerPair(address(uniswapV2Pair), true); uint256 _buyMarketingFee = 0; uint256 _buyLiquidityFee = 4; uint256 _buyDevFee = 1; uint256 _sellMarketingFee = 0; uint256 _sellLiquidityFee = 4; uint256 _sellDevFee = 1; uint256 _earlySellLiquidityFee = 4; uint256 _earlySellMarketingFee = 0; uint256 _earlySellDevFee = 1; uint256 totalSupply = 1 * 1e5 * 1e18; maxTransactionAmount = totalSupply * 3 / 100; // 3% maxTransactionAmountTxn maxWallet = totalSupply * 3 / 100; // 3% maxWallet swapTokensAtAmount = totalSupply * 10 / 10000; // 0.1% swap wallet buyMarketingFee = _buyMarketingFee; buyLiquidityFee = _buyLiquidityFee; buyDevFee = _buyDevFee; buyTotalFees = buyMarketingFee + buyLiquidityFee + buyDevFee; sellMarketingFee = _sellMarketingFee; sellLiquidityFee = _sellLiquidityFee; sellDevFee = _sellDevFee; sellTotalFees = sellMarketingFee + sellLiquidityFee + sellDevFee; earlySellLiquidityFee = _earlySellLiquidityFee; earlySellMarketingFee = _earlySellMarketingFee; earlySellDevFee = _earlySellDevFee; marketingWallet = address(owner()); // set as marketing wallet devWallet = address(owner()); // set as dev wallet // exclude from paying fees or having max transaction amount excludeFromFees(owner(), true); excludeFromFees(address(this), true); excludeFromFees(address(0xdead), true); excludeFromMaxTransaction(owner(), true); excludeFromMaxTransaction(address(this), true); excludeFromMaxTransaction(address(0xdead), true); /* _mint is an internal function in ERC20.sol that is only called here, and CANNOT be called ever again */ _mint(msg.sender, totalSupply); } receive() external payable { } // once enabled, can never be turned off function enableTrading() external onlyOwner { tradingActive = true; swapEnabled = true; } // remove limits after token is stable function removeLimits() external onlyOwner returns (bool){ limitsInEffect = false; return true; } // disable Transfer delay - cannot be reenabled function disableTransferDelay() external onlyOwner returns (bool){ transferDelayEnabled = false; return true; } function setEarlySellTax(bool onoff) external onlyOwner { enableEarlySellTax = onoff; } function updateMaxTxnAmount(uint256 newNum) external onlyOwner { require(newNum >= (totalSupply() * 5 / 1000)/1e18, "Cannot set maxTransactionAmount lower than 0.5%"); maxTransactionAmount = newNum * (10**18); } function updateMaxWalletAmount(uint256 newNum) external onlyOwner { require(newNum >= (totalSupply() * 5 / 1000)/1e18, "Cannot set maxWallet lower than 0.5%"); maxWallet = newNum * (10**18); } function excludeFromMaxTransaction(address updAds, bool isEx) public onlyOwner { _isExcludedMaxTransactionAmount[updAds] = isEx; } // only use to disable contract sales if absolutely necessary (emergency use only) function updateSwapEnabled(bool enabled) external onlyOwner(){ swapEnabled = enabled; } function updateBuyFees(uint256 _marketingFee, uint256 _liquidityFee, uint256 _devFee) external onlyOwner(){ buyMarketingFee = _marketingFee; buyLiquidityFee = _liquidityFee; buyDevFee = _devFee; buyTotalFees = buyMarketingFee + buyLiquidityFee + buyDevFee; require(buyTotalFees <= 20, "Must keep buy fees at 20% or less"); } function updateSellFees(uint256 _marketingFee, uint256 _liquidityFee, uint256 _devFee, uint256 _earlySellLiquidityFee, uint256 _earlySellMarketingFee, uint256 _earlySellDevFee) external onlyOwner(){ sellMarketingFee = _marketingFee; sellLiquidityFee = _liquidityFee; sellDevFee = _devFee; earlySellLiquidityFee = _earlySellLiquidityFee; earlySellMarketingFee = _earlySellMarketingFee; earlySellDevFee = _earlySellDevFee; sellTotalFees = sellMarketingFee + sellLiquidityFee + sellDevFee; require(sellTotalFees <= 20, "Must keep sell fees at 20% or less"); uint256 earlySellTotalFees = _earlySellMarketingFee + _earlySellLiquidityFee + _earlySellDevFee; require(earlySellTotalFees <= 20, "Must keep early sell fee at 20% or less"); } function excludeFromFees(address account, bool excluded) public onlyOwner { _isExcludedFromFees[account] = excluded; emit ExcludeFromFees(account, excluded); } function setAutomatedMarketMakerPair(address pair, bool value) public onlyOwner { require(pair != uniswapV2Pair, "The pair cannot be removed from automatedMarketMakerPairs"); _setAutomatedMarketMakerPair(pair, value); } function _setAutomatedMarketMakerPair(address pair, bool value) private { automatedMarketMakerPairs[pair] = value; emit SetAutomatedMarketMakerPair(pair, value); } function updateMarketingWallet(address newMarketingWallet) external onlyOwner { emit marketingWalletUpdated(newMarketingWallet, marketingWallet); marketingWallet = newMarketingWallet; excludeFromFees(marketingWallet,true); excludeFromMaxTransaction(marketingWallet,true); } function updateDevWallet(address newWallet) external onlyOwner { emit devWalletUpdated(newWallet, devWallet); devWallet = newWallet; excludeFromFees(devWallet,true); excludeFromMaxTransaction(devWallet,true); } function isExcludedFromFees(address account) public view returns(bool) { return _isExcludedFromFees[account]; } function _transfer( address from, address to, uint256 amount ) internal override { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); if(amount == 0) { super._transfer(from, to, 0); return; } if(limitsInEffect){ if ( from != owner() && to != owner() && to != address(0) && to != address(0xdead) && !swapping ){ if(!tradingActive){ require(_isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading is not active."); } // at launch if the transfer delay is enabled, ensure the block timestamps for purchasers is set -- during launch. if (transferDelayEnabled){ if (to != owner() && to != address(uniswapV2Router) && to != address(uniswapV2Pair)){ require(_holderLastTransferTimestamp[tx.origin] < block.number, "_transfer:: Transfer Delay enabled. Only one purchase per block allowed."); _holderLastTransferTimestamp[tx.origin] = block.number; } } //when buy if (automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to]) { require(amount <= maxTransactionAmount, "Buy transfer amount exceeds the maxTransactionAmount."); require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded"); } //when sell else if (automatedMarketMakerPairs[to] && !_isExcludedMaxTransactionAmount[from]) { require(amount <= maxTransactionAmount, "Sell transfer amount exceeds the maxTransactionAmount."); } else if(!_isExcludedMaxTransactionAmount[to]){ require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded"); } } } // early sell logic bool isBuy = from == uniswapV2Pair; if (!isBuy && enableEarlySellTax) { if (_holderFirstBuyTimestamp[from] != 0 && (_holderFirstBuyTimestamp[from] + (24 hours) >= block.timestamp)) { sellLiquidityFee = earlySellLiquidityFee; sellMarketingFee = earlySellMarketingFee; sellDevFee = earlySellDevFee; sellTotalFees = sellMarketingFee + sellLiquidityFee + sellDevFee; } else { sellLiquidityFee = 4; sellMarketingFee = 0; sellDevFee = 1; sellTotalFees = sellMarketingFee + sellLiquidityFee + sellDevFee; } } else { if (_holderFirstBuyTimestamp[to] == 0) { _holderFirstBuyTimestamp[to] = block.timestamp; } if (!enableEarlySellTax) { sellLiquidityFee = 4; sellMarketingFee = 0; sellDevFee = 1; sellTotalFees = sellMarketingFee + sellLiquidityFee + sellDevFee; } } uint256 contractTokenBalance = balanceOf(address(this)); bool canSwap = contractTokenBalance >= swapTokensAtAmount; if( canSwap && swapEnabled && !swapping && !automatedMarketMakerPairs[from] && !_isExcludedFromFees[from] && !_isExcludedFromFees[to] ) { swapping = true; swapBack(); swapping = false; } bool takeFee = !swapping; // if any account belongs to _isExcludedFromFee account then remove the fee if(_isExcludedFromFees[from] || _isExcludedFromFees[to]) { takeFee = false; } uint256 fees = 0; // only take fees on buys/sells, do not take on wallet transfers if(takeFee){ // on sell if (automatedMarketMakerPairs[to] && sellTotalFees > 0){ fees = amount.mul(sellTotalFees).div(100); tokensForLiquidity += fees * sellLiquidityFee / sellTotalFees; tokensForDev += fees * sellDevFee / sellTotalFees; tokensForMarketing += fees * sellMarketingFee / sellTotalFees; } // on buy else if(automatedMarketMakerPairs[from] && buyTotalFees > 0) { fees = amount.mul(buyTotalFees).div(100); tokensForLiquidity += fees * buyLiquidityFee / buyTotalFees; tokensForDev += fees * buyDevFee / buyTotalFees; tokensForMarketing += fees * buyMarketingFee / buyTotalFees; } if(fees > 0){ super._transfer(from, address(this), fees); } amount -= fees; } super._transfer(from, to, amount); } function swapTokensForEth(uint256 tokenAmount) private { // generate the uniswap pair path of token -> weth address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); // make the swap uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), block.timestamp ); } function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private { // approve token transfer to cover all possible scenarios _approve(address(this), address(uniswapV2Router), tokenAmount); // add the liquidity uniswapV2Router.addLiquidityETH{value: ethAmount}( address(this), tokenAmount, 0, // slippage is unavoidable 0, // slippage is unavoidable deadAddress, block.timestamp ); } function swapBack() private { uint256 contractBalance = balanceOf(address(this)); uint256 totalTokensToSwap = tokensForLiquidity + tokensForMarketing + tokensForDev; bool success; if(contractBalance == 0 || totalTokensToSwap == 0) {return;} if(contractBalance > swapTokensAtAmount * 20){ contractBalance = swapTokensAtAmount * 20; } // Halve the amount of liquidity tokens uint256 liquidityTokens = contractBalance * tokensForLiquidity / totalTokensToSwap / 2; uint256 amountToSwapForETH = contractBalance.sub(liquidityTokens); uint256 initialETHBalance = address(this).balance; swapTokensForEth(amountToSwapForETH); uint256 ethBalance = address(this).balance.sub(initialETHBalance); uint256 ethForMarketing = ethBalance.mul(tokensForMarketing).div(totalTokensToSwap); uint256 ethForDev = ethBalance.mul(tokensForDev).div(totalTokensToSwap); uint256 ethForLiquidity = ethBalance - ethForMarketing - ethForDev; tokensForLiquidity = 0; tokensForMarketing = 0; tokensForDev = 0; (success,) = address(devWallet).call{value: ethForDev}(""); if(liquidityTokens > 0 && ethForLiquidity > 0){ addLiquidity(liquidityTokens, ethForLiquidity); emit SwapAndLiquify(amountToSwapForETH, ethForLiquidity, tokensForLiquidity); } (success,) = address(marketingWallet).call{value: address(this).balance}(""); } }
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":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","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":"tokensIntoLiquidity","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"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"devWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"marketingWalletUpdated","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"disableTransferDelay","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"earlySellDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"earlySellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"earlySellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableEarlySellTax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","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":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"onoff","type":"bool"}],"name":"setEarlySellTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForDev","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newMarketingWallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"},{"internalType":"uint256","name":"_earlySellLiquidityFee","type":"uint256"},{"internalType":"uint256","name":"_earlySellMarketingFee","type":"uint256"},{"internalType":"uint256","name":"_earlySellDevFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60c06040526001600b60006101000a81548160ff0219169083151502179055506000600b60016101000a81548160ff0219169083151502179055506000600b60026101000a81548160ff0219169083151502179055506001600b60036101000a81548160ff0219169083151502179055506001600e60006101000a81548160ff0219169083151502179055503480156200009857600080fd5b506040518060400160405280600e81526020017f4d6f647573204f706572616e64690000000000000000000000000000000000008152506040518060400160405280600681526020017f505241584953000000000000000000000000000000000000000000000000000081525081600390805190602001906200011d92919062000bf4565b5080600490805190602001906200013692919062000bf4565b50505060006200014b620006c060201b60201c565b905080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506000737a250d5630b4cf539739df2c5dacb4c659f2488d905062000216816001620006c860201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200029157600080fd5b505afa158015620002a6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002cc919062000d0e565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200032f57600080fd5b505afa15801562000344573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200036a919062000d0e565b6040518363ffffffff1660e01b81526004016200038992919062000d51565b602060405180830381600087803b158015620003a457600080fd5b505af1158015620003b9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003df919062000d0e565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250506200042760a0516001620006c860201b60201c565b6200043c60a0516001620007c560201b60201c565b600080600490506000600190506000806004905060006001905060006004905060008060019050600069152d02c7e14af68000009050606460038262000483919062000db7565b6200048f919062000e47565b6008819055506064600382620004a6919062000db7565b620004b2919062000e47565b600a81905550612710600a82620004ca919062000db7565b620004d6919062000e47565b60098190555089601081905550886011819055508760128190555060125460115460105462000506919062000e7f565b62000512919062000e7f565b600f8190555086601481905550856015819055508460168190555060165460155460145462000542919062000e7f565b6200054e919062000e7f565b601381905550836017819055508260188190555081601981905550620005796200086660201b60201c565b600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620005c96200086660201b60201c565b600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200062b6200061d6200086660201b60201c565b60016200089060201b60201c565b6200063e3060016200089060201b60201c565b6200065361dead60016200089060201b60201c565b62000675620006676200086660201b60201c565b6001620006c860201b60201c565b62000688306001620006c860201b60201c565b6200069d61dead6001620006c860201b60201c565b620006af3382620009dd60201b60201c565b505050505050505050505062001110565b600033905090565b620006d8620006c060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146200076a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007619062000f3d565b60405180910390fd5b80601e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b80601f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b620008a0620006c060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161462000932576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009299062000f3d565b60405180910390fd5b80601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051620009d1919062000f7c565b60405180910390a25050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000a50576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000a479062000fe9565b60405180910390fd5b62000a646000838362000b8c60201b60201c565b62000a808160025462000b9160201b620026591790919060201c565b60028190555062000ade816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205462000b9160201b620026591790919060201c565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000b8091906200101c565b60405180910390a35050565b505050565b600080828462000ba2919062000e7f565b90508381101562000bea576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000be19062001089565b60405180910390fd5b8091505092915050565b82805462000c0290620010da565b90600052602060002090601f01602090048101928262000c26576000855562000c72565b82601f1062000c4157805160ff191683800117855562000c72565b8280016001018555821562000c72579182015b8281111562000c7157825182559160200191906001019062000c54565b5b50905062000c81919062000c85565b5090565b5b8082111562000ca057600081600090555060010162000c86565b5090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000cd68262000ca9565b9050919050565b62000ce88162000cc9565b811462000cf457600080fd5b50565b60008151905062000d088162000cdd565b92915050565b60006020828403121562000d275762000d2662000ca4565b5b600062000d378482850162000cf7565b91505092915050565b62000d4b8162000cc9565b82525050565b600060408201905062000d68600083018562000d40565b62000d77602083018462000d40565b9392505050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000dc48262000d7e565b915062000dd18362000d7e565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000e0d5762000e0c62000d88565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000e548262000d7e565b915062000e618362000d7e565b92508262000e745762000e7362000e18565b5b828204905092915050565b600062000e8c8262000d7e565b915062000e998362000d7e565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000ed15762000ed062000d88565b5b828201905092915050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600062000f2560208362000edc565b915062000f328262000eed565b602082019050919050565b6000602082019050818103600083015262000f588162000f16565b9050919050565b60008115159050919050565b62000f768162000f5f565b82525050565b600060208201905062000f93600083018462000f6b565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000fd1601f8362000edc565b915062000fde8262000f99565b602082019050919050565b60006020820190508181036000830152620010048162000fc2565b9050919050565b620010168162000d7e565b82525050565b60006020820190506200103360008301846200100b565b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600062001071601b8362000edc565b91506200107e8262001039565b602082019050919050565b60006020820190508181036000830152620010a48162001062565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620010f357607f821691505b602082108114156200110a5762001109620010ab565b5b50919050565b60805160a051615819620011756000396000818161147101528181611c6601528181612c42015261304b015260008181610e2901528181612bea01528181613fcf015281816140bf015281816140e60152818161418201526141a901526158196000f3fe60806040526004361061036f5760003560e01c80638da5cb5b116101c6578063b62496f5116100f7578063dd62ed3e11610095578063f11a24d31161006f578063f11a24d314610cad578063f2fde38b14610cd8578063f637434214610d01578063f8b45b0514610d2c57610376565b8063dd62ed3e14610c1a578063e2f4560514610c57578063e884f26014610c8257610376565b8063c18bc195116100d1578063c18bc19514610b70578063c876d0b914610b99578063c8c8ebe414610bc4578063d85ba06314610bef57610376565b8063b62496f514610adf578063bbc0c74214610b1c578063c024666814610b4757610376565b8063a0d82dc511610164578063a4d15b641161013e578063a4d15b6414610a23578063a7fc9e2114610a4e578063a9059cbb14610a79578063aacebbe314610ab657610376565b8063a0d82dc514610992578063a2657778146109bd578063a457c2d7146109e657610376565b806395d89b41116101a057806395d89b41146108e85780639a7a23d6146109135780639c3b4fdc1461093c5780639fccce321461096757610376565b80638da5cb5b146108695780639213691314610894578063924de9b7146108bf57610376565b806339509351116102a057806370a082311161023e5780637571336a116102185780637571336a146107d55780637bce5a04146107fe5780638095d564146108295780638a8c523c1461085257610376565b806370a0823114610756578063715018a614610793578063751039fc146107aa57610376565b80634fbee1931161027a5780634fbee19314610698578063541a43cf146106d55780636a486a8e146107005780636ddd17131461072b57610376565b8063395093511461060557806349bd5a5e146106425780634a62bb651461066d57610376565b80631f3fed8f1161030d57806323b872dd116102e757806323b872dd1461054757806327c8f835146105845780632bf3d42d146105af578063313ce567146105da57610376565b80631f3fed8f146104ca578063203e727e146104f557806322d3e2aa1461051e57610376565b80631694505e116103495780631694505e1461042057806318160ddd1461044b5780631816467f146104765780631a8145bb1461049f57610376565b806306fdde031461037b578063095ea7b3146103a657806310d5de53146103e357610376565b3661037657005b600080fd5b34801561038757600080fd5b50610390610d57565b60405161039d9190614363565b60405180910390f35b3480156103b257600080fd5b506103cd60048036038101906103c8919061441e565b610de9565b6040516103da9190614479565b60405180910390f35b3480156103ef57600080fd5b5061040a60048036038101906104059190614494565b610e07565b6040516104179190614479565b60405180910390f35b34801561042c57600080fd5b50610435610e27565b6040516104429190614520565b60405180910390f35b34801561045757600080fd5b50610460610e4b565b60405161046d919061454a565b60405180910390f35b34801561048257600080fd5b5061049d60048036038101906104989190614494565b610e55565b005b3480156104ab57600080fd5b506104b4611006565b6040516104c1919061454a565b60405180910390f35b3480156104d657600080fd5b506104df61100c565b6040516104ec919061454a565b60405180910390f35b34801561050157600080fd5b5061051c60048036038101906105179190614565565b611012565b005b34801561052a57600080fd5b5061054560048036038101906105409190614592565b61113c565b005b34801561055357600080fd5b5061056e6004803603810190610569919061461f565b6112ce565b60405161057b9190614479565b60405180910390f35b34801561059057600080fd5b506105996113a7565b6040516105a69190614681565b60405180910390f35b3480156105bb57600080fd5b506105c46113ad565b6040516105d1919061454a565b60405180910390f35b3480156105e657600080fd5b506105ef6113b3565b6040516105fc91906146b8565b60405180910390f35b34801561061157600080fd5b5061062c6004803603810190610627919061441e565b6113bc565b6040516106399190614479565b60405180910390f35b34801561064e57600080fd5b5061065761146f565b6040516106649190614681565b60405180910390f35b34801561067957600080fd5b50610682611493565b60405161068f9190614479565b60405180910390f35b3480156106a457600080fd5b506106bf60048036038101906106ba9190614494565b6114a6565b6040516106cc9190614479565b60405180910390f35b3480156106e157600080fd5b506106ea6114fc565b6040516106f7919061454a565b60405180910390f35b34801561070c57600080fd5b50610715611502565b604051610722919061454a565b60405180910390f35b34801561073757600080fd5b50610740611508565b60405161074d9190614479565b60405180910390f35b34801561076257600080fd5b5061077d60048036038101906107789190614494565b61151b565b60405161078a919061454a565b60405180910390f35b34801561079f57600080fd5b506107a8611563565b005b3480156107b657600080fd5b506107bf6116bb565b6040516107cc9190614479565b60405180910390f35b3480156107e157600080fd5b506107fc60048036038101906107f791906146ff565b611776565b005b34801561080a57600080fd5b50610813611868565b604051610820919061454a565b60405180910390f35b34801561083557600080fd5b50610850600480360381019061084b919061473f565b61186e565b005b34801561085e57600080fd5b50610867611988565b005b34801561087557600080fd5b5061087e611a57565b60405161088b9190614681565b60405180910390f35b3480156108a057600080fd5b506108a9611a81565b6040516108b6919061454a565b60405180910390f35b3480156108cb57600080fd5b506108e660048036038101906108e19190614792565b611a87565b005b3480156108f457600080fd5b506108fd611b3b565b60405161090a9190614363565b60405180910390f35b34801561091f57600080fd5b5061093a600480360381019061093591906146ff565b611bcd565b005b34801561094857600080fd5b50610951611d01565b60405161095e919061454a565b60405180910390f35b34801561097357600080fd5b5061097c611d07565b604051610989919061454a565b60405180910390f35b34801561099e57600080fd5b506109a7611d0d565b6040516109b4919061454a565b60405180910390f35b3480156109c957600080fd5b506109e460048036038101906109df9190614792565b611d13565b005b3480156109f257600080fd5b50610a0d6004803603810190610a08919061441e565b611dc7565b604051610a1a9190614479565b60405180910390f35b348015610a2f57600080fd5b50610a38611e94565b604051610a459190614479565b60405180910390f35b348015610a5a57600080fd5b50610a63611ea7565b604051610a70919061454a565b60405180910390f35b348015610a8557600080fd5b50610aa06004803603810190610a9b919061441e565b611ead565b604051610aad9190614479565b60405180910390f35b348015610ac257600080fd5b50610add6004803603810190610ad89190614494565b611ecb565b005b348015610aeb57600080fd5b50610b066004803603810190610b019190614494565b61207c565b604051610b139190614479565b60405180910390f35b348015610b2857600080fd5b50610b3161209c565b604051610b3e9190614479565b60405180910390f35b348015610b5357600080fd5b50610b6e6004803603810190610b6991906146ff565b6120af565b005b348015610b7c57600080fd5b50610b976004803603810190610b929190614565565b6121ef565b005b348015610ba557600080fd5b50610bae612319565b604051610bbb9190614479565b60405180910390f35b348015610bd057600080fd5b50610bd961232c565b604051610be6919061454a565b60405180910390f35b348015610bfb57600080fd5b50610c04612332565b604051610c11919061454a565b60405180910390f35b348015610c2657600080fd5b50610c416004803603810190610c3c91906147bf565b612338565b604051610c4e919061454a565b60405180910390f35b348015610c6357600080fd5b50610c6c6123bf565b604051610c79919061454a565b60405180910390f35b348015610c8e57600080fd5b50610c976123c5565b604051610ca49190614479565b60405180910390f35b348015610cb957600080fd5b50610cc2612480565b604051610ccf919061454a565b60405180910390f35b348015610ce457600080fd5b50610cff6004803603810190610cfa9190614494565b612486565b005b348015610d0d57600080fd5b50610d1661264d565b604051610d23919061454a565b60405180910390f35b348015610d3857600080fd5b50610d41612653565b604051610d4e919061454a565b60405180910390f35b606060038054610d669061482e565b80601f0160208091040260200160405190810160405280929190818152602001828054610d929061482e565b8015610ddf5780601f10610db457610100808354040283529160200191610ddf565b820191906000526020600020905b815481529060010190602001808311610dc257829003601f168201915b5050505050905090565b6000610dfd610df66126b7565b84846126bf565b6001905092915050565b601e6020528060005260406000206000915054906101000a900460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600254905090565b610e5d6126b7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610eec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ee3906148ac565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f90b8024c4923d3873ff5b9fcb43d0360d4b9217fa41225d07ba379993552e74360405160405180910390a380600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610fd6600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016120af565b611003600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001611776565b50565b601b5481565b601a5481565b61101a6126b7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a0906148ac565b60405180910390fd5b670de0b6b3a76400006103e860056110bf610e4b565b6110c991906148fb565b6110d39190614984565b6110dd9190614984565b81101561111f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111690614a27565b60405180910390fd5b670de0b6b3a76400008161113391906148fb565b60088190555050565b6111446126b7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ca906148ac565b60405180910390fd5b8560148190555084601581905550836016819055508260178190555081601881905550806019819055506016546015546014546112109190614a47565b61121a9190614a47565b60138190555060146013541115611266576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125d90614b0f565b60405180910390fd5b60008184846112759190614a47565b61127f9190614a47565b905060148111156112c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112bc90614ba1565b60405180910390fd5b50505050505050565b60006112db84848461288a565b61139c846112e76126b7565b6113978560405180606001604052806028815260200161579760289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061134d6126b7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461379b9092919063ffffffff16565b6126bf565b600190509392505050565b61dead81565b60185481565b60006012905090565b60006114656113c96126b7565b8461146085600160006113da6126b7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461265990919063ffffffff16565b6126bf565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600b60009054906101000a900460ff1681565b6000601d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60175481565b60135481565b600b60029054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61156b6126b7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115f1906148ac565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60006116c56126b7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611754576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161174b906148ac565b60405180910390fd5b6000600b60006101000a81548160ff0219169083151502179055506001905090565b61177e6126b7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461180d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611804906148ac565b60405180910390fd5b80601e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60105481565b6118766126b7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611905576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118fc906148ac565b60405180910390fd5b82601081905550816011819055508060128190555060125460115460105461192d9190614a47565b6119379190614a47565b600f819055506014600f541115611983576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161197a90614c33565b60405180910390fd5b505050565b6119906126b7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a16906148ac565b60405180910390fd5b6001600b60016101000a81548160ff0219169083151502179055506001600b60026101000a81548160ff021916908315150217905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60145481565b611a8f6126b7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b15906148ac565b60405180910390fd5b80600b60026101000a81548160ff02191690831515021790555050565b606060048054611b4a9061482e565b80601f0160208091040260200160405190810160405280929190818152602001828054611b769061482e565b8015611bc35780601f10611b9857610100808354040283529160200191611bc3565b820191906000526020600020905b815481529060010190602001808311611ba657829003601f168201915b5050505050905090565b611bd56126b7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c64576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c5b906148ac565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611cf3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cea90614cc5565b60405180910390fd5b611cfd82826137ff565b5050565b60125481565b601c5481565b60165481565b611d1b6126b7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611daa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611da1906148ac565b60405180910390fd5b80600b60036101000a81548160ff02191690831515021790555050565b6000611e8a611dd46126b7565b84611e85856040518060600160405280602581526020016157bf6025913960016000611dfe6126b7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461379b9092919063ffffffff16565b6126bf565b6001905092915050565b600b60039054906101000a900460ff1681565b60195481565b6000611ec1611eba6126b7565b848461288a565b6001905092915050565b611ed36126b7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f59906148ac565b60405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567460405160405180910390a380600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061204c600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016120af565b612079600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001611776565b50565b601f6020528060005260406000206000915054906101000a900460ff1681565b600b60019054906101000a900460ff1681565b6120b76126b7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612146576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161213d906148ac565b60405180910390fd5b80601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516121e39190614479565b60405180910390a25050565b6121f76126b7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612286576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161227d906148ac565b60405180910390fd5b670de0b6b3a76400006103e8600561229c610e4b565b6122a691906148fb565b6122b09190614984565b6122ba9190614984565b8110156122fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122f390614d57565b60405180910390fd5b670de0b6b3a76400008161231091906148fb565b600a8190555050565b600e60009054906101000a900460ff1681565b60085481565b600f5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60095481565b60006123cf6126b7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461245e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612455906148ac565b60405180910390fd5b6000600e60006101000a81548160ff0219169083151502179055506001905090565b60115481565b61248e6126b7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461251d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612514906148ac565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561258d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161258490614de9565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60155481565b600a5481565b60008082846126689190614a47565b9050838110156126ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126a490614e55565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561272f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161272690614ee7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561279f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161279690614f79565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161287d919061454a565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156128fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128f19061500b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561296a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129619061509d565b60405180910390fd5b60008114156129845761297f838360006138a0565b613796565b600b60009054906101000a900460ff1615613047576129a1611a57565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612a0f57506129df611a57565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612a485750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612a82575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612a9b5750600560149054906101000a900460ff16155b1561304657600b60019054906101000a900460ff16612b9557601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612b555750601d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612b94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b8b90615109565b60405180910390fd5b5b600e60009054906101000a900460ff1615612d5d57612bb2611a57565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015612c3957507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612c9157507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612d5c5743600c60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410612d17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d0e906151c1565b60405180910390fd5b43600c60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b601f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612e005750601e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612ea757600854811115612e4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e4190615253565b60405180910390fd5b600a54612e568361151b565b82612e619190614a47565b1115612ea2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e99906152bf565b60405180910390fd5b613045565b601f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612f4a5750601e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612f9957600854811115612f94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f8b90615351565b60405180910390fd5b613044565b601e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661304357600a54612ff68361151b565b826130019190614a47565b1115613042576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613039906152bf565b60405180910390fd5b5b5b5b5b5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16149050801580156130b45750600b60039054906101000a900460ff165b156131df576000600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541415801561315657504262015180600d60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546131539190614a47565b10155b1561319e576017546015819055506018546014819055506019546016819055506016546015546014546131899190614a47565b6131939190614a47565b6013819055506131da565b6004601581905550600060148190555060016016819055506016546015546014546131c99190614a47565b6131d39190614a47565b6013819055505b6132bd565b6000600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054141561326c5742600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600b60039054906101000a900460ff166132bc576004601581905550600060148190555060016016819055506016546015546014546132ab9190614a47565b6132b59190614a47565b6013819055505b5b60006132c83061151b565b9050600060095482101590508080156132ed5750600b60029054906101000a900460ff165b80156133065750600560149054906101000a900460ff16155b801561335c5750601f60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156133b25750601d60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156134085750601d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561344c576001600560146101000a81548160ff021916908315150217905550613430613b35565b6000600560146101000a81548160ff0219169083151502179055505b6000600560149054906101000a900460ff16159050601d60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806135025750601d60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561350c57600090505b6000811561378557601f60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561356f57506000601354115b1561363c5761359c606461358e60135489613e1c90919063ffffffff16565b613e9790919063ffffffff16565b9050601354601554826135af91906148fb565b6135b99190614984565b601b60008282546135ca9190614a47565b92505081905550601354601654826135e291906148fb565b6135ec9190614984565b601c60008282546135fd9190614a47565b925050819055506013546014548261361591906148fb565b61361f9190614984565b601a60008282546136309190614a47565b92505081905550613761565b601f60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561369757506000600f54115b15613760576136c460646136b6600f5489613e1c90919063ffffffff16565b613e9790919063ffffffff16565b9050600f54601154826136d791906148fb565b6136e19190614984565b601b60008282546136f29190614a47565b92505081905550600f546012548261370a91906148fb565b6137149190614984565b601c60008282546137259190614a47565b92505081905550600f546010548261373d91906148fb565b6137479190614984565b601a60008282546137589190614a47565b925050819055505b5b6000811115613776576137758830836138a0565b5b80866137829190615371565b95505b6137908888886138a0565b50505050505b505050565b60008383111582906137e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016137da9190614363565b60405180910390fd5b50600083856137f29190615371565b9050809150509392505050565b80601f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613910576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016139079061500b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613980576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016139779061509d565b60405180910390fd5b61398b838383613ee1565b6139f681604051806060016040528060268152602001615771602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461379b9092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613a89816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461265990919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613b28919061454a565b60405180910390a3505050565b6000613b403061151b565b90506000601c54601a54601b54613b579190614a47565b613b619190614a47565b9050600080831480613b735750600082145b15613b8057505050613e1a565b6014600954613b8f91906148fb565b831115613ba8576014600954613ba591906148fb565b92505b6000600283601b5486613bbb91906148fb565b613bc59190614984565b613bcf9190614984565b90506000613be68286613ee690919063ffffffff16565b90506000479050613bf682613f30565b6000613c0b8247613ee690919063ffffffff16565b90506000613c3687613c28601a5485613e1c90919063ffffffff16565b613e9790919063ffffffff16565b90506000613c6188613c53601c5486613e1c90919063ffffffff16565b613e9790919063ffffffff16565b90506000818385613c729190615371565b613c7c9190615371565b90506000601b819055506000601a819055506000601c81905550600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051613cdc906153d6565b60006040518083038185875af1925050503d8060008114613d19576040519150601f19603f3d011682016040523d82523d6000602084013e613d1e565b606091505b505080985050600087118015613d345750600081115b15613d8157613d43878261417c565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618682601b54604051613d78939291906153eb565b60405180910390a15b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051613dc7906153d6565b60006040518083038185875af1925050503d8060008114613e04576040519150601f19603f3d011682016040523d82523d6000602084013e613e09565b606091505b505080985050505050505050505050505b565b600080831415613e2f5760009050613e91565b60008284613e3d91906148fb565b9050828482613e4c9190614984565b14613e8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613e8390615494565b60405180910390fd5b809150505b92915050565b6000613ed983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250614267565b905092915050565b505050565b6000613f2883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061379b565b905092915050565b6000600267ffffffffffffffff811115613f4d57613f4c6154b4565b5b604051908082528060200260200182016040528015613f7b5781602001602082028036833780820191505090505b5090503081600081518110613f9357613f926154e3565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561403357600080fd5b505afa158015614047573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061406b9190615527565b8160018151811061407f5761407e6154e3565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506140e4307f0000000000000000000000000000000000000000000000000000000000000000846126bf565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161414695949392919061564d565b600060405180830381600087803b15801561416057600080fd5b505af1158015614174573d6000803e3d6000fd5b505050505050565b6141a7307f0000000000000000000000000000000000000000000000000000000000000000846126bf565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008061dead426040518863ffffffff1660e01b815260040161420e969594939291906156a7565b6060604051808303818588803b15801561422757600080fd5b505af115801561423b573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190614260919061571d565b5050505050565b600080831182906142ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016142a59190614363565b60405180910390fd5b50600083856142bd9190614984565b9050809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156143045780820151818401526020810190506142e9565b83811115614313576000848401525b50505050565b6000601f19601f8301169050919050565b6000614335826142ca565b61433f81856142d5565b935061434f8185602086016142e6565b61435881614319565b840191505092915050565b6000602082019050818103600083015261437d818461432a565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006143b58261438a565b9050919050565b6143c5816143aa565b81146143d057600080fd5b50565b6000813590506143e2816143bc565b92915050565b6000819050919050565b6143fb816143e8565b811461440657600080fd5b50565b600081359050614418816143f2565b92915050565b6000806040838503121561443557614434614385565b5b6000614443858286016143d3565b925050602061445485828601614409565b9150509250929050565b60008115159050919050565b6144738161445e565b82525050565b600060208201905061448e600083018461446a565b92915050565b6000602082840312156144aa576144a9614385565b5b60006144b8848285016143d3565b91505092915050565b6000819050919050565b60006144e66144e16144dc8461438a565b6144c1565b61438a565b9050919050565b60006144f8826144cb565b9050919050565b600061450a826144ed565b9050919050565b61451a816144ff565b82525050565b60006020820190506145356000830184614511565b92915050565b614544816143e8565b82525050565b600060208201905061455f600083018461453b565b92915050565b60006020828403121561457b5761457a614385565b5b600061458984828501614409565b91505092915050565b60008060008060008060c087890312156145af576145ae614385565b5b60006145bd89828a01614409565b96505060206145ce89828a01614409565b95505060406145df89828a01614409565b94505060606145f089828a01614409565b935050608061460189828a01614409565b92505060a061461289828a01614409565b9150509295509295509295565b60008060006060848603121561463857614637614385565b5b6000614646868287016143d3565b9350506020614657868287016143d3565b925050604061466886828701614409565b9150509250925092565b61467b816143aa565b82525050565b60006020820190506146966000830184614672565b92915050565b600060ff82169050919050565b6146b28161469c565b82525050565b60006020820190506146cd60008301846146a9565b92915050565b6146dc8161445e565b81146146e757600080fd5b50565b6000813590506146f9816146d3565b92915050565b6000806040838503121561471657614715614385565b5b6000614724858286016143d3565b9250506020614735858286016146ea565b9150509250929050565b60008060006060848603121561475857614757614385565b5b600061476686828701614409565b935050602061477786828701614409565b925050604061478886828701614409565b9150509250925092565b6000602082840312156147a8576147a7614385565b5b60006147b6848285016146ea565b91505092915050565b600080604083850312156147d6576147d5614385565b5b60006147e4858286016143d3565b92505060206147f5858286016143d3565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061484657607f821691505b6020821081141561485a576148596147ff565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006148966020836142d5565b91506148a182614860565b602082019050919050565b600060208201905081810360008301526148c581614889565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000614906826143e8565b9150614911836143e8565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561494a576149496148cc565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061498f826143e8565b915061499a836143e8565b9250826149aa576149a9614955565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060008201527f6c6f776572207468616e20302e35250000000000000000000000000000000000602082015250565b6000614a11602f836142d5565b9150614a1c826149b5565b604082019050919050565b60006020820190508181036000830152614a4081614a04565b9050919050565b6000614a52826143e8565b9150614a5d836143e8565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614a9257614a916148cc565b5b828201905092915050565b7f4d757374206b6565702073656c6c206665657320617420323025206f72206c6560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614af96022836142d5565b9150614b0482614a9d565b604082019050919050565b60006020820190508181036000830152614b2881614aec565b9050919050565b7f4d757374206b656570206561726c792073656c6c20666565206174203230252060008201527f6f72206c65737300000000000000000000000000000000000000000000000000602082015250565b6000614b8b6027836142d5565b9150614b9682614b2f565b604082019050919050565b60006020820190508181036000830152614bba81614b7e565b9050919050565b7f4d757374206b65657020627579206665657320617420323025206f72206c657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b6000614c1d6021836142d5565b9150614c2882614bc1565b604082019050919050565b60006020820190508181036000830152614c4c81614c10565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b6000614caf6039836142d5565b9150614cba82614c53565b604082019050919050565b60006020820190508181036000830152614cde81614ca2565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b6000614d416024836142d5565b9150614d4c82614ce5565b604082019050919050565b60006020820190508181036000830152614d7081614d34565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614dd36026836142d5565b9150614dde82614d77565b604082019050919050565b60006020820190508181036000830152614e0281614dc6565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000614e3f601b836142d5565b9150614e4a82614e09565b602082019050919050565b60006020820190508181036000830152614e6e81614e32565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614ed16024836142d5565b9150614edc82614e75565b604082019050919050565b60006020820190508181036000830152614f0081614ec4565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614f636022836142d5565b9150614f6e82614f07565b604082019050919050565b60006020820190508181036000830152614f9281614f56565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614ff56025836142d5565b915061500082614f99565b604082019050919050565b6000602082019050818103600083015261502481614fe8565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006150876023836142d5565b91506150928261502b565b604082019050919050565b600060208201905081810360008301526150b68161507a565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b60006150f36016836142d5565b91506150fe826150bd565b602082019050919050565b60006020820190508181036000830152615122816150e6565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b60006151ab6049836142d5565b91506151b682615129565b606082019050919050565b600060208201905081810360008301526151da8161519e565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b600061523d6035836142d5565b9150615248826151e1565b604082019050919050565b6000602082019050818103600083015261526c81615230565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b60006152a96013836142d5565b91506152b482615273565b602082019050919050565b600060208201905081810360008301526152d88161529c565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b600061533b6036836142d5565b9150615346826152df565b604082019050919050565b6000602082019050818103600083015261536a8161532e565b9050919050565b600061537c826143e8565b9150615387836143e8565b92508282101561539a576153996148cc565b5b828203905092915050565b600081905092915050565b50565b60006153c06000836153a5565b91506153cb826153b0565b600082019050919050565b60006153e1826153b3565b9150819050919050565b6000606082019050615400600083018661453b565b61540d602083018561453b565b61541a604083018461453b565b949350505050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b600061547e6021836142d5565b915061548982615422565b604082019050919050565b600060208201905081810360008301526154ad81615471565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050615521816143bc565b92915050565b60006020828403121561553d5761553c614385565b5b600061554b84828501615512565b91505092915050565b6000819050919050565b600061557961557461556f84615554565b6144c1565b6143e8565b9050919050565b6155898161555e565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6155c4816143aa565b82525050565b60006155d683836155bb565b60208301905092915050565b6000602082019050919050565b60006155fa8261558f565b615604818561559a565b935061560f836155ab565b8060005b8381101561564057815161562788826155ca565b9750615632836155e2565b925050600181019050615613565b5085935050505092915050565b600060a082019050615662600083018861453b565b61566f6020830187615580565b818103604083015261568181866155ef565b90506156906060830185614672565b61569d608083018461453b565b9695505050505050565b600060c0820190506156bc6000830189614672565b6156c9602083018861453b565b6156d66040830187615580565b6156e36060830186615580565b6156f06080830185614672565b6156fd60a083018461453b565b979650505050505050565b600081519050615717816143f2565b92915050565b60008060006060848603121561573657615735614385565b5b600061574486828701615708565b935050602061575586828701615708565b925050604061576686828701615708565b915050925092509256fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212205596d0e8145b27d6fcd2d03ce742bdac34638ce7c29ee6b58540ca73bf5011cd64736f6c63430008090033
Deployed Bytecode
0x60806040526004361061036f5760003560e01c80638da5cb5b116101c6578063b62496f5116100f7578063dd62ed3e11610095578063f11a24d31161006f578063f11a24d314610cad578063f2fde38b14610cd8578063f637434214610d01578063f8b45b0514610d2c57610376565b8063dd62ed3e14610c1a578063e2f4560514610c57578063e884f26014610c8257610376565b8063c18bc195116100d1578063c18bc19514610b70578063c876d0b914610b99578063c8c8ebe414610bc4578063d85ba06314610bef57610376565b8063b62496f514610adf578063bbc0c74214610b1c578063c024666814610b4757610376565b8063a0d82dc511610164578063a4d15b641161013e578063a4d15b6414610a23578063a7fc9e2114610a4e578063a9059cbb14610a79578063aacebbe314610ab657610376565b8063a0d82dc514610992578063a2657778146109bd578063a457c2d7146109e657610376565b806395d89b41116101a057806395d89b41146108e85780639a7a23d6146109135780639c3b4fdc1461093c5780639fccce321461096757610376565b80638da5cb5b146108695780639213691314610894578063924de9b7146108bf57610376565b806339509351116102a057806370a082311161023e5780637571336a116102185780637571336a146107d55780637bce5a04146107fe5780638095d564146108295780638a8c523c1461085257610376565b806370a0823114610756578063715018a614610793578063751039fc146107aa57610376565b80634fbee1931161027a5780634fbee19314610698578063541a43cf146106d55780636a486a8e146107005780636ddd17131461072b57610376565b8063395093511461060557806349bd5a5e146106425780634a62bb651461066d57610376565b80631f3fed8f1161030d57806323b872dd116102e757806323b872dd1461054757806327c8f835146105845780632bf3d42d146105af578063313ce567146105da57610376565b80631f3fed8f146104ca578063203e727e146104f557806322d3e2aa1461051e57610376565b80631694505e116103495780631694505e1461042057806318160ddd1461044b5780631816467f146104765780631a8145bb1461049f57610376565b806306fdde031461037b578063095ea7b3146103a657806310d5de53146103e357610376565b3661037657005b600080fd5b34801561038757600080fd5b50610390610d57565b60405161039d9190614363565b60405180910390f35b3480156103b257600080fd5b506103cd60048036038101906103c8919061441e565b610de9565b6040516103da9190614479565b60405180910390f35b3480156103ef57600080fd5b5061040a60048036038101906104059190614494565b610e07565b6040516104179190614479565b60405180910390f35b34801561042c57600080fd5b50610435610e27565b6040516104429190614520565b60405180910390f35b34801561045757600080fd5b50610460610e4b565b60405161046d919061454a565b60405180910390f35b34801561048257600080fd5b5061049d60048036038101906104989190614494565b610e55565b005b3480156104ab57600080fd5b506104b4611006565b6040516104c1919061454a565b60405180910390f35b3480156104d657600080fd5b506104df61100c565b6040516104ec919061454a565b60405180910390f35b34801561050157600080fd5b5061051c60048036038101906105179190614565565b611012565b005b34801561052a57600080fd5b5061054560048036038101906105409190614592565b61113c565b005b34801561055357600080fd5b5061056e6004803603810190610569919061461f565b6112ce565b60405161057b9190614479565b60405180910390f35b34801561059057600080fd5b506105996113a7565b6040516105a69190614681565b60405180910390f35b3480156105bb57600080fd5b506105c46113ad565b6040516105d1919061454a565b60405180910390f35b3480156105e657600080fd5b506105ef6113b3565b6040516105fc91906146b8565b60405180910390f35b34801561061157600080fd5b5061062c6004803603810190610627919061441e565b6113bc565b6040516106399190614479565b60405180910390f35b34801561064e57600080fd5b5061065761146f565b6040516106649190614681565b60405180910390f35b34801561067957600080fd5b50610682611493565b60405161068f9190614479565b60405180910390f35b3480156106a457600080fd5b506106bf60048036038101906106ba9190614494565b6114a6565b6040516106cc9190614479565b60405180910390f35b3480156106e157600080fd5b506106ea6114fc565b6040516106f7919061454a565b60405180910390f35b34801561070c57600080fd5b50610715611502565b604051610722919061454a565b60405180910390f35b34801561073757600080fd5b50610740611508565b60405161074d9190614479565b60405180910390f35b34801561076257600080fd5b5061077d60048036038101906107789190614494565b61151b565b60405161078a919061454a565b60405180910390f35b34801561079f57600080fd5b506107a8611563565b005b3480156107b657600080fd5b506107bf6116bb565b6040516107cc9190614479565b60405180910390f35b3480156107e157600080fd5b506107fc60048036038101906107f791906146ff565b611776565b005b34801561080a57600080fd5b50610813611868565b604051610820919061454a565b60405180910390f35b34801561083557600080fd5b50610850600480360381019061084b919061473f565b61186e565b005b34801561085e57600080fd5b50610867611988565b005b34801561087557600080fd5b5061087e611a57565b60405161088b9190614681565b60405180910390f35b3480156108a057600080fd5b506108a9611a81565b6040516108b6919061454a565b60405180910390f35b3480156108cb57600080fd5b506108e660048036038101906108e19190614792565b611a87565b005b3480156108f457600080fd5b506108fd611b3b565b60405161090a9190614363565b60405180910390f35b34801561091f57600080fd5b5061093a600480360381019061093591906146ff565b611bcd565b005b34801561094857600080fd5b50610951611d01565b60405161095e919061454a565b60405180910390f35b34801561097357600080fd5b5061097c611d07565b604051610989919061454a565b60405180910390f35b34801561099e57600080fd5b506109a7611d0d565b6040516109b4919061454a565b60405180910390f35b3480156109c957600080fd5b506109e460048036038101906109df9190614792565b611d13565b005b3480156109f257600080fd5b50610a0d6004803603810190610a08919061441e565b611dc7565b604051610a1a9190614479565b60405180910390f35b348015610a2f57600080fd5b50610a38611e94565b604051610a459190614479565b60405180910390f35b348015610a5a57600080fd5b50610a63611ea7565b604051610a70919061454a565b60405180910390f35b348015610a8557600080fd5b50610aa06004803603810190610a9b919061441e565b611ead565b604051610aad9190614479565b60405180910390f35b348015610ac257600080fd5b50610add6004803603810190610ad89190614494565b611ecb565b005b348015610aeb57600080fd5b50610b066004803603810190610b019190614494565b61207c565b604051610b139190614479565b60405180910390f35b348015610b2857600080fd5b50610b3161209c565b604051610b3e9190614479565b60405180910390f35b348015610b5357600080fd5b50610b6e6004803603810190610b6991906146ff565b6120af565b005b348015610b7c57600080fd5b50610b976004803603810190610b929190614565565b6121ef565b005b348015610ba557600080fd5b50610bae612319565b604051610bbb9190614479565b60405180910390f35b348015610bd057600080fd5b50610bd961232c565b604051610be6919061454a565b60405180910390f35b348015610bfb57600080fd5b50610c04612332565b604051610c11919061454a565b60405180910390f35b348015610c2657600080fd5b50610c416004803603810190610c3c91906147bf565b612338565b604051610c4e919061454a565b60405180910390f35b348015610c6357600080fd5b50610c6c6123bf565b604051610c79919061454a565b60405180910390f35b348015610c8e57600080fd5b50610c976123c5565b604051610ca49190614479565b60405180910390f35b348015610cb957600080fd5b50610cc2612480565b604051610ccf919061454a565b60405180910390f35b348015610ce457600080fd5b50610cff6004803603810190610cfa9190614494565b612486565b005b348015610d0d57600080fd5b50610d1661264d565b604051610d23919061454a565b60405180910390f35b348015610d3857600080fd5b50610d41612653565b604051610d4e919061454a565b60405180910390f35b606060038054610d669061482e565b80601f0160208091040260200160405190810160405280929190818152602001828054610d929061482e565b8015610ddf5780601f10610db457610100808354040283529160200191610ddf565b820191906000526020600020905b815481529060010190602001808311610dc257829003601f168201915b5050505050905090565b6000610dfd610df66126b7565b84846126bf565b6001905092915050565b601e6020528060005260406000206000915054906101000a900460ff1681565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600254905090565b610e5d6126b7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610eec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ee3906148ac565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f90b8024c4923d3873ff5b9fcb43d0360d4b9217fa41225d07ba379993552e74360405160405180910390a380600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610fd6600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016120af565b611003600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001611776565b50565b601b5481565b601a5481565b61101a6126b7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a0906148ac565b60405180910390fd5b670de0b6b3a76400006103e860056110bf610e4b565b6110c991906148fb565b6110d39190614984565b6110dd9190614984565b81101561111f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111690614a27565b60405180910390fd5b670de0b6b3a76400008161113391906148fb565b60088190555050565b6111446126b7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ca906148ac565b60405180910390fd5b8560148190555084601581905550836016819055508260178190555081601881905550806019819055506016546015546014546112109190614a47565b61121a9190614a47565b60138190555060146013541115611266576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125d90614b0f565b60405180910390fd5b60008184846112759190614a47565b61127f9190614a47565b905060148111156112c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112bc90614ba1565b60405180910390fd5b50505050505050565b60006112db84848461288a565b61139c846112e76126b7565b6113978560405180606001604052806028815260200161579760289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061134d6126b7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461379b9092919063ffffffff16565b6126bf565b600190509392505050565b61dead81565b60185481565b60006012905090565b60006114656113c96126b7565b8461146085600160006113da6126b7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461265990919063ffffffff16565b6126bf565b6001905092915050565b7f00000000000000000000000095a988f250c99e544648654a62e96e108cff8a9281565b600b60009054906101000a900460ff1681565b6000601d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60175481565b60135481565b600b60029054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61156b6126b7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115f1906148ac565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60006116c56126b7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611754576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161174b906148ac565b60405180910390fd5b6000600b60006101000a81548160ff0219169083151502179055506001905090565b61177e6126b7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461180d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611804906148ac565b60405180910390fd5b80601e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60105481565b6118766126b7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611905576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118fc906148ac565b60405180910390fd5b82601081905550816011819055508060128190555060125460115460105461192d9190614a47565b6119379190614a47565b600f819055506014600f541115611983576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161197a90614c33565b60405180910390fd5b505050565b6119906126b7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a16906148ac565b60405180910390fd5b6001600b60016101000a81548160ff0219169083151502179055506001600b60026101000a81548160ff021916908315150217905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60145481565b611a8f6126b7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b15906148ac565b60405180910390fd5b80600b60026101000a81548160ff02191690831515021790555050565b606060048054611b4a9061482e565b80601f0160208091040260200160405190810160405280929190818152602001828054611b769061482e565b8015611bc35780601f10611b9857610100808354040283529160200191611bc3565b820191906000526020600020905b815481529060010190602001808311611ba657829003601f168201915b5050505050905090565b611bd56126b7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c64576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c5b906148ac565b60405180910390fd5b7f00000000000000000000000095a988f250c99e544648654a62e96e108cff8a9273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611cf3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cea90614cc5565b60405180910390fd5b611cfd82826137ff565b5050565b60125481565b601c5481565b60165481565b611d1b6126b7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611daa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611da1906148ac565b60405180910390fd5b80600b60036101000a81548160ff02191690831515021790555050565b6000611e8a611dd46126b7565b84611e85856040518060600160405280602581526020016157bf6025913960016000611dfe6126b7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461379b9092919063ffffffff16565b6126bf565b6001905092915050565b600b60039054906101000a900460ff1681565b60195481565b6000611ec1611eba6126b7565b848461288a565b6001905092915050565b611ed36126b7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f59906148ac565b60405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567460405160405180910390a380600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061204c600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016120af565b612079600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001611776565b50565b601f6020528060005260406000206000915054906101000a900460ff1681565b600b60019054906101000a900460ff1681565b6120b76126b7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612146576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161213d906148ac565b60405180910390fd5b80601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516121e39190614479565b60405180910390a25050565b6121f76126b7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612286576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161227d906148ac565b60405180910390fd5b670de0b6b3a76400006103e8600561229c610e4b565b6122a691906148fb565b6122b09190614984565b6122ba9190614984565b8110156122fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122f390614d57565b60405180910390fd5b670de0b6b3a76400008161231091906148fb565b600a8190555050565b600e60009054906101000a900460ff1681565b60085481565b600f5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60095481565b60006123cf6126b7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461245e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612455906148ac565b60405180910390fd5b6000600e60006101000a81548160ff0219169083151502179055506001905090565b60115481565b61248e6126b7565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461251d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612514906148ac565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561258d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161258490614de9565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60155481565b600a5481565b60008082846126689190614a47565b9050838110156126ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126a490614e55565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561272f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161272690614ee7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561279f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161279690614f79565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161287d919061454a565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156128fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128f19061500b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561296a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129619061509d565b60405180910390fd5b60008114156129845761297f838360006138a0565b613796565b600b60009054906101000a900460ff1615613047576129a1611a57565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612a0f57506129df611a57565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612a485750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612a82575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612a9b5750600560149054906101000a900460ff16155b1561304657600b60019054906101000a900460ff16612b9557601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612b555750601d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612b94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b8b90615109565b60405180910390fd5b5b600e60009054906101000a900460ff1615612d5d57612bb2611a57565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015612c3957507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612c9157507f00000000000000000000000095a988f250c99e544648654a62e96e108cff8a9273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612d5c5743600c60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410612d17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d0e906151c1565b60405180910390fd5b43600c60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b601f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612e005750601e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612ea757600854811115612e4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e4190615253565b60405180910390fd5b600a54612e568361151b565b82612e619190614a47565b1115612ea2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e99906152bf565b60405180910390fd5b613045565b601f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612f4a5750601e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612f9957600854811115612f94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f8b90615351565b60405180910390fd5b613044565b601e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661304357600a54612ff68361151b565b826130019190614a47565b1115613042576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613039906152bf565b60405180910390fd5b5b5b5b5b5b60007f00000000000000000000000095a988f250c99e544648654a62e96e108cff8a9273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16149050801580156130b45750600b60039054906101000a900460ff165b156131df576000600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541415801561315657504262015180600d60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546131539190614a47565b10155b1561319e576017546015819055506018546014819055506019546016819055506016546015546014546131899190614a47565b6131939190614a47565b6013819055506131da565b6004601581905550600060148190555060016016819055506016546015546014546131c99190614a47565b6131d39190614a47565b6013819055505b6132bd565b6000600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054141561326c5742600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600b60039054906101000a900460ff166132bc576004601581905550600060148190555060016016819055506016546015546014546132ab9190614a47565b6132b59190614a47565b6013819055505b5b60006132c83061151b565b9050600060095482101590508080156132ed5750600b60029054906101000a900460ff165b80156133065750600560149054906101000a900460ff16155b801561335c5750601f60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156133b25750601d60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156134085750601d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561344c576001600560146101000a81548160ff021916908315150217905550613430613b35565b6000600560146101000a81548160ff0219169083151502179055505b6000600560149054906101000a900460ff16159050601d60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806135025750601d60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561350c57600090505b6000811561378557601f60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561356f57506000601354115b1561363c5761359c606461358e60135489613e1c90919063ffffffff16565b613e9790919063ffffffff16565b9050601354601554826135af91906148fb565b6135b99190614984565b601b60008282546135ca9190614a47565b92505081905550601354601654826135e291906148fb565b6135ec9190614984565b601c60008282546135fd9190614a47565b925050819055506013546014548261361591906148fb565b61361f9190614984565b601a60008282546136309190614a47565b92505081905550613761565b601f60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561369757506000600f54115b15613760576136c460646136b6600f5489613e1c90919063ffffffff16565b613e9790919063ffffffff16565b9050600f54601154826136d791906148fb565b6136e19190614984565b601b60008282546136f29190614a47565b92505081905550600f546012548261370a91906148fb565b6137149190614984565b601c60008282546137259190614a47565b92505081905550600f546010548261373d91906148fb565b6137479190614984565b601a60008282546137589190614a47565b925050819055505b5b6000811115613776576137758830836138a0565b5b80866137829190615371565b95505b6137908888886138a0565b50505050505b505050565b60008383111582906137e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016137da9190614363565b60405180910390fd5b50600083856137f29190615371565b9050809150509392505050565b80601f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613910576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016139079061500b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613980576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016139779061509d565b60405180910390fd5b61398b838383613ee1565b6139f681604051806060016040528060268152602001615771602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461379b9092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613a89816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461265990919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613b28919061454a565b60405180910390a3505050565b6000613b403061151b565b90506000601c54601a54601b54613b579190614a47565b613b619190614a47565b9050600080831480613b735750600082145b15613b8057505050613e1a565b6014600954613b8f91906148fb565b831115613ba8576014600954613ba591906148fb565b92505b6000600283601b5486613bbb91906148fb565b613bc59190614984565b613bcf9190614984565b90506000613be68286613ee690919063ffffffff16565b90506000479050613bf682613f30565b6000613c0b8247613ee690919063ffffffff16565b90506000613c3687613c28601a5485613e1c90919063ffffffff16565b613e9790919063ffffffff16565b90506000613c6188613c53601c5486613e1c90919063ffffffff16565b613e9790919063ffffffff16565b90506000818385613c729190615371565b613c7c9190615371565b90506000601b819055506000601a819055506000601c81905550600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051613cdc906153d6565b60006040518083038185875af1925050503d8060008114613d19576040519150601f19603f3d011682016040523d82523d6000602084013e613d1e565b606091505b505080985050600087118015613d345750600081115b15613d8157613d43878261417c565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618682601b54604051613d78939291906153eb565b60405180910390a15b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051613dc7906153d6565b60006040518083038185875af1925050503d8060008114613e04576040519150601f19603f3d011682016040523d82523d6000602084013e613e09565b606091505b505080985050505050505050505050505b565b600080831415613e2f5760009050613e91565b60008284613e3d91906148fb565b9050828482613e4c9190614984565b14613e8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613e8390615494565b60405180910390fd5b809150505b92915050565b6000613ed983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250614267565b905092915050565b505050565b6000613f2883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061379b565b905092915050565b6000600267ffffffffffffffff811115613f4d57613f4c6154b4565b5b604051908082528060200260200182016040528015613f7b5781602001602082028036833780820191505090505b5090503081600081518110613f9357613f926154e3565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561403357600080fd5b505afa158015614047573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061406b9190615527565b8160018151811061407f5761407e6154e3565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506140e4307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d846126bf565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161414695949392919061564d565b600060405180830381600087803b15801561416057600080fd5b505af1158015614174573d6000803e3d6000fd5b505050505050565b6141a7307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d846126bf565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008061dead426040518863ffffffff1660e01b815260040161420e969594939291906156a7565b6060604051808303818588803b15801561422757600080fd5b505af115801561423b573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190614260919061571d565b5050505050565b600080831182906142ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016142a59190614363565b60405180910390fd5b50600083856142bd9190614984565b9050809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156143045780820151818401526020810190506142e9565b83811115614313576000848401525b50505050565b6000601f19601f8301169050919050565b6000614335826142ca565b61433f81856142d5565b935061434f8185602086016142e6565b61435881614319565b840191505092915050565b6000602082019050818103600083015261437d818461432a565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006143b58261438a565b9050919050565b6143c5816143aa565b81146143d057600080fd5b50565b6000813590506143e2816143bc565b92915050565b6000819050919050565b6143fb816143e8565b811461440657600080fd5b50565b600081359050614418816143f2565b92915050565b6000806040838503121561443557614434614385565b5b6000614443858286016143d3565b925050602061445485828601614409565b9150509250929050565b60008115159050919050565b6144738161445e565b82525050565b600060208201905061448e600083018461446a565b92915050565b6000602082840312156144aa576144a9614385565b5b60006144b8848285016143d3565b91505092915050565b6000819050919050565b60006144e66144e16144dc8461438a565b6144c1565b61438a565b9050919050565b60006144f8826144cb565b9050919050565b600061450a826144ed565b9050919050565b61451a816144ff565b82525050565b60006020820190506145356000830184614511565b92915050565b614544816143e8565b82525050565b600060208201905061455f600083018461453b565b92915050565b60006020828403121561457b5761457a614385565b5b600061458984828501614409565b91505092915050565b60008060008060008060c087890312156145af576145ae614385565b5b60006145bd89828a01614409565b96505060206145ce89828a01614409565b95505060406145df89828a01614409565b94505060606145f089828a01614409565b935050608061460189828a01614409565b92505060a061461289828a01614409565b9150509295509295509295565b60008060006060848603121561463857614637614385565b5b6000614646868287016143d3565b9350506020614657868287016143d3565b925050604061466886828701614409565b9150509250925092565b61467b816143aa565b82525050565b60006020820190506146966000830184614672565b92915050565b600060ff82169050919050565b6146b28161469c565b82525050565b60006020820190506146cd60008301846146a9565b92915050565b6146dc8161445e565b81146146e757600080fd5b50565b6000813590506146f9816146d3565b92915050565b6000806040838503121561471657614715614385565b5b6000614724858286016143d3565b9250506020614735858286016146ea565b9150509250929050565b60008060006060848603121561475857614757614385565b5b600061476686828701614409565b935050602061477786828701614409565b925050604061478886828701614409565b9150509250925092565b6000602082840312156147a8576147a7614385565b5b60006147b6848285016146ea565b91505092915050565b600080604083850312156147d6576147d5614385565b5b60006147e4858286016143d3565b92505060206147f5858286016143d3565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061484657607f821691505b6020821081141561485a576148596147ff565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006148966020836142d5565b91506148a182614860565b602082019050919050565b600060208201905081810360008301526148c581614889565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000614906826143e8565b9150614911836143e8565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561494a576149496148cc565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061498f826143e8565b915061499a836143e8565b9250826149aa576149a9614955565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060008201527f6c6f776572207468616e20302e35250000000000000000000000000000000000602082015250565b6000614a11602f836142d5565b9150614a1c826149b5565b604082019050919050565b60006020820190508181036000830152614a4081614a04565b9050919050565b6000614a52826143e8565b9150614a5d836143e8565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614a9257614a916148cc565b5b828201905092915050565b7f4d757374206b6565702073656c6c206665657320617420323025206f72206c6560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614af96022836142d5565b9150614b0482614a9d565b604082019050919050565b60006020820190508181036000830152614b2881614aec565b9050919050565b7f4d757374206b656570206561726c792073656c6c20666565206174203230252060008201527f6f72206c65737300000000000000000000000000000000000000000000000000602082015250565b6000614b8b6027836142d5565b9150614b9682614b2f565b604082019050919050565b60006020820190508181036000830152614bba81614b7e565b9050919050565b7f4d757374206b65657020627579206665657320617420323025206f72206c657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b6000614c1d6021836142d5565b9150614c2882614bc1565b604082019050919050565b60006020820190508181036000830152614c4c81614c10565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b6000614caf6039836142d5565b9150614cba82614c53565b604082019050919050565b60006020820190508181036000830152614cde81614ca2565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b6000614d416024836142d5565b9150614d4c82614ce5565b604082019050919050565b60006020820190508181036000830152614d7081614d34565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614dd36026836142d5565b9150614dde82614d77565b604082019050919050565b60006020820190508181036000830152614e0281614dc6565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000614e3f601b836142d5565b9150614e4a82614e09565b602082019050919050565b60006020820190508181036000830152614e6e81614e32565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614ed16024836142d5565b9150614edc82614e75565b604082019050919050565b60006020820190508181036000830152614f0081614ec4565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614f636022836142d5565b9150614f6e82614f07565b604082019050919050565b60006020820190508181036000830152614f9281614f56565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614ff56025836142d5565b915061500082614f99565b604082019050919050565b6000602082019050818103600083015261502481614fe8565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006150876023836142d5565b91506150928261502b565b604082019050919050565b600060208201905081810360008301526150b68161507a565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b60006150f36016836142d5565b91506150fe826150bd565b602082019050919050565b60006020820190508181036000830152615122816150e6565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b60006151ab6049836142d5565b91506151b682615129565b606082019050919050565b600060208201905081810360008301526151da8161519e565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b600061523d6035836142d5565b9150615248826151e1565b604082019050919050565b6000602082019050818103600083015261526c81615230565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b60006152a96013836142d5565b91506152b482615273565b602082019050919050565b600060208201905081810360008301526152d88161529c565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b600061533b6036836142d5565b9150615346826152df565b604082019050919050565b6000602082019050818103600083015261536a8161532e565b9050919050565b600061537c826143e8565b9150615387836143e8565b92508282101561539a576153996148cc565b5b828203905092915050565b600081905092915050565b50565b60006153c06000836153a5565b91506153cb826153b0565b600082019050919050565b60006153e1826153b3565b9150819050919050565b6000606082019050615400600083018661453b565b61540d602083018561453b565b61541a604083018461453b565b949350505050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b600061547e6021836142d5565b915061548982615422565b604082019050919050565b600060208201905081810360008301526154ad81615471565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050615521816143bc565b92915050565b60006020828403121561553d5761553c614385565b5b600061554b84828501615512565b91505092915050565b6000819050919050565b600061557961557461556f84615554565b6144c1565b6143e8565b9050919050565b6155898161555e565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6155c4816143aa565b82525050565b60006155d683836155bb565b60208301905092915050565b6000602082019050919050565b60006155fa8261558f565b615604818561559a565b935061560f836155ab565b8060005b8381101561564057815161562788826155ca565b9750615632836155e2565b925050600181019050615613565b5085935050505092915050565b600060a082019050615662600083018861453b565b61566f6020830187615580565b818103604083015261568181866155ef565b90506156906060830185614672565b61569d608083018461453b565b9695505050505050565b600060c0820190506156bc6000830189614672565b6156c9602083018861453b565b6156d66040830187615580565b6156e36060830186615580565b6156f06080830185614672565b6156fd60a083018461453b565b979650505050505050565b600081519050615717816143f2565b92915050565b60008060006060848603121561573657615735614385565b5b600061574486828701615708565b935050602061575586828701615708565b925050604061576686828701615708565b915050925092509256fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212205596d0e8145b27d6fcd2d03ce742bdac34638ce7c29ee6b58540ca73bf5011cd64736f6c63430008090033
Deployed Bytecode Sourcemap
29610:16936:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7708:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9882:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31239:64;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29694:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8831:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;38253:251;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;31020:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30980;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;35254:234;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;36455:823;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10534:355;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29797:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30897:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8672:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11299:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29752:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30080:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;38516:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30854:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30708:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30160:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9003:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22210:148;;;;;;;;;;;;;:::i;:::-;;34818:120;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;35721:144;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;30600:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;36072:374;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;34653:112;;;;;;;;;;;;;:::i;:::-;;21566:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30743:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;35962:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7928:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;37478:245;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;30674:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31060:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30819:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;35143:102;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12021:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30198:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30940:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9344:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;37930:314;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;31462:58;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30120:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;37287:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;35497:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;30517:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29964:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30566:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9583:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30006:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;35000:134;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30637:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22514:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;30781:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30046:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7708:100;7762:13;7795:5;7788:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7708:100;:::o;9882:169::-;9965:4;9982:39;9991:12;:10;:12::i;:::-;10005:7;10014:6;9982:8;:39::i;:::-;10039:4;10032:11;;9882:169;;;;:::o;31239:64::-;;;;;;;;;;;;;;;;;;;;;;:::o;29694:51::-;;;:::o;8831:108::-;8892:7;8919:12;;8912:19;;8831:108;:::o;38253:251::-;21789:12;:10;:12::i;:::-;21779:22;;:6;;;;;;;;;;;:22;;;21771:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;38360:9:::1;;;;;;;;;;;38332:38;;38349:9;38332:38;;;;;;;;;;;;38393:9;38381;;:21;;;;;;;;;;;;;;;;;;38413:31;38429:9;;;;;;;;;;;38439:4;38413:15;:31::i;:::-;38455:41;38481:9;;;;;;;;;;;38491:4;38455:25;:41::i;:::-;38253:251:::0;:::o;31020:33::-;;;;:::o;30980:::-;;;;:::o;35254:234::-;21789:12;:10;:12::i;:::-;21779:22;;:6;;;;;;;;;;;:22;;;21771:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;35373:4:::1;35367;35363:1;35347:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;35346:31;;;;:::i;:::-;35336:6;:41;;35328:101;;;;;;;;;;;;:::i;:::-;;;;;;;;;35473:6;35463;:17;;;;:::i;:::-;35440:20;:40;;;;35254:234:::0;:::o;36455:823::-;21789:12;:10;:12::i;:::-;21779:22;;:6;;;;;;;;;;;:22;;;21771:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;36682:13:::1;36663:16;:32;;;;36725:13;36706:16;:32;;;;36762:7;36749:10;:20;;;;36804:22;36780:21;:46;;;;36861:22;36837:21;:46;;;;36909:16;36891:15;:34;;;;36990:10;;36971:16;;36952;;:35;;;;:::i;:::-;:48;;;;:::i;:::-;36936:13;:64;;;;37036:2;37019:13;;:19;;37011:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;37088:26;37167:16;37142:22;37117;:47;;;;:::i;:::-;:66;;;;:::i;:::-;37088:95;;37224:2;37202:18;:24;;37194:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;36652:626;36455:823:::0;;;;;;:::o;10534:355::-;10674:4;10691:36;10701:6;10709:9;10720:6;10691:9;:36::i;:::-;10738:121;10747:6;10755:12;:10;:12::i;:::-;10769:89;10807:6;10769:89;;;;;;;;;;;;;;;;;:11;:19;10781:6;10769:19;;;;;;;;;;;;;;;:33;10789:12;:10;:12::i;:::-;10769:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;10738:8;:121::i;:::-;10877:4;10870:11;;10534:355;;;;;:::o;29797:53::-;29843:6;29797:53;:::o;30897:36::-;;;;:::o;8672:93::-;8730:5;8755:2;8748:9;;8672:93;:::o;11299:218::-;11387:4;11404:83;11413:12;:10;:12::i;:::-;11427:7;11436:50;11475:10;11436:11;:25;11448:12;:10;:12::i;:::-;11436:25;;;;;;;;;;;;;;;:34;11462:7;11436:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;11404:8;:83::i;:::-;11505:4;11498:11;;11299:218;;;;:::o;29752:38::-;;;:::o;30080:33::-;;;;;;;;;;;;;:::o;38516:125::-;38581:4;38605:19;:28;38625:7;38605:28;;;;;;;;;;;;;;;;;;;;;;;;;38598:35;;38516:125;;;:::o;30854:36::-;;;;:::o;30708:28::-;;;;:::o;30160:31::-;;;;;;;;;;;;;:::o;9003:127::-;9077:7;9104:9;:18;9114:7;9104:18;;;;;;;;;;;;;;;;9097:25;;9003:127;;;:::o;22210:148::-;21789:12;:10;:12::i;:::-;21779:22;;:6;;;;;;;;;;;:22;;;21771:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22317:1:::1;22280:40;;22301:6;;;;;;;;;;;22280:40;;;;;;;;;;;;22348:1;22331:6;;:19;;;;;;;;;;;;;;;;;;22210:148::o:0;34818:120::-;34870:4;21789:12;:10;:12::i;:::-;21779:22;;:6;;;;;;;;;;;:22;;;21771:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;34903:5:::1;34886:14;;:22;;;;;;;;;;;;;;;;;;34926:4;34919:11;;34818:120:::0;:::o;35721:144::-;21789:12;:10;:12::i;:::-;21779:22;;:6;;;;;;;;;;;:22;;;21771:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;35853:4:::1;35811:31;:39;35843:6;35811:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;35721:144:::0;;:::o;30600:30::-;;;;:::o;36072:374::-;21789:12;:10;:12::i;:::-;21779:22;;:6;;;;;;;;;;;:22;;;21771:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;36207:13:::1;36189:15;:31;;;;36249:13;36231:15;:31;;;;36285:7;36273:9;:19;;;;36354:9;;36336:15;;36318;;:33;;;;:::i;:::-;:45;;;;:::i;:::-;36303:12;:60;;;;36398:2;36382:12;;:18;;36374:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;36072:374:::0;;;:::o;34653:112::-;21789:12;:10;:12::i;:::-;21779:22;;:6;;;;;;;;;;;:22;;;21771:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;34724:4:::1;34708:13;;:20;;;;;;;;;;;;;;;;;;34753:4;34739:11;;:18;;;;;;;;;;;;;;;;;;34653:112::o:0;21566:79::-;21604:7;21631:6;;;;;;;;;;;21624:13;;21566:79;:::o;30743:31::-;;;;:::o;35962:101::-;21789:12;:10;:12::i;:::-;21779:22;;:6;;;;;;;;;;;:22;;;21771:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;36048:7:::1;36034:11;;:21;;;;;;;;;;;;;;;;;;35962:101:::0;:::o;7928:104::-;7984:13;8017:7;8010:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7928:104;:::o;37478:245::-;21789:12;:10;:12::i;:::-;21779:22;;:6;;;;;;;;;;;:22;;;21771:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;37585:13:::1;37577:21;;:4;:21;;;;37569:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;37674:41;37703:4;37709:5;37674:28;:41::i;:::-;37478:245:::0;;:::o;30674:24::-;;;;:::o;31060:27::-;;;;:::o;30819:25::-;;;;:::o;35143:102::-;21789:12;:10;:12::i;:::-;21779:22;;:6;;;;;;;;;;;:22;;;21771:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;35232:5:::1;35211:18;;:26;;;;;;;;;;;;;;;;;;35143:102:::0;:::o;12021:269::-;12114:4;12131:129;12140:12;:10;:12::i;:::-;12154:7;12163:96;12202:15;12163:96;;;;;;;;;;;;;;;;;:11;:25;12175:12;:10;:12::i;:::-;12163:25;;;;;;;;;;;;;;;:34;12189:7;12163:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;12131:8;:129::i;:::-;12278:4;12271:11;;12021:269;;;;:::o;30198:37::-;;;;;;;;;;;;;:::o;30940:30::-;;;;:::o;9344:175::-;9430:4;9447:42;9457:12;:10;:12::i;:::-;9471:9;9482:6;9447:9;:42::i;:::-;9507:4;9500:11;;9344:175;;;;:::o;37930:314::-;21789:12;:10;:12::i;:::-;21779:22;;:6;;;;;;;;;;;:22;;;21771:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;38067:15:::1;;;;;;;;;;;38024:59;;38047:18;38024:59;;;;;;;;;;;;38112:18;38094:15;;:36;;;;;;;;;;;;;;;;;;38141:37;38157:15;;;;;;;;;;;38173:4;38141:15;:37::i;:::-;38189:47;38215:15;;;;;;;;;;;38231:4;38189:25;:47::i;:::-;37930:314:::0;:::o;31462:58::-;;;;;;;;;;;;;;;;;;;;;;:::o;30120:33::-;;;;;;;;;;;;;:::o;37287:182::-;21789:12;:10;:12::i;:::-;21779:22;;:6;;;;;;;;;;;:22;;;21771:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;37403:8:::1;37372:19;:28;37392:7;37372:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;37443:7;37427:34;;;37452:8;37427:34;;;;;;:::i;:::-;;;;;;;;37287:182:::0;;:::o;35497:215::-;21789:12;:10;:12::i;:::-;21779:22;;:6;;;;;;;;;;;:22;;;21771:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;35619:4:::1;35613;35609:1;35593:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;35592:31;;;;:::i;:::-;35582:6;:41;;35574:90;;;;;;;;;;;;:::i;:::-;;;;;;;;;35697:6;35687;:17;;;;:::i;:::-;35675:9;:29;;;;35497:215:::0;:::o;30517:39::-;;;;;;;;;;;;;:::o;29964:35::-;;;;:::o;30566:27::-;;;;:::o;9583:151::-;9672:7;9699:11;:18;9711:5;9699:18;;;;;;;;;;;;;;;:27;9718:7;9699:27;;;;;;;;;;;;;;;;9692:34;;9583:151;;;;:::o;30006:33::-;;;;:::o;35000:134::-;35060:4;21789:12;:10;:12::i;:::-;21779:22;;:6;;;;;;;;;;;:22;;;21771:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;35099:5:::1;35076:20;;:28;;;;;;;;;;;;;;;;;;35122:4;35115:11;;35000:134:::0;:::o;30637:30::-;;;;:::o;22514:244::-;21789:12;:10;:12::i;:::-;21779:22;;:6;;;;;;;;;;;:22;;;21771:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22623:1:::1;22603:22;;:8;:22;;;;22595:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;22713:8;22684:38;;22705:6;;;;;;;;;;;22684:38;;;;;;;;;;;;22742:8;22733:6;;:17;;;;;;;;;;;;;;;;;;22514:244:::0;:::o;30781:31::-;;;;:::o;30046:24::-;;;;:::o;16598:182::-;16656:7;16676:9;16692:1;16688;:5;;;;:::i;:::-;16676:17;;16717:1;16712;:6;;16704:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;16771:1;16764:8;;;16598:182;;;;:::o;399:98::-;452:7;479:10;472:17;;399:98;:::o;15217:381::-;15370:1;15353:19;;:5;:19;;;;15345:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15451:1;15432:21;;:7;:21;;;;15424:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15536:6;15506:11;:18;15518:5;15506:18;;;;;;;;;;;;;;;:27;15525:7;15506:27;;;;;;;;;;;;;;;:36;;;;15574:7;15558:32;;15567:5;15558:32;;;15583:6;15558:32;;;;;;:::i;:::-;;;;;;;;15217:381;;;:::o;38650:5181::-;38798:1;38782:18;;:4;:18;;;;38774:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;38875:1;38861:16;;:2;:16;;;;38853:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;38941:1;38931:6;:11;38928:92;;;38959:28;38975:4;38981:2;38985:1;38959:15;:28::i;:::-;39002:7;;38928:92;39036:14;;;;;;;;;;;39033:1811;;;39096:7;:5;:7::i;:::-;39088:15;;:4;:15;;;;:49;;;;;39130:7;:5;:7::i;:::-;39124:13;;:2;:13;;;;39088:49;:86;;;;;39172:1;39158:16;;:2;:16;;;;39088:86;:128;;;;;39209:6;39195:21;;:2;:21;;;;39088:128;:158;;;;;39238:8;;;;;;;;;;;39237:9;39088:158;39066:1767;;;39284:13;;;;;;;;;;;39280:148;;39329:19;:25;39349:4;39329:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;39358:19;:23;39378:2;39358:23;;;;;;;;;;;;;;;;;;;;;;;;;39329:52;39321:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;39280:148;39587:20;;;;;;;;;;;39583:423;;;39641:7;:5;:7::i;:::-;39635:13;;:2;:13;;;;:47;;;;;39666:15;39652:30;;:2;:30;;;;39635:47;:79;;;;;39700:13;39686:28;;:2;:28;;;;39635:79;39631:356;;;39792:12;39750:28;:39;39779:9;39750:39;;;;;;;;;;;;;;;;:54;39742:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;39951:12;39909:28;:39;39938:9;39909:39;;;;;;;;;;;;;;;:54;;;;39631:356;39583:423;40059:25;:31;40085:4;40059:31;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;40095:31;:35;40127:2;40095:35;;;;;;;;;;;;;;;;;;;;;;;;;40094:36;40059:71;40055:763;;;40177:20;;40167:6;:30;;40159:96;;;;;;;;;;;;:::i;:::-;;;;;;;;;40316:9;;40299:13;40309:2;40299:9;:13::i;:::-;40290:6;:22;;;;:::i;:::-;:35;;40282:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;40055:763;;;40428:25;:29;40454:2;40428:29;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;40462:31;:37;40494:4;40462:37;;;;;;;;;;;;;;;;;;;;;;;;;40461:38;40428:71;40424:394;;;40546:20;;40536:6;:30;;40528:97;;;;;;;;;;;;:::i;:::-;;;;;;;;;40424:394;;;40672:31;:35;40704:2;40672:35;;;;;;;;;;;;;;;;;;;;;;;;;40668:150;;40765:9;;40748:13;40758:2;40748:9;:13::i;:::-;40739:6;:22;;;;:::i;:::-;:35;;40731:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;40668:150;40424:394;40055:763;39066:1767;39033:1811;40886:10;40907:13;40899:21;;:4;:21;;;40886:34;;40936:5;40935:6;:28;;;;;40945:18;;;;;;;;;;;40935:28;40931:1059;;;41018:1;40984:24;:30;41009:4;40984:30;;;;;;;;;;;;;;;;:35;;:120;;;;;41088:15;41075:8;41041:24;:30;41066:4;41041:30;;;;;;;;;;;;;;;;:43;;;;:::i;:::-;:62;;40984:120;40980:601;;;41145:21;;41126:16;:40;;;;41204:21;;41185:16;:40;;;;41251:15;;41238:10;:28;;;;41339:10;;41320:16;;41301;;:35;;;;:::i;:::-;:48;;;;:::i;:::-;41285:13;:64;;;;40980:601;;;41409:1;41390:16;:20;;;;41448:1;41429:16;:20;;;;41481:1;41468:10;:14;;;;41555:10;;41536:16;;41517;;:35;;;;:::i;:::-;:48;;;;:::i;:::-;41501:13;:64;;;;40980:601;40931:1059;;;41649:1;41617:24;:28;41642:2;41617:28;;;;;;;;;;;;;;;;:33;41613:120;;;41702:15;41671:24;:28;41696:2;41671:28;;;;;;;;;;;;;;;:46;;;;41613:120;41755:18;;;;;;;;;;;41750:229;;41813:1;41794:16;:20;;;;41852:1;41833:16;:20;;;;41879:1;41866:10;:14;;;;41953:10;;41934:16;;41915;;:35;;;;:::i;:::-;:48;;;;:::i;:::-;41899:13;:64;;;;41750:229;40931:1059;42003:28;42034:24;42052:4;42034:9;:24::i;:::-;42003:55;;42072:12;42111:18;;42087:20;:42;;42072:57;;42161:7;:35;;;;;42185:11;;;;;;;;;;;42161:35;:61;;;;;42214:8;;;;;;;;;;;42213:9;42161:61;:110;;;;;42240:25;:31;42266:4;42240:31;;;;;;;;;;;;;;;;;;;;;;;;;42239:32;42161:110;:153;;;;;42289:19;:25;42309:4;42289:25;;;;;;;;;;;;;;;;;;;;;;;;;42288:26;42161:153;:194;;;;;42332:19;:23;42352:2;42332:23;;;;;;;;;;;;;;;;;;;;;;;;;42331:24;42161:194;42143:328;;;42393:4;42382:8;;:15;;;;;;;;;;;;;;;;;;42415:10;:8;:10::i;:::-;42454:5;42443:8;;:16;;;;;;;;;;;;;;;;;;42143:328;42484:12;42500:8;;;;;;;;;;;42499:9;42484:24;;42610:19;:25;42630:4;42610:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;42639:19;:23;42659:2;42639:23;;;;;;;;;;;;;;;;;;;;;;;;;42610:52;42607:99;;;42689:5;42679:15;;42607:99;42719:12;42823:7;42820:957;;;42874:25;:29;42900:2;42874:29;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;42923:1;42907:13;;:17;42874:50;42870:754;;;42951:34;42981:3;42951:25;42962:13;;42951:6;:10;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;42944:41;;43052:13;;43033:16;;43026:4;:23;;;;:::i;:::-;:39;;;;:::i;:::-;43004:18;;:61;;;;;;;:::i;:::-;;;;;;;;43120:13;;43107:10;;43100:4;:17;;;;:::i;:::-;:33;;;;:::i;:::-;43084:12;;:49;;;;;;;:::i;:::-;;;;;;;;43200:13;;43181:16;;43174:4;:23;;;;:::i;:::-;:39;;;;:::i;:::-;43152:18;;:61;;;;;;;:::i;:::-;;;;;;;;42870:754;;;43274:25;:31;43300:4;43274:31;;;;;;;;;;;;;;;;;;;;;;;;;:51;;;;;43324:1;43309:12;;:16;43274:51;43271:353;;;43353:33;43382:3;43353:24;43364:12;;43353:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;43346:40;;43452:12;;43434:15;;43427:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;43405:18;;:59;;;;;;;:::i;:::-;;;;;;;;43518:12;;43506:9;;43499:4;:16;;;;:::i;:::-;:31;;;;:::i;:::-;43483:12;;:47;;;;;;;:::i;:::-;;;;;;;;43596:12;;43578:15;;43571:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;43549:18;;:59;;;;;;;:::i;:::-;;;;;;;;43271:353;42870:754;43651:1;43644:4;:8;43641:93;;;43676:42;43692:4;43706;43713;43676:15;:42::i;:::-;43641:93;43761:4;43751:14;;;;;:::i;:::-;;;42820:957;43790:33;43806:4;43812:2;43816:6;43790:15;:33::i;:::-;38763:5068;;;;;38650:5181;;;;:::o;17504:193::-;17590:7;17623:1;17618;:6;;17626:12;17610:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;17650:9;17666:1;17662;:5;;;;:::i;:::-;17650:17;;17688:1;17681:8;;;17504:193;;;;;:::o;37732:189::-;37849:5;37815:25;:31;37841:4;37815:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;37907:5;37873:40;;37901:4;37873:40;;;;;;;;;;;;37732:189;;:::o;12781:575::-;12939:1;12921:20;;:6;:20;;;;12913:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;13023:1;13002:23;;:9;:23;;;;12994:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;13079:47;13100:6;13108:9;13119:6;13079:20;:47::i;:::-;13160:71;13182:6;13160:71;;;;;;;;;;;;;;;;;:9;:17;13170:6;13160:17;;;;;;;;;;;;;;;;:21;;:71;;;;;:::i;:::-;13140:9;:17;13150:6;13140:17;;;;;;;;;;;;;;;:91;;;;13265:32;13290:6;13265:9;:20;13275:9;13265:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;13242:9;:20;13252:9;13242:20;;;;;;;;;;;;;;;:55;;;;13330:9;13313:35;;13322:6;13313:35;;;13341:6;13313:35;;;;;;:::i;:::-;;;;;;;;12781:575;;;:::o;44973:1568::-;45012:23;45038:24;45056:4;45038:9;:24::i;:::-;45012:50;;45073:25;45143:12;;45122:18;;45101;;:39;;;;:::i;:::-;:54;;;;:::i;:::-;45073:82;;45166:12;45214:1;45195:15;:20;:46;;;;45240:1;45219:17;:22;45195:46;45192:60;;;45244:7;;;;;45192:60;45307:2;45286:18;;:23;;;;:::i;:::-;45268:15;:41;45265:111;;;45362:2;45341:18;;:23;;;;:::i;:::-;45323:41;;45265:111;45438:23;45523:1;45503:17;45482:18;;45464:15;:36;;;;:::i;:::-;:56;;;;:::i;:::-;:60;;;;:::i;:::-;45438:86;;45535:26;45564:36;45584:15;45564;:19;;:36;;;;:::i;:::-;45535:65;;45614:25;45642:21;45614:49;;45677:36;45694:18;45677:16;:36::i;:::-;45728:18;45749:44;45775:17;45749:21;:25;;:44;;;;:::i;:::-;45728:65;;45807:23;45833:57;45872:17;45833:34;45848:18;;45833:10;:14;;:34;;;;:::i;:::-;:38;;:57;;;;:::i;:::-;45807:83;;45901:17;45921:51;45954:17;45921:28;45936:12;;45921:10;:14;;:28;;;;:::i;:::-;:32;;:51;;;;:::i;:::-;45901:71;;45983:23;46040:9;46022:15;46009:10;:28;;;;:::i;:::-;:40;;;;:::i;:::-;45983:66;;46087:1;46066:18;:22;;;;46120:1;46099:18;:22;;;;46147:1;46132:12;:16;;;;46183:9;;;;;;;;;;;46175:23;;46206:9;46175:45;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;46162:58;;;;;46255:1;46237:15;:19;:42;;;;;46278:1;46260:15;:19;46237:42;46234:210;;;46295:46;46308:15;46325;46295:12;:46::i;:::-;46361:71;46376:18;46396:15;46413:18;;46361:71;;;;;;;;:::i;:::-;;;;;;;;46234:210;46478:15;;;;;;;;;;;46470:29;;46507:21;46470:63;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;46457:76;;;;;45001:1540;;;;;;;;;;44973:1568;:::o;17957:473::-;18015:7;18265:1;18260;:6;18256:47;;;18290:1;18283:8;;;;18256:47;18316:9;18332:1;18328;:5;;;;:::i;:::-;18316:17;;18361:1;18356;18352;:5;;;;:::i;:::-;:10;18344:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;18421:1;18414:8;;;17957:473;;;;;:::o;18907:132::-;18965:7;18992:39;18996:1;18999;18992:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;18985:46;;18907:132;;;;:::o;16202:125::-;;;;:::o;17064:136::-;17122:7;17149:43;17153:1;17156;17149:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;17142:50;;17064:136;;;;:::o;43840:597::-;43969:21;44007:1;43993:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;43969:40;;44038:4;44020;44025:1;44020:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;44064:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;44054:4;44059:1;44054:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;44100:62;44117:4;44132:15;44150:11;44100:8;:62::i;:::-;44202:15;:66;;;44283:11;44309:1;44353:4;44380;44400:15;44202:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;43895:542;43840:597;:::o;44446:518::-;44594:62;44611:4;44626:15;44644:11;44594:8;:62::i;:::-;44700:15;:31;;;44739:9;44772:4;44792:11;44818:1;44861;29843:6;44930:15;44700:256;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;44446:518;;:::o;19536:279::-;19622:7;19654:1;19650;:5;19657:12;19642:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;19681:9;19697:1;19693;:5;;;;:::i;:::-;19681:17;;19806:1;19799:8;;;19536:279;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:307::-;355:1;365:113;379:6;376:1;373:13;365:113;;;464:1;459:3;455:11;449:18;445:1;440:3;436:11;429:39;401:2;398:1;394:10;389:15;;365:113;;;496:6;493:1;490:13;487:101;;;576:1;567:6;562:3;558:16;551:27;487:101;336:258;287:307;;;:::o;600:102::-;641:6;692:2;688:7;683:2;676:5;672:14;668:28;658:38;;600:102;;;:::o;708:364::-;796:3;824:39;857:5;824:39;:::i;:::-;879:71;943:6;938:3;879:71;:::i;:::-;872:78;;959:52;1004:6;999:3;992:4;985:5;981:16;959:52;:::i;:::-;1036:29;1058:6;1036:29;:::i;:::-;1031:3;1027:39;1020:46;;800:272;708:364;;;;:::o;1078:313::-;1191:4;1229:2;1218:9;1214:18;1206:26;;1278:9;1272:4;1268:20;1264:1;1253:9;1249:17;1242:47;1306:78;1379:4;1370:6;1306:78;:::i;:::-;1298:86;;1078:313;;;;:::o;1478:117::-;1587:1;1584;1577:12;1724:126;1761:7;1801:42;1794:5;1790:54;1779:65;;1724:126;;;:::o;1856:96::-;1893:7;1922:24;1940:5;1922:24;:::i;:::-;1911:35;;1856:96;;;:::o;1958:122::-;2031:24;2049:5;2031:24;:::i;:::-;2024:5;2021:35;2011:63;;2070:1;2067;2060:12;2011:63;1958:122;:::o;2086:139::-;2132:5;2170:6;2157:20;2148:29;;2186:33;2213:5;2186:33;:::i;:::-;2086:139;;;;:::o;2231:77::-;2268:7;2297:5;2286:16;;2231:77;;;:::o;2314:122::-;2387:24;2405:5;2387:24;:::i;:::-;2380:5;2377:35;2367:63;;2426:1;2423;2416:12;2367:63;2314:122;:::o;2442:139::-;2488:5;2526:6;2513:20;2504:29;;2542:33;2569:5;2542:33;:::i;:::-;2442:139;;;;:::o;2587:474::-;2655:6;2663;2712:2;2700:9;2691:7;2687:23;2683:32;2680:119;;;2718:79;;:::i;:::-;2680:119;2838:1;2863:53;2908:7;2899:6;2888:9;2884:22;2863:53;:::i;:::-;2853:63;;2809:117;2965:2;2991:53;3036:7;3027:6;3016:9;3012:22;2991:53;:::i;:::-;2981:63;;2936:118;2587:474;;;;;:::o;3067:90::-;3101:7;3144:5;3137:13;3130:21;3119:32;;3067:90;;;:::o;3163:109::-;3244:21;3259:5;3244:21;:::i;:::-;3239:3;3232:34;3163:109;;:::o;3278:210::-;3365:4;3403:2;3392:9;3388:18;3380:26;;3416:65;3478:1;3467:9;3463:17;3454:6;3416:65;:::i;:::-;3278:210;;;;:::o;3494:329::-;3553:6;3602:2;3590:9;3581:7;3577:23;3573:32;3570:119;;;3608:79;;:::i;:::-;3570:119;3728:1;3753:53;3798:7;3789:6;3778:9;3774:22;3753:53;:::i;:::-;3743:63;;3699:117;3494:329;;;;:::o;3829:60::-;3857:3;3878:5;3871:12;;3829:60;;;:::o;3895:142::-;3945:9;3978:53;3996:34;4005:24;4023:5;4005:24;:::i;:::-;3996:34;:::i;:::-;3978:53;:::i;:::-;3965:66;;3895:142;;;:::o;4043:126::-;4093:9;4126:37;4157:5;4126:37;:::i;:::-;4113:50;;4043:126;;;:::o;4175:153::-;4252:9;4285:37;4316:5;4285:37;:::i;:::-;4272:50;;4175:153;;;:::o;4334:185::-;4448:64;4506:5;4448:64;:::i;:::-;4443:3;4436:77;4334:185;;:::o;4525:276::-;4645:4;4683:2;4672:9;4668:18;4660:26;;4696:98;4791:1;4780:9;4776:17;4767:6;4696:98;:::i;:::-;4525:276;;;;:::o;4807:118::-;4894:24;4912:5;4894:24;:::i;:::-;4889:3;4882:37;4807:118;;:::o;4931:222::-;5024:4;5062:2;5051:9;5047:18;5039:26;;5075:71;5143:1;5132:9;5128:17;5119:6;5075:71;:::i;:::-;4931:222;;;;:::o;5159:329::-;5218:6;5267:2;5255:9;5246:7;5242:23;5238:32;5235:119;;;5273:79;;:::i;:::-;5235:119;5393:1;5418:53;5463:7;5454:6;5443:9;5439:22;5418:53;:::i;:::-;5408:63;;5364:117;5159:329;;;;:::o;5494:1057::-;5598:6;5606;5614;5622;5630;5638;5687:3;5675:9;5666:7;5662:23;5658:33;5655:120;;;5694:79;;:::i;:::-;5655:120;5814:1;5839:53;5884:7;5875:6;5864:9;5860:22;5839:53;:::i;:::-;5829:63;;5785:117;5941:2;5967:53;6012:7;6003:6;5992:9;5988:22;5967:53;:::i;:::-;5957:63;;5912:118;6069:2;6095:53;6140:7;6131:6;6120:9;6116:22;6095:53;:::i;:::-;6085:63;;6040:118;6197:2;6223:53;6268:7;6259:6;6248:9;6244:22;6223:53;:::i;:::-;6213:63;;6168:118;6325:3;6352:53;6397:7;6388:6;6377:9;6373:22;6352:53;:::i;:::-;6342:63;;6296:119;6454:3;6481:53;6526:7;6517:6;6506:9;6502:22;6481:53;:::i;:::-;6471:63;;6425:119;5494:1057;;;;;;;;:::o;6557:619::-;6634:6;6642;6650;6699:2;6687:9;6678:7;6674:23;6670:32;6667:119;;;6705:79;;:::i;:::-;6667:119;6825:1;6850:53;6895:7;6886:6;6875:9;6871:22;6850:53;:::i;:::-;6840:63;;6796:117;6952:2;6978:53;7023:7;7014:6;7003:9;6999:22;6978:53;:::i;:::-;6968:63;;6923:118;7080:2;7106:53;7151:7;7142:6;7131:9;7127:22;7106:53;:::i;:::-;7096:63;;7051:118;6557:619;;;;;:::o;7182:118::-;7269:24;7287:5;7269:24;:::i;:::-;7264:3;7257:37;7182:118;;:::o;7306:222::-;7399:4;7437:2;7426:9;7422:18;7414:26;;7450:71;7518:1;7507:9;7503:17;7494:6;7450:71;:::i;:::-;7306:222;;;;:::o;7534:86::-;7569:7;7609:4;7602:5;7598:16;7587:27;;7534:86;;;:::o;7626:112::-;7709:22;7725:5;7709:22;:::i;:::-;7704:3;7697:35;7626:112;;:::o;7744:214::-;7833:4;7871:2;7860:9;7856:18;7848:26;;7884:67;7948:1;7937:9;7933:17;7924:6;7884:67;:::i;:::-;7744:214;;;;:::o;7964:116::-;8034:21;8049:5;8034:21;:::i;:::-;8027:5;8024:32;8014:60;;8070:1;8067;8060:12;8014:60;7964:116;:::o;8086:133::-;8129:5;8167:6;8154:20;8145:29;;8183:30;8207:5;8183:30;:::i;:::-;8086:133;;;;:::o;8225:468::-;8290:6;8298;8347:2;8335:9;8326:7;8322:23;8318:32;8315:119;;;8353:79;;:::i;:::-;8315:119;8473:1;8498:53;8543:7;8534:6;8523:9;8519:22;8498:53;:::i;:::-;8488:63;;8444:117;8600:2;8626:50;8668:7;8659:6;8648:9;8644:22;8626:50;:::i;:::-;8616:60;;8571:115;8225:468;;;;;:::o;8699:619::-;8776:6;8784;8792;8841:2;8829:9;8820:7;8816:23;8812:32;8809:119;;;8847:79;;:::i;:::-;8809:119;8967:1;8992:53;9037:7;9028:6;9017:9;9013:22;8992:53;:::i;:::-;8982:63;;8938:117;9094:2;9120:53;9165:7;9156:6;9145:9;9141:22;9120:53;:::i;:::-;9110:63;;9065:118;9222:2;9248:53;9293:7;9284:6;9273:9;9269:22;9248:53;:::i;:::-;9238:63;;9193:118;8699:619;;;;;:::o;9324:323::-;9380:6;9429:2;9417:9;9408:7;9404:23;9400:32;9397:119;;;9435:79;;:::i;:::-;9397:119;9555:1;9580:50;9622:7;9613:6;9602:9;9598:22;9580:50;:::i;:::-;9570:60;;9526:114;9324:323;;;;:::o;9653:474::-;9721:6;9729;9778:2;9766:9;9757:7;9753:23;9749:32;9746:119;;;9784:79;;:::i;:::-;9746:119;9904:1;9929:53;9974:7;9965:6;9954:9;9950:22;9929:53;:::i;:::-;9919:63;;9875:117;10031:2;10057:53;10102:7;10093:6;10082:9;10078:22;10057:53;:::i;:::-;10047:63;;10002:118;9653:474;;;;;:::o;10133:180::-;10181:77;10178:1;10171:88;10278:4;10275:1;10268:15;10302:4;10299:1;10292:15;10319:320;10363:6;10400:1;10394:4;10390:12;10380:22;;10447:1;10441:4;10437:12;10468:18;10458:81;;10524:4;10516:6;10512:17;10502:27;;10458:81;10586:2;10578:6;10575:14;10555:18;10552:38;10549:84;;;10605:18;;:::i;:::-;10549:84;10370:269;10319:320;;;:::o;10645:182::-;10785:34;10781:1;10773:6;10769:14;10762:58;10645:182;:::o;10833:366::-;10975:3;10996:67;11060:2;11055:3;10996:67;:::i;:::-;10989:74;;11072:93;11161:3;11072:93;:::i;:::-;11190:2;11185:3;11181:12;11174:19;;10833:366;;;:::o;11205:419::-;11371:4;11409:2;11398:9;11394:18;11386:26;;11458:9;11452:4;11448:20;11444:1;11433:9;11429:17;11422:47;11486:131;11612:4;11486:131;:::i;:::-;11478:139;;11205:419;;;:::o;11630:180::-;11678:77;11675:1;11668:88;11775:4;11772:1;11765:15;11799:4;11796:1;11789:15;11816:348;11856:7;11879:20;11897:1;11879:20;:::i;:::-;11874:25;;11913:20;11931:1;11913:20;:::i;:::-;11908:25;;12101:1;12033:66;12029:74;12026:1;12023:81;12018:1;12011:9;12004:17;12000:105;11997:131;;;12108:18;;:::i;:::-;11997:131;12156:1;12153;12149:9;12138:20;;11816:348;;;;:::o;12170:180::-;12218:77;12215:1;12208:88;12315:4;12312:1;12305:15;12339:4;12336:1;12329:15;12356:185;12396:1;12413:20;12431:1;12413:20;:::i;:::-;12408:25;;12447:20;12465:1;12447:20;:::i;:::-;12442:25;;12486:1;12476:35;;12491:18;;:::i;:::-;12476:35;12533:1;12530;12526:9;12521:14;;12356:185;;;;:::o;12547:234::-;12687:34;12683:1;12675:6;12671:14;12664:58;12756:17;12751:2;12743:6;12739:15;12732:42;12547:234;:::o;12787:366::-;12929:3;12950:67;13014:2;13009:3;12950:67;:::i;:::-;12943:74;;13026:93;13115:3;13026:93;:::i;:::-;13144:2;13139:3;13135:12;13128:19;;12787:366;;;:::o;13159:419::-;13325:4;13363:2;13352:9;13348:18;13340:26;;13412:9;13406:4;13402:20;13398:1;13387:9;13383:17;13376:47;13440:131;13566:4;13440:131;:::i;:::-;13432:139;;13159:419;;;:::o;13584:305::-;13624:3;13643:20;13661:1;13643:20;:::i;:::-;13638:25;;13677:20;13695:1;13677:20;:::i;:::-;13672:25;;13831:1;13763:66;13759:74;13756:1;13753:81;13750:107;;;13837:18;;:::i;:::-;13750:107;13881:1;13878;13874:9;13867:16;;13584:305;;;;:::o;13895:221::-;14035:34;14031:1;14023:6;14019:14;14012:58;14104:4;14099:2;14091:6;14087:15;14080:29;13895:221;:::o;14122:366::-;14264:3;14285:67;14349:2;14344:3;14285:67;:::i;:::-;14278:74;;14361:93;14450:3;14361:93;:::i;:::-;14479:2;14474:3;14470:12;14463:19;;14122:366;;;:::o;14494:419::-;14660:4;14698:2;14687:9;14683:18;14675:26;;14747:9;14741:4;14737:20;14733:1;14722:9;14718:17;14711:47;14775:131;14901:4;14775:131;:::i;:::-;14767:139;;14494:419;;;:::o;14919:226::-;15059:34;15055:1;15047:6;15043:14;15036:58;15128:9;15123:2;15115:6;15111:15;15104:34;14919:226;:::o;15151:366::-;15293:3;15314:67;15378:2;15373:3;15314:67;:::i;:::-;15307:74;;15390:93;15479:3;15390:93;:::i;:::-;15508:2;15503:3;15499:12;15492:19;;15151:366;;;:::o;15523:419::-;15689:4;15727:2;15716:9;15712:18;15704:26;;15776:9;15770:4;15766:20;15762:1;15751:9;15747:17;15740:47;15804:131;15930:4;15804:131;:::i;:::-;15796:139;;15523:419;;;:::o;15948:220::-;16088:34;16084:1;16076:6;16072:14;16065:58;16157:3;16152:2;16144:6;16140:15;16133:28;15948:220;:::o;16174:366::-;16316:3;16337:67;16401:2;16396:3;16337:67;:::i;:::-;16330:74;;16413:93;16502:3;16413:93;:::i;:::-;16531:2;16526:3;16522:12;16515:19;;16174:366;;;:::o;16546:419::-;16712:4;16750:2;16739:9;16735:18;16727:26;;16799:9;16793:4;16789:20;16785:1;16774:9;16770:17;16763:47;16827:131;16953:4;16827:131;:::i;:::-;16819:139;;16546:419;;;:::o;16971:244::-;17111:34;17107:1;17099:6;17095:14;17088:58;17180:27;17175:2;17167:6;17163:15;17156:52;16971:244;:::o;17221:366::-;17363:3;17384:67;17448:2;17443:3;17384:67;:::i;:::-;17377:74;;17460:93;17549:3;17460:93;:::i;:::-;17578:2;17573:3;17569:12;17562:19;;17221:366;;;:::o;17593:419::-;17759:4;17797:2;17786:9;17782:18;17774:26;;17846:9;17840:4;17836:20;17832:1;17821:9;17817:17;17810:47;17874:131;18000:4;17874:131;:::i;:::-;17866:139;;17593:419;;;:::o;18018:223::-;18158:34;18154:1;18146:6;18142:14;18135:58;18227:6;18222:2;18214:6;18210:15;18203:31;18018:223;:::o;18247:366::-;18389:3;18410:67;18474:2;18469:3;18410:67;:::i;:::-;18403:74;;18486:93;18575:3;18486:93;:::i;:::-;18604:2;18599:3;18595:12;18588:19;;18247:366;;;:::o;18619:419::-;18785:4;18823:2;18812:9;18808:18;18800:26;;18872:9;18866:4;18862:20;18858:1;18847:9;18843:17;18836:47;18900:131;19026:4;18900:131;:::i;:::-;18892:139;;18619:419;;;:::o;19044:225::-;19184:34;19180:1;19172:6;19168:14;19161:58;19253:8;19248:2;19240:6;19236:15;19229:33;19044:225;:::o;19275:366::-;19417:3;19438:67;19502:2;19497:3;19438:67;:::i;:::-;19431:74;;19514:93;19603:3;19514:93;:::i;:::-;19632:2;19627:3;19623:12;19616:19;;19275:366;;;:::o;19647:419::-;19813:4;19851:2;19840:9;19836:18;19828:26;;19900:9;19894:4;19890:20;19886:1;19875:9;19871:17;19864:47;19928:131;20054:4;19928:131;:::i;:::-;19920:139;;19647:419;;;:::o;20072:177::-;20212:29;20208:1;20200:6;20196:14;20189:53;20072:177;:::o;20255:366::-;20397:3;20418:67;20482:2;20477:3;20418:67;:::i;:::-;20411:74;;20494:93;20583:3;20494:93;:::i;:::-;20612:2;20607:3;20603:12;20596:19;;20255:366;;;:::o;20627:419::-;20793:4;20831:2;20820:9;20816:18;20808:26;;20880:9;20874:4;20870:20;20866:1;20855:9;20851:17;20844:47;20908:131;21034:4;20908:131;:::i;:::-;20900:139;;20627:419;;;:::o;21052:223::-;21192:34;21188:1;21180:6;21176:14;21169:58;21261:6;21256:2;21248:6;21244:15;21237:31;21052:223;:::o;21281:366::-;21423:3;21444:67;21508:2;21503:3;21444:67;:::i;:::-;21437:74;;21520:93;21609:3;21520:93;:::i;:::-;21638:2;21633:3;21629:12;21622:19;;21281:366;;;:::o;21653:419::-;21819:4;21857:2;21846:9;21842:18;21834:26;;21906:9;21900:4;21896:20;21892:1;21881:9;21877:17;21870:47;21934:131;22060:4;21934:131;:::i;:::-;21926:139;;21653:419;;;:::o;22078:221::-;22218:34;22214:1;22206:6;22202:14;22195:58;22287:4;22282:2;22274:6;22270:15;22263:29;22078:221;:::o;22305:366::-;22447:3;22468:67;22532:2;22527:3;22468:67;:::i;:::-;22461:74;;22544:93;22633:3;22544:93;:::i;:::-;22662:2;22657:3;22653:12;22646:19;;22305:366;;;:::o;22677:419::-;22843:4;22881:2;22870:9;22866:18;22858:26;;22930:9;22924:4;22920:20;22916:1;22905:9;22901:17;22894:47;22958:131;23084:4;22958:131;:::i;:::-;22950:139;;22677:419;;;:::o;23102:224::-;23242:34;23238:1;23230:6;23226:14;23219:58;23311:7;23306:2;23298:6;23294:15;23287:32;23102:224;:::o;23332:366::-;23474:3;23495:67;23559:2;23554:3;23495:67;:::i;:::-;23488:74;;23571:93;23660:3;23571:93;:::i;:::-;23689:2;23684:3;23680:12;23673:19;;23332:366;;;:::o;23704:419::-;23870:4;23908:2;23897:9;23893:18;23885:26;;23957:9;23951:4;23947:20;23943:1;23932:9;23928:17;23921:47;23985:131;24111:4;23985:131;:::i;:::-;23977:139;;23704:419;;;:::o;24129:222::-;24269:34;24265:1;24257:6;24253:14;24246:58;24338:5;24333:2;24325:6;24321:15;24314:30;24129:222;:::o;24357:366::-;24499:3;24520:67;24584:2;24579:3;24520:67;:::i;:::-;24513:74;;24596:93;24685:3;24596:93;:::i;:::-;24714:2;24709:3;24705:12;24698:19;;24357:366;;;:::o;24729:419::-;24895:4;24933:2;24922:9;24918:18;24910:26;;24982:9;24976:4;24972:20;24968:1;24957:9;24953:17;24946:47;25010:131;25136:4;25010:131;:::i;:::-;25002:139;;24729:419;;;:::o;25154:172::-;25294:24;25290:1;25282:6;25278:14;25271:48;25154:172;:::o;25332:366::-;25474:3;25495:67;25559:2;25554:3;25495:67;:::i;:::-;25488:74;;25571:93;25660:3;25571:93;:::i;:::-;25689:2;25684:3;25680:12;25673:19;;25332:366;;;:::o;25704:419::-;25870:4;25908:2;25897:9;25893:18;25885:26;;25957:9;25951:4;25947:20;25943:1;25932:9;25928:17;25921:47;25985:131;26111:4;25985:131;:::i;:::-;25977:139;;25704:419;;;:::o;26129:297::-;26269:34;26265:1;26257:6;26253:14;26246:58;26338:34;26333:2;26325:6;26321:15;26314:59;26407:11;26402:2;26394:6;26390:15;26383:36;26129:297;:::o;26432:366::-;26574:3;26595:67;26659:2;26654:3;26595:67;:::i;:::-;26588:74;;26671:93;26760:3;26671:93;:::i;:::-;26789:2;26784:3;26780:12;26773:19;;26432:366;;;:::o;26804:419::-;26970:4;27008:2;26997:9;26993:18;26985:26;;27057:9;27051:4;27047:20;27043:1;27032:9;27028:17;27021:47;27085:131;27211:4;27085:131;:::i;:::-;27077:139;;26804:419;;;:::o;27229:240::-;27369:34;27365:1;27357:6;27353:14;27346:58;27438:23;27433:2;27425:6;27421:15;27414:48;27229:240;:::o;27475:366::-;27617:3;27638:67;27702:2;27697:3;27638:67;:::i;:::-;27631:74;;27714:93;27803:3;27714:93;:::i;:::-;27832:2;27827:3;27823:12;27816:19;;27475:366;;;:::o;27847:419::-;28013:4;28051:2;28040:9;28036:18;28028:26;;28100:9;28094:4;28090:20;28086:1;28075:9;28071:17;28064:47;28128:131;28254:4;28128:131;:::i;:::-;28120:139;;27847:419;;;:::o;28272:169::-;28412:21;28408:1;28400:6;28396:14;28389:45;28272:169;:::o;28447:366::-;28589:3;28610:67;28674:2;28669:3;28610:67;:::i;:::-;28603:74;;28686:93;28775:3;28686:93;:::i;:::-;28804:2;28799:3;28795:12;28788:19;;28447:366;;;:::o;28819:419::-;28985:4;29023:2;29012:9;29008:18;29000:26;;29072:9;29066:4;29062:20;29058:1;29047:9;29043:17;29036:47;29100:131;29226:4;29100:131;:::i;:::-;29092:139;;28819:419;;;:::o;29244:241::-;29384:34;29380:1;29372:6;29368:14;29361:58;29453:24;29448:2;29440:6;29436:15;29429:49;29244:241;:::o;29491:366::-;29633:3;29654:67;29718:2;29713:3;29654:67;:::i;:::-;29647:74;;29730:93;29819:3;29730:93;:::i;:::-;29848:2;29843:3;29839:12;29832:19;;29491:366;;;:::o;29863:419::-;30029:4;30067:2;30056:9;30052:18;30044:26;;30116:9;30110:4;30106:20;30102:1;30091:9;30087:17;30080:47;30144:131;30270:4;30144:131;:::i;:::-;30136:139;;29863:419;;;:::o;30288:191::-;30328:4;30348:20;30366:1;30348:20;:::i;:::-;30343:25;;30382:20;30400:1;30382:20;:::i;:::-;30377:25;;30421:1;30418;30415:8;30412:34;;;30426:18;;:::i;:::-;30412:34;30471:1;30468;30464:9;30456:17;;30288:191;;;;:::o;30485:147::-;30586:11;30623:3;30608:18;;30485:147;;;;:::o;30638:114::-;;:::o;30758:398::-;30917:3;30938:83;31019:1;31014:3;30938:83;:::i;:::-;30931:90;;31030:93;31119:3;31030:93;:::i;:::-;31148:1;31143:3;31139:11;31132:18;;30758:398;;;:::o;31162:379::-;31346:3;31368:147;31511:3;31368:147;:::i;:::-;31361:154;;31532:3;31525:10;;31162:379;;;:::o;31547:442::-;31696:4;31734:2;31723:9;31719:18;31711:26;;31747:71;31815:1;31804:9;31800:17;31791:6;31747:71;:::i;:::-;31828:72;31896:2;31885:9;31881:18;31872:6;31828:72;:::i;:::-;31910;31978:2;31967:9;31963:18;31954:6;31910:72;:::i;:::-;31547:442;;;;;;:::o;31995:220::-;32135:34;32131:1;32123:6;32119:14;32112:58;32204:3;32199:2;32191:6;32187:15;32180:28;31995:220;:::o;32221:366::-;32363:3;32384:67;32448:2;32443:3;32384:67;:::i;:::-;32377:74;;32460:93;32549:3;32460:93;:::i;:::-;32578:2;32573:3;32569:12;32562:19;;32221:366;;;:::o;32593:419::-;32759:4;32797:2;32786:9;32782:18;32774:26;;32846:9;32840:4;32836:20;32832:1;32821:9;32817:17;32810:47;32874:131;33000:4;32874:131;:::i;:::-;32866:139;;32593:419;;;:::o;33018:180::-;33066:77;33063:1;33056:88;33163:4;33160:1;33153:15;33187:4;33184:1;33177:15;33204:180;33252:77;33249:1;33242:88;33349:4;33346:1;33339:15;33373:4;33370:1;33363:15;33390:143;33447:5;33478:6;33472:13;33463:22;;33494:33;33521:5;33494:33;:::i;:::-;33390:143;;;;:::o;33539:351::-;33609:6;33658:2;33646:9;33637:7;33633:23;33629:32;33626:119;;;33664:79;;:::i;:::-;33626:119;33784:1;33809:64;33865:7;33856:6;33845:9;33841:22;33809:64;:::i;:::-;33799:74;;33755:128;33539:351;;;;:::o;33896:85::-;33941:7;33970:5;33959:16;;33896:85;;;:::o;33987:158::-;34045:9;34078:61;34096:42;34105:32;34131:5;34105:32;:::i;:::-;34096:42;:::i;:::-;34078:61;:::i;:::-;34065:74;;33987:158;;;:::o;34151:147::-;34246:45;34285:5;34246:45;:::i;:::-;34241:3;34234:58;34151:147;;:::o;34304:114::-;34371:6;34405:5;34399:12;34389:22;;34304:114;;;:::o;34424:184::-;34523:11;34557:6;34552:3;34545:19;34597:4;34592:3;34588:14;34573:29;;34424:184;;;;:::o;34614:132::-;34681:4;34704:3;34696:11;;34734:4;34729:3;34725:14;34717:22;;34614:132;;;:::o;34752:108::-;34829:24;34847:5;34829:24;:::i;:::-;34824:3;34817:37;34752:108;;:::o;34866:179::-;34935:10;34956:46;34998:3;34990:6;34956:46;:::i;:::-;35034:4;35029:3;35025:14;35011:28;;34866:179;;;;:::o;35051:113::-;35121:4;35153;35148:3;35144:14;35136:22;;35051:113;;;:::o;35200:732::-;35319:3;35348:54;35396:5;35348:54;:::i;:::-;35418:86;35497:6;35492:3;35418:86;:::i;:::-;35411:93;;35528:56;35578:5;35528:56;:::i;:::-;35607:7;35638:1;35623:284;35648:6;35645:1;35642:13;35623:284;;;35724:6;35718:13;35751:63;35810:3;35795:13;35751:63;:::i;:::-;35744:70;;35837:60;35890:6;35837:60;:::i;:::-;35827:70;;35683:224;35670:1;35667;35663:9;35658:14;;35623:284;;;35627:14;35923:3;35916:10;;35324:608;;;35200:732;;;;:::o;35938:831::-;36201:4;36239:3;36228:9;36224:19;36216:27;;36253:71;36321:1;36310:9;36306:17;36297:6;36253:71;:::i;:::-;36334:80;36410:2;36399:9;36395:18;36386:6;36334:80;:::i;:::-;36461:9;36455:4;36451:20;36446:2;36435:9;36431:18;36424:48;36489:108;36592:4;36583:6;36489:108;:::i;:::-;36481:116;;36607:72;36675:2;36664:9;36660:18;36651:6;36607:72;:::i;:::-;36689:73;36757:3;36746:9;36742:19;36733:6;36689:73;:::i;:::-;35938:831;;;;;;;;:::o;36775:807::-;37024:4;37062:3;37051:9;37047:19;37039:27;;37076:71;37144:1;37133:9;37129:17;37120:6;37076:71;:::i;:::-;37157:72;37225:2;37214:9;37210:18;37201:6;37157:72;:::i;:::-;37239:80;37315:2;37304:9;37300:18;37291:6;37239:80;:::i;:::-;37329;37405:2;37394:9;37390:18;37381:6;37329:80;:::i;:::-;37419:73;37487:3;37476:9;37472:19;37463:6;37419:73;:::i;:::-;37502;37570:3;37559:9;37555:19;37546:6;37502:73;:::i;:::-;36775:807;;;;;;;;;:::o;37588:143::-;37645:5;37676:6;37670:13;37661:22;;37692:33;37719:5;37692:33;:::i;:::-;37588:143;;;;:::o;37737:663::-;37825:6;37833;37841;37890:2;37878:9;37869:7;37865:23;37861:32;37858:119;;;37896:79;;:::i;:::-;37858:119;38016:1;38041:64;38097:7;38088:6;38077:9;38073:22;38041:64;:::i;:::-;38031:74;;37987:128;38154:2;38180:64;38236:7;38227:6;38216:9;38212:22;38180:64;:::i;:::-;38170:74;;38125:129;38293:2;38319:64;38375:7;38366:6;38355:9;38351:22;38319:64;:::i;:::-;38309:74;;38264:129;37737:663;;;;;:::o
Swarm Source
ipfs://5596d0e8145b27d6fcd2d03ce742bdac34638ce7c29ee6b58540ca73bf5011cd
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.