Feature Tip: Add private address tag to any address under My Name Tag !
ERC-20
Overview
Max Total Supply
100,000,000 UNVT
Holders
3
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
4,554,925.4406 UNVTValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Source Code Verified (Exact Match)
Contract Name:
Univaults
Compiler Version
v0.8.17+commit.8df45f5f
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-12-18 */ /** *Submitted for verification at BscScan.com on 2022-12-17 */ // File: unvt.sol // SPDX-License-Identifier: MIT /* Website: univaults.com Our Ecosystem is composed of the following Apps: Home page : http://univaults.com Market : http://market.univaults.com Governance : http://governance.univaults.com Bridge : https://bridge.univaults.com Swap : http://swap.univaults.com Stake : http://stake.univaults.com */ pragma solidity 0.8.17; 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 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 Burn(address indexed sender, uint amount0, uint amount1, address indexed to); event Swap( address indexed sender, uint amount0In, uint amount1In, uint amount0Out, uint amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint); function factory() external view returns (address); function token0() external view returns (address); function token1() external view returns (address); function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast); function price0CumulativeLast() external view returns (uint); function price1CumulativeLast() external view returns (uint); function kLast() external view returns (uint); function 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 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; } interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); } interface IERC20Metadata is IERC20 { function name() external view returns (string memory); function symbol() external view returns (string memory); function decimals() external view returns (uint8); } library Address { /** * @dev Returns true if `account` is a contract. * * [IMPORTANT] * ==== * It is unsafe to assume that an address for which this function returns * false is an externally-owned account (EOA) and not a contract. * * Among others, `isContract` will return false for the following * types of addresses: * * - an externally-owned account * - a contract in construction * - an address where a contract will be created * - an address where a contract lived, but was destroyed * ==== * * [IMPORTANT] * ==== * You shouldn't rely on `isContract` to protect against flash loan attacks! * * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract * constructor. * ==== */ function isContract(address account) internal view returns (bool) { // This method relies on extcodesize/address.code.length, which returns 0 // for contracts in construction, since the code is only stored at the end // of the constructor execution. return account.code.length > 0; } /** * @dev Replacement for Solidity's `transfer`: sends `amount` wei to * `recipient`, forwarding all available gas and reverting on errors. * * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost * of certain opcodes, possibly making contracts go over the 2300 gas limit * imposed by `transfer`, making them unable to receive funds via * `transfer`. {sendValue} removes this limitation. * * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more]. * * IMPORTANT: because control is transferred to `recipient`, care must be * taken to not create reentrancy vulnerabilities. Consider using * {ReentrancyGuard} or the * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. */ function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); (bool success, ) = recipient.call{value: amount}(""); require(success, "Address: unable to send value, recipient may have reverted"); } /** * @dev Performs a Solidity function call using a low level `call`. A * plain `call` is an unsafe replacement for a function call: use this * function instead. * * If `target` reverts with a revert reason, it is bubbled up by this * function (like regular Solidity function calls). * * Returns the raw returned data. To convert to the expected return value, * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`]. * * Requirements: * * - `target` must be a contract. * - calling `target` with `data` must not revert. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, "Address: low-level call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with * `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but also transferring `value` wei to `target`. * * Requirements: * * - the calling contract must have an ETH balance of at least `value`. * - the called Solidity function must be `payable`. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value ) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } /** * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but * with `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value, string memory errorMessage ) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); (bool success, bytes memory returndata) = target.call{value: value}(data); return verifyCallResultFromTarget(target, success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall(target, data, "Address: low-level static call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall( address target, bytes memory data, string memory errorMessage ) internal view returns (bytes memory) { (bool success, bytes memory returndata) = target.staticcall(data); return verifyCallResultFromTarget(target, success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { return functionDelegateCall(target, data, "Address: low-level delegate call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { (bool success, bytes memory returndata) = target.delegatecall(data); return verifyCallResultFromTarget(target, success, returndata, errorMessage); } /** * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract. * * _Available since v4.8._ */ function verifyCallResultFromTarget( address target, bool success, bytes memory returndata, string memory errorMessage ) internal view returns (bytes memory) { if (success) { if (returndata.length == 0) { // only check isContract if the call was successful and the return data is empty // otherwise we already know that it was a contract require(isContract(target), "Address: call to non-contract"); } return returndata; } else { _revert(returndata, errorMessage); } } /** * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the * revert reason or using the provided one. * * _Available since v4.3._ */ function verifyCallResult( bool success, bytes memory returndata, string memory errorMessage ) internal pure returns (bytes memory) { if (success) { return returndata; } else { _revert(returndata, errorMessage); } } function _revert(bytes memory returndata, string memory errorMessage) private pure { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly /// @solidity memory-safe-assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor () { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } function owner() public view returns (address) { return _owner; } modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } contract ERC20 is Context, IERC20, IERC20Metadata { mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } function name() public view virtual override returns (string memory) { return _name; } function symbol() public view virtual override returns (string memory) { return _symbol; } function decimals() public view virtual override returns (uint8) { return 18; } function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } function transfer(address recipient, uint256 amount) public virtual override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public virtual override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom( address sender, address recipient, uint256 amount ) public virtual override returns (bool) { uint256 currentAllowance = _allowances[sender][_msgSender()]; if (currentAllowance != type(uint256).max) { require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance"); unchecked { _approve(sender, _msgSender(), currentAllowance - amount); } } _transfer(sender, recipient, amount); return true; } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { uint256 currentAllowance = _allowances[_msgSender()][spender]; require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero"); unchecked { _approve(_msgSender(), spender, currentAllowance - subtractedValue); } return true; } 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); uint256 senderBalance = _balances[sender]; require(senderBalance >= amount, "ERC20: transfer amount exceeds balance"); unchecked { _balances[sender] = senderBalance - amount; } _balances[recipient] += amount; emit Transfer(sender, recipient, amount); _afterTokenTransfer(sender, recipient, amount); } function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _beforeTokenTransfer(address(0), account, amount); _totalSupply += amount; _balances[account] += amount; emit Transfer(address(0), account, amount); _afterTokenTransfer(address(0), account, amount); } function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); _beforeTokenTransfer(account, address(0), amount); uint256 accountBalance = _balances[account]; require(accountBalance >= amount, "ERC20: burn amount exceeds balance"); unchecked { _balances[account] = accountBalance - amount; } _totalSupply -= amount; emit Transfer(account, address(0), amount); _afterTokenTransfer(account, address(0), amount); } function _approve( address owner, address spender, uint256 amount ) internal virtual { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _beforeTokenTransfer( address from, address to, uint256 amount ) internal virtual {} function _afterTokenTransfer( address from, address to, uint256 amount ) internal virtual {} } contract Univaults is ERC20, Ownable { using Address for address payable; IUniswapV2Router02 public uniswapV2Router; address public uniswapV2Pair; mapping (address => bool) private _isExcludedFromFees; uint256 public liquidityFeeOnBuy; uint256 public liquidityFeeOnSell; uint256 public marketingFeeOnBuy; uint256 public marketingFeeOnSell; uint256 private _totalFeesOnBuy; uint256 private _totalFeesOnSell; uint256 public walletToWalletTransferFee; address public marketingWallet; uint256 public swapTokensAtAmount; bool private swapping; bool public tradingEnabled; event ExcludeFromFees(address indexed account, bool isExcluded); event MarketingWalletChanged(address marketingWallet); event SwapAndLiquify(uint256 tokensSwapped,uint256 bnbReceived,uint256 tokensIntoLiqudity); event SwapAndSendMarketing(uint256 tokensSwapped, uint256 bnbSend); event SwapTokensAtAmountUpdated(uint256 swapTokensAtAmount); constructor () ERC20("Univaults", "UNVT") { address newOwner = 0x79Bf0102F8774057c87267dC40aC039DCb438Df4; transferOwnership(newOwner); address router; if (block.chainid == 56) { router = 0x10ED43C718714eb63d5aA57B78B54704E256024E; // BSC Pancake Mainnet Router } else if (block.chainid == 97) { router = 0xD99D1c33F9fC3444f8101754aBC46c52416550D1; // BSC Pancake Testnet Router } else if (block.chainid == 1 || block.chainid == 5) { router = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D; // ETH Uniswap Mainnet % Testnet } else { revert(); } IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(router); address _uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()) .createPair(address(this), _uniswapV2Router.WETH()); uniswapV2Router = _uniswapV2Router; uniswapV2Pair = _uniswapV2Pair; _approve(address(this), address(uniswapV2Router), type(uint256).max); liquidityFeeOnBuy = 0; liquidityFeeOnSell = 0; marketingFeeOnBuy = 0; marketingFeeOnSell = 0; _totalFeesOnBuy = liquidityFeeOnBuy + marketingFeeOnBuy; _totalFeesOnSell = liquidityFeeOnSell + marketingFeeOnSell; walletToWalletTransferFee = 0; marketingWallet = 0xC9F1Abefc72168C10b6D92a21E7086C2FaAD85C0; _isExcludedFromFees[owner()] = true; _isExcludedFromFees[address(0xdead)] = true; _isExcludedFromFees[address(this)] = true; _isExcludedFromFees[marketingWallet] = true; _mint(newOwner, 1e8 * (10 ** decimals())); swapTokensAtAmount = totalSupply() / 5000; } receive() external payable { } function updateFees(uint256 lFeeOnBuy, uint256 mFeeOnBuy, uint256 lFeeOnSell, uint256 mFeeOnSell) external onlyOwner{ liquidityFeeOnBuy = lFeeOnBuy; liquidityFeeOnSell = lFeeOnSell; marketingFeeOnBuy = mFeeOnBuy; marketingFeeOnSell = mFeeOnSell; _totalFeesOnBuy = liquidityFeeOnBuy + marketingFeeOnBuy; _totalFeesOnSell = liquidityFeeOnSell + marketingFeeOnSell; require(_totalFeesOnBuy <= 25, "Buy Fees Cannot exceed 25%"); require(_totalFeesOnSell <= 25, "Sell Fees Cannot exceed 25%"); } function claimStuckTokens(address token) external onlyOwner { require(token != address(this), "Owner cannot claim contract's balance of its own tokens"); if (token == address(0x0)) { payable(msg.sender).sendValue(address(this).balance); return; } IERC20 ERC20token = IERC20(token); uint256 balance = ERC20token.balanceOf(address(this)); ERC20token.transfer(msg.sender, balance); } //------------------FeeManagement------------------// function excludeFromFees(address account, bool excluded) external onlyOwner{ require(_isExcludedFromFees[account] != excluded,"Account is already the value of 'excluded'"); _isExcludedFromFees[account] = excluded; emit ExcludeFromFees(account, excluded); } function isExcludedFromFees(address account) public view returns(bool) { return _isExcludedFromFees[account]; } function changeMarketingWallet(address _marketingWallet) external onlyOwner{ require(_marketingWallet != marketingWallet,"Marketing wallet is already that address"); require(_marketingWallet != address(0),"Marketing wallet cannot be the zero address"); marketingWallet = _marketingWallet; emit MarketingWalletChanged(marketingWallet); } function enableTrading() external onlyOwner { require(!tradingEnabled, "Trading is already enabled"); tradingEnabled = true; } //------------------Transfer------------------// 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"); require(tradingEnabled || _isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading is not enabled yet"); if (amount == 0) { super._transfer(from, to, 0); return; } uint256 contractTokenBalance = balanceOf(address(this)); bool canSwap = contractTokenBalance >= swapTokensAtAmount; if (canSwap && !swapping && to == uniswapV2Pair && _totalFeesOnBuy + _totalFeesOnSell > 0 ) { swapping = true; uint256 totalFee = _totalFeesOnBuy + _totalFeesOnSell; uint256 liquidityShare = liquidityFeeOnBuy + liquidityFeeOnSell; uint256 marketingShare = marketingFeeOnBuy + marketingFeeOnSell; if (liquidityShare > 0) { uint256 liquidityTokens = contractTokenBalance * liquidityShare / totalFee; swapAndLiquify(liquidityTokens); } if (marketingShare > 0) { uint256 marketingTokens = contractTokenBalance * marketingShare / totalFee; swapAndSendMarketing(marketingTokens); } swapping = false; } uint256 _totalFees; if (_isExcludedFromFees[from] || _isExcludedFromFees[to] || swapping) { _totalFees = 0; } else if (from == uniswapV2Pair) { _totalFees = _totalFeesOnBuy; } else if (to == uniswapV2Pair) { _totalFees = _totalFeesOnSell; } else { _totalFees = walletToWalletTransferFee; } if (_totalFees > 0) { uint256 fees = (amount * _totalFees) / 100; amount = amount - fees; super._transfer(from, address(this), fees); } super._transfer(from, to, amount); } //------------------Swap------------------// function setSwapTokensAtAmount(uint256 newAmount) external onlyOwner{ require(newAmount > totalSupply() / 1000000, "SwapTokensAtAmount must be greater than 0.0001% of total supply"); swapTokensAtAmount = newAmount; emit SwapTokensAtAmountUpdated(swapTokensAtAmount); } function swapAndLiquify(uint256 tokens) private { uint256 half = tokens / 2; uint256 otherHalf = tokens - half; uint256 initialBalance = address(this).balance; address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( half, 0, path, address(this), block.timestamp); uint256 newBalance = address(this).balance - initialBalance; uniswapV2Router.addLiquidityETH{value: newBalance}( address(this), otherHalf, 0, 0, address(0xdead), block.timestamp ); emit SwapAndLiquify(half, newBalance, otherHalf); } function swapAndSendMarketing(uint256 tokenAmount) private { uint256 initialBalance = address(this).balance; address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, path, address(this), block.timestamp); uint256 newBalance = address(this).balance - initialBalance; payable(marketingWallet).sendValue(newBalance); emit SwapAndSendMarketing(tokenAmount, newBalance); } }
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":false,"internalType":"address","name":"marketingWallet","type":"address"}],"name":"MarketingWalletChanged","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":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"bnbReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"bnbSend","type":"uint256"}],"name":"SwapAndSendMarketing","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"SwapTokensAtAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_marketingWallet","type":"address"}],"name":"changeMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"claimStuckTokens","outputs":[],"stateMutability":"nonpayable","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":"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":"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":"liquidityFeeOnBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityFeeOnSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFeeOnBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFeeOnSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"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":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"setSwapTokensAtAmount","outputs":[],"stateMutability":"nonpayable","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":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingEnabled","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":[{"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":"lFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"mFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"lFeeOnSell","type":"uint256"},{"internalType":"uint256","name":"mFeeOnSell","type":"uint256"}],"name":"updateFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"walletToWalletTransferFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040523480156200001157600080fd5b506040518060400160405280600981526020017f556e697661756c747300000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f554e56540000000000000000000000000000000000000000000000000000000081525081600390816200008f919062000ee1565b508060049081620000a1919062000ee1565b5050506000620000b6620006fb60201b60201c565b905080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35060007379bf0102f8774057c87267dc40ac039dcb438df490506200017f816200070360201b60201c565b600060384603620001a7577310ed43c718714eb63d5aa57b78b54704e256024e905062000207565b60614603620001cd5773d99d1c33f9fc3444f8101754abc46c52416550d1905062000206565b6001461480620001dd5750600546145b156200020057737a250d5630b4cf539739df2c5dacb4c659f2488d905062000205565b600080fd5b5b5b600081905060008173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200025a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000280919062001032565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002e8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200030e919062001032565b6040518363ffffffff1660e01b81526004016200032d92919062001075565b6020604051808303816000875af11580156200034d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000373919062001032565b905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200044c30600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff620008d760201b60201c565b60006009819055506000600a819055506000600b819055506000600c81905550600b546009546200047e9190620010d1565b600d81905550600c54600a54620004969190620010d1565b600e819055506000600f8190555073c9f1abefc72168c10b6d92a21e7086c2faad85c0601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600860006200050f62000aa860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016008600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160086000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620006cc84620006a162000ad260201b60201c565b600a620006af91906200126d565b6305f5e100620006c09190620012be565b62000adb60201b60201c565b611388620006df62000c5360201b60201c565b620006eb919062001338565b601181905550505050506200165b565b600033905090565b62000713620006fb60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614620007a5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200079c90620013d1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160362000817576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200080e9062001469565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160362000949576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009409062001501565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620009bb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009b29062001599565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405162000a9b9190620015cc565b60405180910390a3505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60006012905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000b4d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000b449062001639565b60405180910390fd5b62000b616000838362000c5d60201b60201c565b806002600082825462000b759190620010d1565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825462000bcc9190620010d1565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000c339190620015cc565b60405180910390a362000c4f6000838362000c6260201b60201c565b5050565b6000600254905090565b505050565b505050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000ce957607f821691505b60208210810362000cff5762000cfe62000ca1565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000d697fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000d2a565b62000d75868362000d2a565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000dc262000dbc62000db68462000d8d565b62000d97565b62000d8d565b9050919050565b6000819050919050565b62000dde8362000da1565b62000df662000ded8262000dc9565b84845462000d37565b825550505050565b600090565b62000e0d62000dfe565b62000e1a81848462000dd3565b505050565b5b8181101562000e425762000e3660008262000e03565b60018101905062000e20565b5050565b601f82111562000e915762000e5b8162000d05565b62000e668462000d1a565b8101602085101562000e76578190505b62000e8e62000e858562000d1a565b83018262000e1f565b50505b505050565b600082821c905092915050565b600062000eb66000198460080262000e96565b1980831691505092915050565b600062000ed1838362000ea3565b9150826002028217905092915050565b62000eec8262000c67565b67ffffffffffffffff81111562000f085762000f0762000c72565b5b62000f14825462000cd0565b62000f2182828562000e46565b600060209050601f83116001811462000f59576000841562000f44578287015190505b62000f50858262000ec3565b86555062000fc0565b601f19841662000f698662000d05565b60005b8281101562000f935784890151825560018201915060208501945060208101905062000f6c565b8683101562000fb3578489015162000faf601f89168262000ea3565b8355505b6001600288020188555050505b505050505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000ffa8262000fcd565b9050919050565b6200100c8162000fed565b81146200101857600080fd5b50565b6000815190506200102c8162001001565b92915050565b6000602082840312156200104b576200104a62000fc8565b5b60006200105b848285016200101b565b91505092915050565b6200106f8162000fed565b82525050565b60006040820190506200108c600083018562001064565b6200109b602083018462001064565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620010de8262000d8d565b9150620010eb8362000d8d565b9250828201905080821115620011065762001105620010a2565b5b92915050565b60008160011c9050919050565b6000808291508390505b60018511156200116b57808604811115620011435762001142620010a2565b5b6001851615620011535780820291505b808102905062001163856200110c565b945062001123565b94509492505050565b60008262001186576001905062001259565b8162001196576000905062001259565b8160018114620011af5760028114620011ba57620011f0565b600191505062001259565b60ff841115620011cf57620011ce620010a2565b5b8360020a915084821115620011e957620011e8620010a2565b5b5062001259565b5060208310610133831016604e8410600b84101617156200122a5782820a905083811115620012245762001223620010a2565b5b62001259565b62001239848484600162001119565b92509050818404811115620012535762001252620010a2565b5b81810290505b9392505050565b600060ff82169050919050565b60006200127a8262000d8d565b9150620012878362001260565b9250620012b67fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462001174565b905092915050565b6000620012cb8262000d8d565b9150620012d88362000d8d565b9250828202620012e88162000d8d565b91508282048414831517620013025762001301620010a2565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620013458262000d8d565b9150620013528362000d8d565b92508262001365576200136462001309565b5b828204905092915050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000620013b960208362001370565b9150620013c68262001381565b602082019050919050565b60006020820190508181036000830152620013ec81620013aa565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006200145160268362001370565b91506200145e82620013f3565b604082019050919050565b60006020820190508181036000830152620014848162001442565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000620014e960248362001370565b9150620014f6826200148b565b604082019050919050565b600060208201905081810360008301526200151c81620014da565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006200158160228362001370565b91506200158e8262001523565b604082019050919050565b60006020820190508181036000830152620015b48162001572565b9050919050565b620015c68162000d8d565b82525050565b6000602082019050620015e36000830184620015bb565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062001621601f8362001370565b91506200162e82620015e9565b602082019050919050565b60006020820190508181036000830152620016548162001612565b9050919050565b61402c806200166b6000396000f3fe6080604052600436106101dc5760003560e01c806375f0a87411610102578063bb85c6d111610095578063dd62ed3e11610064578063dd62ed3e146106bf578063e2f45605146106fc578063f2fde38b14610727578063f9d0831a14610750576101e3565b8063bb85c6d114610619578063c024666814610642578063c6616ba11461066b578063dc4c7dbc14610694576101e3565b806395d89b41116100d157806395d89b411461054b578063a457c2d714610576578063a9059cbb146105b3578063afa4f3b2146105f0576101e3565b806375f0a874146104b35780637b3c83b1146104de5780638a8c523c146105095780638da5cb5b14610520576101e3565b8063395093511161017a5780635fc2e596116101495780635fc2e59614610409578063702509fd1461043457806370a082311461045f578063715018a61461049c576101e3565b8063395093511461033957806349bd5a5e146103765780634ada218b146103a15780634fbee193146103cc576101e3565b806318160ddd116101b657806318160ddd1461027b57806323b872dd146102a65780632ce86fbf146102e3578063313ce5671461030e576101e3565b806306fdde03146101e8578063095ea7b3146102135780631694505e14610250576101e3565b366101e357005b600080fd5b3480156101f457600080fd5b506101fd610779565b60405161020a9190612be9565b60405180910390f35b34801561021f57600080fd5b5061023a60048036038101906102359190612ca4565b61080b565b6040516102479190612cff565b60405180910390f35b34801561025c57600080fd5b50610265610829565b6040516102729190612d79565b60405180910390f35b34801561028757600080fd5b5061029061084f565b60405161029d9190612da3565b60405180910390f35b3480156102b257600080fd5b506102cd60048036038101906102c89190612dbe565b610859565b6040516102da9190612cff565b60405180910390f35b3480156102ef57600080fd5b506102f8610978565b6040516103059190612da3565b60405180910390f35b34801561031a57600080fd5b5061032361097e565b6040516103309190612e2d565b60405180910390f35b34801561034557600080fd5b50610360600480360381019061035b9190612ca4565b610987565b60405161036d9190612cff565b60405180910390f35b34801561038257600080fd5b5061038b610a33565b6040516103989190612e57565b60405180910390f35b3480156103ad57600080fd5b506103b6610a59565b6040516103c39190612cff565b60405180910390f35b3480156103d857600080fd5b506103f360048036038101906103ee9190612e72565b610a6c565b6040516104009190612cff565b60405180910390f35b34801561041557600080fd5b5061041e610ac2565b60405161042b9190612da3565b60405180910390f35b34801561044057600080fd5b50610449610ac8565b6040516104569190612da3565b60405180910390f35b34801561046b57600080fd5b5061048660048036038101906104819190612e72565b610ace565b6040516104939190612da3565b60405180910390f35b3480156104a857600080fd5b506104b1610b16565b005b3480156104bf57600080fd5b506104c8610c6e565b6040516104d59190612e57565b60405180910390f35b3480156104ea57600080fd5b506104f3610c94565b6040516105009190612da3565b60405180910390f35b34801561051557600080fd5b5061051e610c9a565b005b34801561052c57600080fd5b50610535610d9e565b6040516105429190612e57565b60405180910390f35b34801561055757600080fd5b50610560610dc8565b60405161056d9190612be9565b60405180910390f35b34801561058257600080fd5b5061059d60048036038101906105989190612ca4565b610e5a565b6040516105aa9190612cff565b60405180910390f35b3480156105bf57600080fd5b506105da60048036038101906105d59190612ca4565b610f45565b6040516105e79190612cff565b60405180910390f35b3480156105fc57600080fd5b5061061760048036038101906106129190612e9f565b610f63565b005b34801561062557600080fd5b50610640600480360381019061063b9190612e72565b611094565b005b34801561064e57600080fd5b5061066960048036038101906106649190612ef8565b6112c7565b005b34801561067757600080fd5b50610692600480360381019061068d9190612f38565b611499565b005b3480156106a057600080fd5b506106a961160a565b6040516106b69190612da3565b60405180910390f35b3480156106cb57600080fd5b506106e660048036038101906106e19190612f9f565b611610565b6040516106f39190612da3565b60405180910390f35b34801561070857600080fd5b50610711611697565b60405161071e9190612da3565b60405180910390f35b34801561073357600080fd5b5061074e60048036038101906107499190612e72565b61169d565b005b34801561075c57600080fd5b5061077760048036038101906107729190612e72565b611863565b005b6060600380546107889061300e565b80601f01602080910402602001604051908101604052809291908181526020018280546107b49061300e565b80156108015780601f106107d657610100808354040283529160200191610801565b820191906000526020600020905b8154815290600101906020018083116107e457829003601f168201915b5050505050905090565b600061081f610818611ad2565b8484611ada565b6001905092915050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600254905090565b600080600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006108a5611ad2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610961578281101561094c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610943906130b1565b60405180910390fd5b61096085610958611ad2565b858403611ada565b5b61096c858585611ca3565b60019150509392505050565b600a5481565b60006012905090565b6000610a29610994611ad2565b8484600160006109a2611ad2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610a249190613100565b611ada565b6001905092915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601260019054906101000a900460ff1681565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600b5481565b600f5481565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610b1e611ad2565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ba490613180565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60095481565b610ca2611ad2565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d2890613180565b60405180910390fd5b601260019054906101000a900460ff1615610d81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d78906131ec565b60405180910390fd5b6001601260016101000a81548160ff021916908315150217905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610dd79061300e565b80601f0160208091040260200160405190810160405280929190818152602001828054610e039061300e565b8015610e505780601f10610e2557610100808354040283529160200191610e50565b820191906000526020600020905b815481529060010190602001808311610e3357829003601f168201915b5050505050905090565b60008060016000610e69611ad2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610f26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1d9061327e565b60405180910390fd5b610f3a610f31611ad2565b85858403611ada565b600191505092915050565b6000610f59610f52611ad2565b8484611ca3565b6001905092915050565b610f6b611ad2565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ffa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ff190613180565b60405180910390fd5b620f424061100661084f565b61101091906132cd565b8111611051576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104890613370565b60405180910390fd5b806011819055507f7c26bfee26f82e8cb57af48f4019cc64582db6fac7bad778433f10572ae8b1456011546040516110899190612da3565b60405180910390a150565b61109c611ad2565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461112b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112290613180565b60405180910390fd5b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036111bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111b290613402565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361122a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161122190613494565b60405180910390fd5b80601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fa964ba5c52d7e7bfcae4fb1ae4db9f211756d0e618e85fac5283b882a39e7a0b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040516112bc9190612e57565b60405180910390a150565b6112cf611ad2565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461135e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135590613180565b60405180910390fd5b801515600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515036113f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113e790613526565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405161148d9190612cff565b60405180910390a25050565b6114a1611ad2565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611530576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152790613180565b60405180910390fd5b8360098190555081600a8190555082600b8190555080600c81905550600b5460095461155c9190613100565b600d81905550600c54600a546115729190613100565b600e819055506019600d5411156115be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115b590613592565b60405180910390fd5b6019600e541115611604576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115fb906135fe565b60405180910390fd5b50505050565b600c5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60115481565b6116a5611ad2565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611734576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172b90613180565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036117a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179a90613690565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61186b611ad2565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118f190613180565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611968576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161195f90613722565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036119ca576119c5473373ffffffffffffffffffffffffffffffffffffffff166121f190919063ffffffff16565b611acf565b600081905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611a0a9190612e57565b602060405180830381865afa158015611a27573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a4b9190613757565b90508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401611a88929190613784565b6020604051808303816000875af1158015611aa7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611acb91906137c2565b5050505b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611b49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b4090613861565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611bb8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611baf906138f3565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611c969190612da3565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611d12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d0990613985565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611d81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d7890613a17565b60405180910390fd5b601260019054906101000a900460ff1680611de55750600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611e395750600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611e78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e6f90613a83565b60405180910390fd5b60008103611e9157611e8c838360006122e5565b6121ec565b6000611e9c30610ace565b905060006011548210159050808015611ec25750601260009054906101000a900460ff16155b8015611f1b5750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b8015611f3657506000600e54600d54611f349190613100565b115b1561200f576001601260006101000a81548160ff0219169083151502179055506000600e54600d54611f689190613100565b90506000600a54600954611f7c9190613100565b90506000600c54600b54611f909190613100565b90506000821115611fc1576000838387611faa9190613aa3565b611fb491906132cd565b9050611fbf81612564565b505b6000811115611ff0576000838287611fd99190613aa3565b611fe391906132cd565b9050611fee8161289e565b505b6000601260006101000a81548160ff0219169083151502179055505050505b6000600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806120b25750600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806120c95750601260009054906101000a900460ff165b156120d7576000905061219d565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff160361213657600d54905061219c565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff160361219557600e54905061219b565b600f5490505b5b5b60008111156121dd576000606482866121b69190613aa3565b6121c091906132cd565b905080856121ce9190613ae5565b94506121db8730836122e5565b505b6121e88686866122e5565b5050505b505050565b80471015612234576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161222b90613b65565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff168260405161225a90613bb6565b60006040518083038185875af1925050503d8060008114612297576040519150601f19603f3d011682016040523d82523d6000602084013e61229c565b606091505b50509050806122e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122d790613c3d565b60405180910390fd5b505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612354576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161234b90613985565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036123c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123ba90613a17565b60405180910390fd5b6123ce838383612b4f565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612454576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161244b90613ccf565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546124e79190613100565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161254b9190612da3565b60405180910390a361255e848484612b54565b50505050565b600060028261257391906132cd565b9050600081836125839190613ae5565b905060004790506000600267ffffffffffffffff8111156125a7576125a6613cef565b5b6040519080825280602002602001820160405280156125d55781602001602082028036833780820191505090505b50905030816000815181106125ed576125ec613d1e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612694573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126b89190613d62565b816001815181106126cc576126cb613d1e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478560008430426040518663ffffffff1660e01b815260040161276a959493929190613e88565b600060405180830381600087803b15801561278457600080fd5b505af1158015612798573d6000803e3d6000fd5b50505050600082476127aa9190613ae5565b9050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71982308760008061dead426040518863ffffffff1660e01b815260040161281596959493929190613ee2565b60606040518083038185885af1158015612833573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906128589190613f43565b5050507f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb56185828660405161288e93929190613f96565b60405180910390a1505050505050565b60004790506000600267ffffffffffffffff8111156128c0576128bf613cef565b5b6040519080825280602002602001820160405280156128ee5781602001602082028036833780820191505090505b509050308160008151811061290657612905613d1e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156129ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129d19190613d62565b816001815181106129e5576129e4613d1e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008430426040518663ffffffff1660e01b8152600401612a83959493929190613e88565b600060405180830381600087803b158015612a9d57600080fd5b505af1158015612ab1573d6000803e3d6000fd5b5050505060008247612ac39190613ae5565b9050612b1081601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166121f190919063ffffffff16565b7f957ad1fc6d4d41da6d1a8d37303289ef3c4b78e0285ff5df1e12070ef0e629998482604051612b41929190613fcd565b60405180910390a150505050565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612b93578082015181840152602081019050612b78565b60008484015250505050565b6000601f19601f8301169050919050565b6000612bbb82612b59565b612bc58185612b64565b9350612bd5818560208601612b75565b612bde81612b9f565b840191505092915050565b60006020820190508181036000830152612c038184612bb0565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612c3b82612c10565b9050919050565b612c4b81612c30565b8114612c5657600080fd5b50565b600081359050612c6881612c42565b92915050565b6000819050919050565b612c8181612c6e565b8114612c8c57600080fd5b50565b600081359050612c9e81612c78565b92915050565b60008060408385031215612cbb57612cba612c0b565b5b6000612cc985828601612c59565b9250506020612cda85828601612c8f565b9150509250929050565b60008115159050919050565b612cf981612ce4565b82525050565b6000602082019050612d146000830184612cf0565b92915050565b6000819050919050565b6000612d3f612d3a612d3584612c10565b612d1a565b612c10565b9050919050565b6000612d5182612d24565b9050919050565b6000612d6382612d46565b9050919050565b612d7381612d58565b82525050565b6000602082019050612d8e6000830184612d6a565b92915050565b612d9d81612c6e565b82525050565b6000602082019050612db86000830184612d94565b92915050565b600080600060608486031215612dd757612dd6612c0b565b5b6000612de586828701612c59565b9350506020612df686828701612c59565b9250506040612e0786828701612c8f565b9150509250925092565b600060ff82169050919050565b612e2781612e11565b82525050565b6000602082019050612e426000830184612e1e565b92915050565b612e5181612c30565b82525050565b6000602082019050612e6c6000830184612e48565b92915050565b600060208284031215612e8857612e87612c0b565b5b6000612e9684828501612c59565b91505092915050565b600060208284031215612eb557612eb4612c0b565b5b6000612ec384828501612c8f565b91505092915050565b612ed581612ce4565b8114612ee057600080fd5b50565b600081359050612ef281612ecc565b92915050565b60008060408385031215612f0f57612f0e612c0b565b5b6000612f1d85828601612c59565b9250506020612f2e85828601612ee3565b9150509250929050565b60008060008060808587031215612f5257612f51612c0b565b5b6000612f6087828801612c8f565b9450506020612f7187828801612c8f565b9350506040612f8287828801612c8f565b9250506060612f9387828801612c8f565b91505092959194509250565b60008060408385031215612fb657612fb5612c0b565b5b6000612fc485828601612c59565b9250506020612fd585828601612c59565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061302657607f821691505b60208210810361303957613038612fdf565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b600061309b602883612b64565b91506130a68261303f565b604082019050919050565b600060208201905081810360008301526130ca8161308e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061310b82612c6e565b915061311683612c6e565b925082820190508082111561312e5761312d6130d1565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061316a602083612b64565b915061317582613134565b602082019050919050565b600060208201905081810360008301526131998161315d565b9050919050565b7f54726164696e6720697320616c726561647920656e61626c6564000000000000600082015250565b60006131d6601a83612b64565b91506131e1826131a0565b602082019050919050565b60006020820190508181036000830152613205816131c9565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000613268602583612b64565b91506132738261320c565b604082019050919050565b600060208201905081810360008301526132978161325b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006132d882612c6e565b91506132e383612c6e565b9250826132f3576132f261329e565b5b828204905092915050565b7f53776170546f6b656e734174416d6f756e74206d75737420626520677265617460008201527f6572207468616e20302e3030303125206f6620746f74616c20737570706c7900602082015250565b600061335a603f83612b64565b9150613365826132fe565b604082019050919050565b600060208201905081810360008301526133898161334d565b9050919050565b7f4d61726b6574696e672077616c6c657420697320616c7265616479207468617460008201527f2061646472657373000000000000000000000000000000000000000000000000602082015250565b60006133ec602883612b64565b91506133f782613390565b604082019050919050565b6000602082019050818103600083015261341b816133df565b9050919050565b7f4d61726b6574696e672077616c6c65742063616e6e6f7420626520746865207a60008201527f65726f2061646472657373000000000000000000000000000000000000000000602082015250565b600061347e602b83612b64565b915061348982613422565b604082019050919050565b600060208201905081810360008301526134ad81613471565b9050919050565b7f4163636f756e7420697320616c7265616479207468652076616c7565206f662060008201527f276578636c756465642700000000000000000000000000000000000000000000602082015250565b6000613510602a83612b64565b915061351b826134b4565b604082019050919050565b6000602082019050818103600083015261353f81613503565b9050919050565b7f42757920466565732043616e6e6f742065786365656420323525000000000000600082015250565b600061357c601a83612b64565b915061358782613546565b602082019050919050565b600060208201905081810360008301526135ab8161356f565b9050919050565b7f53656c6c20466565732043616e6e6f7420657863656564203235250000000000600082015250565b60006135e8601b83612b64565b91506135f3826135b2565b602082019050919050565b60006020820190508181036000830152613617816135db565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061367a602683612b64565b91506136858261361e565b604082019050919050565b600060208201905081810360008301526136a98161366d565b9050919050565b7f4f776e65722063616e6e6f7420636c61696d20636f6e7472616374277320626160008201527f6c616e6365206f6620697473206f776e20746f6b656e73000000000000000000602082015250565b600061370c603783612b64565b9150613717826136b0565b604082019050919050565b6000602082019050818103600083015261373b816136ff565b9050919050565b60008151905061375181612c78565b92915050565b60006020828403121561376d5761376c612c0b565b5b600061377b84828501613742565b91505092915050565b60006040820190506137996000830185612e48565b6137a66020830184612d94565b9392505050565b6000815190506137bc81612ecc565b92915050565b6000602082840312156137d8576137d7612c0b565b5b60006137e6848285016137ad565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061384b602483612b64565b9150613856826137ef565b604082019050919050565b6000602082019050818103600083015261387a8161383e565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006138dd602283612b64565b91506138e882613881565b604082019050919050565b6000602082019050818103600083015261390c816138d0565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061396f602583612b64565b915061397a82613913565b604082019050919050565b6000602082019050818103600083015261399e81613962565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613a01602383612b64565b9150613a0c826139a5565b604082019050919050565b60006020820190508181036000830152613a30816139f4565b9050919050565b7f54726164696e67206973206e6f7420656e61626c656420796574000000000000600082015250565b6000613a6d601a83612b64565b9150613a7882613a37565b602082019050919050565b60006020820190508181036000830152613a9c81613a60565b9050919050565b6000613aae82612c6e565b9150613ab983612c6e565b9250828202613ac781612c6e565b91508282048414831517613ade57613add6130d1565b5b5092915050565b6000613af082612c6e565b9150613afb83612c6e565b9250828203905081811115613b1357613b126130d1565b5b92915050565b7f416464726573733a20696e73756666696369656e742062616c616e6365000000600082015250565b6000613b4f601d83612b64565b9150613b5a82613b19565b602082019050919050565b60006020820190508181036000830152613b7e81613b42565b9050919050565b600081905092915050565b50565b6000613ba0600083613b85565b9150613bab82613b90565b600082019050919050565b6000613bc182613b93565b9150819050919050565b7f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260008201527f6563697069656e74206d61792068617665207265766572746564000000000000602082015250565b6000613c27603a83612b64565b9150613c3282613bcb565b604082019050919050565b60006020820190508181036000830152613c5681613c1a565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000613cb9602683612b64565b9150613cc482613c5d565b604082019050919050565b60006020820190508181036000830152613ce881613cac565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050613d5c81612c42565b92915050565b600060208284031215613d7857613d77612c0b565b5b6000613d8684828501613d4d565b91505092915050565b6000819050919050565b6000613db4613daf613daa84613d8f565b612d1a565b612c6e565b9050919050565b613dc481613d99565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613dff81612c30565b82525050565b6000613e118383613df6565b60208301905092915050565b6000602082019050919050565b6000613e3582613dca565b613e3f8185613dd5565b9350613e4a83613de6565b8060005b83811015613e7b578151613e628882613e05565b9750613e6d83613e1d565b925050600181019050613e4e565b5085935050505092915050565b600060a082019050613e9d6000830188612d94565b613eaa6020830187613dbb565b8181036040830152613ebc8186613e2a565b9050613ecb6060830185612e48565b613ed86080830184612d94565b9695505050505050565b600060c082019050613ef76000830189612e48565b613f046020830188612d94565b613f116040830187613dbb565b613f1e6060830186613dbb565b613f2b6080830185612e48565b613f3860a0830184612d94565b979650505050505050565b600080600060608486031215613f5c57613f5b612c0b565b5b6000613f6a86828701613742565b9350506020613f7b86828701613742565b9250506040613f8c86828701613742565b9150509250925092565b6000606082019050613fab6000830186612d94565b613fb86020830185612d94565b613fc56040830184612d94565b949350505050565b6000604082019050613fe26000830185612d94565b613fef6020830184612d94565b939250505056fea2646970667358221220692d5eb907d42fb9ac6a2686897ab88b2134825d5cc4f34f55c57130dcde9a1864736f6c63430008110033
Deployed Bytecode
0x6080604052600436106101dc5760003560e01c806375f0a87411610102578063bb85c6d111610095578063dd62ed3e11610064578063dd62ed3e146106bf578063e2f45605146106fc578063f2fde38b14610727578063f9d0831a14610750576101e3565b8063bb85c6d114610619578063c024666814610642578063c6616ba11461066b578063dc4c7dbc14610694576101e3565b806395d89b41116100d157806395d89b411461054b578063a457c2d714610576578063a9059cbb146105b3578063afa4f3b2146105f0576101e3565b806375f0a874146104b35780637b3c83b1146104de5780638a8c523c146105095780638da5cb5b14610520576101e3565b8063395093511161017a5780635fc2e596116101495780635fc2e59614610409578063702509fd1461043457806370a082311461045f578063715018a61461049c576101e3565b8063395093511461033957806349bd5a5e146103765780634ada218b146103a15780634fbee193146103cc576101e3565b806318160ddd116101b657806318160ddd1461027b57806323b872dd146102a65780632ce86fbf146102e3578063313ce5671461030e576101e3565b806306fdde03146101e8578063095ea7b3146102135780631694505e14610250576101e3565b366101e357005b600080fd5b3480156101f457600080fd5b506101fd610779565b60405161020a9190612be9565b60405180910390f35b34801561021f57600080fd5b5061023a60048036038101906102359190612ca4565b61080b565b6040516102479190612cff565b60405180910390f35b34801561025c57600080fd5b50610265610829565b6040516102729190612d79565b60405180910390f35b34801561028757600080fd5b5061029061084f565b60405161029d9190612da3565b60405180910390f35b3480156102b257600080fd5b506102cd60048036038101906102c89190612dbe565b610859565b6040516102da9190612cff565b60405180910390f35b3480156102ef57600080fd5b506102f8610978565b6040516103059190612da3565b60405180910390f35b34801561031a57600080fd5b5061032361097e565b6040516103309190612e2d565b60405180910390f35b34801561034557600080fd5b50610360600480360381019061035b9190612ca4565b610987565b60405161036d9190612cff565b60405180910390f35b34801561038257600080fd5b5061038b610a33565b6040516103989190612e57565b60405180910390f35b3480156103ad57600080fd5b506103b6610a59565b6040516103c39190612cff565b60405180910390f35b3480156103d857600080fd5b506103f360048036038101906103ee9190612e72565b610a6c565b6040516104009190612cff565b60405180910390f35b34801561041557600080fd5b5061041e610ac2565b60405161042b9190612da3565b60405180910390f35b34801561044057600080fd5b50610449610ac8565b6040516104569190612da3565b60405180910390f35b34801561046b57600080fd5b5061048660048036038101906104819190612e72565b610ace565b6040516104939190612da3565b60405180910390f35b3480156104a857600080fd5b506104b1610b16565b005b3480156104bf57600080fd5b506104c8610c6e565b6040516104d59190612e57565b60405180910390f35b3480156104ea57600080fd5b506104f3610c94565b6040516105009190612da3565b60405180910390f35b34801561051557600080fd5b5061051e610c9a565b005b34801561052c57600080fd5b50610535610d9e565b6040516105429190612e57565b60405180910390f35b34801561055757600080fd5b50610560610dc8565b60405161056d9190612be9565b60405180910390f35b34801561058257600080fd5b5061059d60048036038101906105989190612ca4565b610e5a565b6040516105aa9190612cff565b60405180910390f35b3480156105bf57600080fd5b506105da60048036038101906105d59190612ca4565b610f45565b6040516105e79190612cff565b60405180910390f35b3480156105fc57600080fd5b5061061760048036038101906106129190612e9f565b610f63565b005b34801561062557600080fd5b50610640600480360381019061063b9190612e72565b611094565b005b34801561064e57600080fd5b5061066960048036038101906106649190612ef8565b6112c7565b005b34801561067757600080fd5b50610692600480360381019061068d9190612f38565b611499565b005b3480156106a057600080fd5b506106a961160a565b6040516106b69190612da3565b60405180910390f35b3480156106cb57600080fd5b506106e660048036038101906106e19190612f9f565b611610565b6040516106f39190612da3565b60405180910390f35b34801561070857600080fd5b50610711611697565b60405161071e9190612da3565b60405180910390f35b34801561073357600080fd5b5061074e60048036038101906107499190612e72565b61169d565b005b34801561075c57600080fd5b5061077760048036038101906107729190612e72565b611863565b005b6060600380546107889061300e565b80601f01602080910402602001604051908101604052809291908181526020018280546107b49061300e565b80156108015780601f106107d657610100808354040283529160200191610801565b820191906000526020600020905b8154815290600101906020018083116107e457829003601f168201915b5050505050905090565b600061081f610818611ad2565b8484611ada565b6001905092915050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600254905090565b600080600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006108a5611ad2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610961578281101561094c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610943906130b1565b60405180910390fd5b61096085610958611ad2565b858403611ada565b5b61096c858585611ca3565b60019150509392505050565b600a5481565b60006012905090565b6000610a29610994611ad2565b8484600160006109a2611ad2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610a249190613100565b611ada565b6001905092915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601260019054906101000a900460ff1681565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600b5481565b600f5481565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610b1e611ad2565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ba490613180565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60095481565b610ca2611ad2565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d2890613180565b60405180910390fd5b601260019054906101000a900460ff1615610d81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d78906131ec565b60405180910390fd5b6001601260016101000a81548160ff021916908315150217905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610dd79061300e565b80601f0160208091040260200160405190810160405280929190818152602001828054610e039061300e565b8015610e505780601f10610e2557610100808354040283529160200191610e50565b820191906000526020600020905b815481529060010190602001808311610e3357829003601f168201915b5050505050905090565b60008060016000610e69611ad2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610f26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1d9061327e565b60405180910390fd5b610f3a610f31611ad2565b85858403611ada565b600191505092915050565b6000610f59610f52611ad2565b8484611ca3565b6001905092915050565b610f6b611ad2565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ffa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ff190613180565b60405180910390fd5b620f424061100661084f565b61101091906132cd565b8111611051576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104890613370565b60405180910390fd5b806011819055507f7c26bfee26f82e8cb57af48f4019cc64582db6fac7bad778433f10572ae8b1456011546040516110899190612da3565b60405180910390a150565b61109c611ad2565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461112b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112290613180565b60405180910390fd5b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036111bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111b290613402565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361122a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161122190613494565b60405180910390fd5b80601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fa964ba5c52d7e7bfcae4fb1ae4db9f211756d0e618e85fac5283b882a39e7a0b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040516112bc9190612e57565b60405180910390a150565b6112cf611ad2565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461135e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135590613180565b60405180910390fd5b801515600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515036113f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113e790613526565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405161148d9190612cff565b60405180910390a25050565b6114a1611ad2565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611530576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152790613180565b60405180910390fd5b8360098190555081600a8190555082600b8190555080600c81905550600b5460095461155c9190613100565b600d81905550600c54600a546115729190613100565b600e819055506019600d5411156115be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115b590613592565b60405180910390fd5b6019600e541115611604576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115fb906135fe565b60405180910390fd5b50505050565b600c5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60115481565b6116a5611ad2565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611734576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172b90613180565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036117a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179a90613690565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61186b611ad2565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118f190613180565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611968576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161195f90613722565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036119ca576119c5473373ffffffffffffffffffffffffffffffffffffffff166121f190919063ffffffff16565b611acf565b600081905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611a0a9190612e57565b602060405180830381865afa158015611a27573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a4b9190613757565b90508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401611a88929190613784565b6020604051808303816000875af1158015611aa7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611acb91906137c2565b5050505b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611b49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b4090613861565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611bb8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611baf906138f3565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611c969190612da3565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611d12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d0990613985565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611d81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d7890613a17565b60405180910390fd5b601260019054906101000a900460ff1680611de55750600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611e395750600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611e78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e6f90613a83565b60405180910390fd5b60008103611e9157611e8c838360006122e5565b6121ec565b6000611e9c30610ace565b905060006011548210159050808015611ec25750601260009054906101000a900460ff16155b8015611f1b5750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b8015611f3657506000600e54600d54611f349190613100565b115b1561200f576001601260006101000a81548160ff0219169083151502179055506000600e54600d54611f689190613100565b90506000600a54600954611f7c9190613100565b90506000600c54600b54611f909190613100565b90506000821115611fc1576000838387611faa9190613aa3565b611fb491906132cd565b9050611fbf81612564565b505b6000811115611ff0576000838287611fd99190613aa3565b611fe391906132cd565b9050611fee8161289e565b505b6000601260006101000a81548160ff0219169083151502179055505050505b6000600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806120b25750600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806120c95750601260009054906101000a900460ff165b156120d7576000905061219d565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff160361213657600d54905061219c565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff160361219557600e54905061219b565b600f5490505b5b5b60008111156121dd576000606482866121b69190613aa3565b6121c091906132cd565b905080856121ce9190613ae5565b94506121db8730836122e5565b505b6121e88686866122e5565b5050505b505050565b80471015612234576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161222b90613b65565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff168260405161225a90613bb6565b60006040518083038185875af1925050503d8060008114612297576040519150601f19603f3d011682016040523d82523d6000602084013e61229c565b606091505b50509050806122e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122d790613c3d565b60405180910390fd5b505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612354576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161234b90613985565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036123c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123ba90613a17565b60405180910390fd5b6123ce838383612b4f565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612454576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161244b90613ccf565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546124e79190613100565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161254b9190612da3565b60405180910390a361255e848484612b54565b50505050565b600060028261257391906132cd565b9050600081836125839190613ae5565b905060004790506000600267ffffffffffffffff8111156125a7576125a6613cef565b5b6040519080825280602002602001820160405280156125d55781602001602082028036833780820191505090505b50905030816000815181106125ed576125ec613d1e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612694573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126b89190613d62565b816001815181106126cc576126cb613d1e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478560008430426040518663ffffffff1660e01b815260040161276a959493929190613e88565b600060405180830381600087803b15801561278457600080fd5b505af1158015612798573d6000803e3d6000fd5b50505050600082476127aa9190613ae5565b9050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71982308760008061dead426040518863ffffffff1660e01b815260040161281596959493929190613ee2565b60606040518083038185885af1158015612833573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906128589190613f43565b5050507f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb56185828660405161288e93929190613f96565b60405180910390a1505050505050565b60004790506000600267ffffffffffffffff8111156128c0576128bf613cef565b5b6040519080825280602002602001820160405280156128ee5781602001602082028036833780820191505090505b509050308160008151811061290657612905613d1e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156129ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129d19190613d62565b816001815181106129e5576129e4613d1e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008430426040518663ffffffff1660e01b8152600401612a83959493929190613e88565b600060405180830381600087803b158015612a9d57600080fd5b505af1158015612ab1573d6000803e3d6000fd5b5050505060008247612ac39190613ae5565b9050612b1081601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166121f190919063ffffffff16565b7f957ad1fc6d4d41da6d1a8d37303289ef3c4b78e0285ff5df1e12070ef0e629998482604051612b41929190613fcd565b60405180910390a150505050565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612b93578082015181840152602081019050612b78565b60008484015250505050565b6000601f19601f8301169050919050565b6000612bbb82612b59565b612bc58185612b64565b9350612bd5818560208601612b75565b612bde81612b9f565b840191505092915050565b60006020820190508181036000830152612c038184612bb0565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612c3b82612c10565b9050919050565b612c4b81612c30565b8114612c5657600080fd5b50565b600081359050612c6881612c42565b92915050565b6000819050919050565b612c8181612c6e565b8114612c8c57600080fd5b50565b600081359050612c9e81612c78565b92915050565b60008060408385031215612cbb57612cba612c0b565b5b6000612cc985828601612c59565b9250506020612cda85828601612c8f565b9150509250929050565b60008115159050919050565b612cf981612ce4565b82525050565b6000602082019050612d146000830184612cf0565b92915050565b6000819050919050565b6000612d3f612d3a612d3584612c10565b612d1a565b612c10565b9050919050565b6000612d5182612d24565b9050919050565b6000612d6382612d46565b9050919050565b612d7381612d58565b82525050565b6000602082019050612d8e6000830184612d6a565b92915050565b612d9d81612c6e565b82525050565b6000602082019050612db86000830184612d94565b92915050565b600080600060608486031215612dd757612dd6612c0b565b5b6000612de586828701612c59565b9350506020612df686828701612c59565b9250506040612e0786828701612c8f565b9150509250925092565b600060ff82169050919050565b612e2781612e11565b82525050565b6000602082019050612e426000830184612e1e565b92915050565b612e5181612c30565b82525050565b6000602082019050612e6c6000830184612e48565b92915050565b600060208284031215612e8857612e87612c0b565b5b6000612e9684828501612c59565b91505092915050565b600060208284031215612eb557612eb4612c0b565b5b6000612ec384828501612c8f565b91505092915050565b612ed581612ce4565b8114612ee057600080fd5b50565b600081359050612ef281612ecc565b92915050565b60008060408385031215612f0f57612f0e612c0b565b5b6000612f1d85828601612c59565b9250506020612f2e85828601612ee3565b9150509250929050565b60008060008060808587031215612f5257612f51612c0b565b5b6000612f6087828801612c8f565b9450506020612f7187828801612c8f565b9350506040612f8287828801612c8f565b9250506060612f9387828801612c8f565b91505092959194509250565b60008060408385031215612fb657612fb5612c0b565b5b6000612fc485828601612c59565b9250506020612fd585828601612c59565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061302657607f821691505b60208210810361303957613038612fdf565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b600061309b602883612b64565b91506130a68261303f565b604082019050919050565b600060208201905081810360008301526130ca8161308e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061310b82612c6e565b915061311683612c6e565b925082820190508082111561312e5761312d6130d1565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061316a602083612b64565b915061317582613134565b602082019050919050565b600060208201905081810360008301526131998161315d565b9050919050565b7f54726164696e6720697320616c726561647920656e61626c6564000000000000600082015250565b60006131d6601a83612b64565b91506131e1826131a0565b602082019050919050565b60006020820190508181036000830152613205816131c9565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000613268602583612b64565b91506132738261320c565b604082019050919050565b600060208201905081810360008301526132978161325b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006132d882612c6e565b91506132e383612c6e565b9250826132f3576132f261329e565b5b828204905092915050565b7f53776170546f6b656e734174416d6f756e74206d75737420626520677265617460008201527f6572207468616e20302e3030303125206f6620746f74616c20737570706c7900602082015250565b600061335a603f83612b64565b9150613365826132fe565b604082019050919050565b600060208201905081810360008301526133898161334d565b9050919050565b7f4d61726b6574696e672077616c6c657420697320616c7265616479207468617460008201527f2061646472657373000000000000000000000000000000000000000000000000602082015250565b60006133ec602883612b64565b91506133f782613390565b604082019050919050565b6000602082019050818103600083015261341b816133df565b9050919050565b7f4d61726b6574696e672077616c6c65742063616e6e6f7420626520746865207a60008201527f65726f2061646472657373000000000000000000000000000000000000000000602082015250565b600061347e602b83612b64565b915061348982613422565b604082019050919050565b600060208201905081810360008301526134ad81613471565b9050919050565b7f4163636f756e7420697320616c7265616479207468652076616c7565206f662060008201527f276578636c756465642700000000000000000000000000000000000000000000602082015250565b6000613510602a83612b64565b915061351b826134b4565b604082019050919050565b6000602082019050818103600083015261353f81613503565b9050919050565b7f42757920466565732043616e6e6f742065786365656420323525000000000000600082015250565b600061357c601a83612b64565b915061358782613546565b602082019050919050565b600060208201905081810360008301526135ab8161356f565b9050919050565b7f53656c6c20466565732043616e6e6f7420657863656564203235250000000000600082015250565b60006135e8601b83612b64565b91506135f3826135b2565b602082019050919050565b60006020820190508181036000830152613617816135db565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061367a602683612b64565b91506136858261361e565b604082019050919050565b600060208201905081810360008301526136a98161366d565b9050919050565b7f4f776e65722063616e6e6f7420636c61696d20636f6e7472616374277320626160008201527f6c616e6365206f6620697473206f776e20746f6b656e73000000000000000000602082015250565b600061370c603783612b64565b9150613717826136b0565b604082019050919050565b6000602082019050818103600083015261373b816136ff565b9050919050565b60008151905061375181612c78565b92915050565b60006020828403121561376d5761376c612c0b565b5b600061377b84828501613742565b91505092915050565b60006040820190506137996000830185612e48565b6137a66020830184612d94565b9392505050565b6000815190506137bc81612ecc565b92915050565b6000602082840312156137d8576137d7612c0b565b5b60006137e6848285016137ad565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061384b602483612b64565b9150613856826137ef565b604082019050919050565b6000602082019050818103600083015261387a8161383e565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006138dd602283612b64565b91506138e882613881565b604082019050919050565b6000602082019050818103600083015261390c816138d0565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061396f602583612b64565b915061397a82613913565b604082019050919050565b6000602082019050818103600083015261399e81613962565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613a01602383612b64565b9150613a0c826139a5565b604082019050919050565b60006020820190508181036000830152613a30816139f4565b9050919050565b7f54726164696e67206973206e6f7420656e61626c656420796574000000000000600082015250565b6000613a6d601a83612b64565b9150613a7882613a37565b602082019050919050565b60006020820190508181036000830152613a9c81613a60565b9050919050565b6000613aae82612c6e565b9150613ab983612c6e565b9250828202613ac781612c6e565b91508282048414831517613ade57613add6130d1565b5b5092915050565b6000613af082612c6e565b9150613afb83612c6e565b9250828203905081811115613b1357613b126130d1565b5b92915050565b7f416464726573733a20696e73756666696369656e742062616c616e6365000000600082015250565b6000613b4f601d83612b64565b9150613b5a82613b19565b602082019050919050565b60006020820190508181036000830152613b7e81613b42565b9050919050565b600081905092915050565b50565b6000613ba0600083613b85565b9150613bab82613b90565b600082019050919050565b6000613bc182613b93565b9150819050919050565b7f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260008201527f6563697069656e74206d61792068617665207265766572746564000000000000602082015250565b6000613c27603a83612b64565b9150613c3282613bcb565b604082019050919050565b60006020820190508181036000830152613c5681613c1a565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000613cb9602683612b64565b9150613cc482613c5d565b604082019050919050565b60006020820190508181036000830152613ce881613cac565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050613d5c81612c42565b92915050565b600060208284031215613d7857613d77612c0b565b5b6000613d8684828501613d4d565b91505092915050565b6000819050919050565b6000613db4613daf613daa84613d8f565b612d1a565b612c6e565b9050919050565b613dc481613d99565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613dff81612c30565b82525050565b6000613e118383613df6565b60208301905092915050565b6000602082019050919050565b6000613e3582613dca565b613e3f8185613dd5565b9350613e4a83613de6565b8060005b83811015613e7b578151613e628882613e05565b9750613e6d83613e1d565b925050600181019050613e4e565b5085935050505092915050565b600060a082019050613e9d6000830188612d94565b613eaa6020830187613dbb565b8181036040830152613ebc8186613e2a565b9050613ecb6060830185612e48565b613ed86080830184612d94565b9695505050505050565b600060c082019050613ef76000830189612e48565b613f046020830188612d94565b613f116040830187613dbb565b613f1e6060830186613dbb565b613f2b6080830185612e48565b613f3860a0830184612d94565b979650505050505050565b600080600060608486031215613f5c57613f5b612c0b565b5b6000613f6a86828701613742565b9350506020613f7b86828701613742565b9250506040613f8c86828701613742565b9150509250925092565b6000606082019050613fab6000830186612d94565b613fb86020830185612d94565b613fc56040830184612d94565b949350505050565b6000604082019050613fe26000830185612d94565b613fef6020830184612d94565b939250505056fea2646970667358221220692d5eb907d42fb9ac6a2686897ab88b2134825d5cc4f34f55c57130dcde9a1864736f6c63430008110033
Deployed Bytecode Sourcemap
25065:9038:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20350:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21264:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25151:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20671:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21441:573;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25339:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20570:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22022:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25199:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25708:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29356:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25382:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25544:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20787:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19537:148;;;;;;;;;;;;;:::i;:::-;;25594:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25299:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29878:149;;;;;;;;;;;;;:::i;:::-;;19323:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20458:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22245:413;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20922:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32261:300;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29489:377;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29058:290;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;27943:579;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25422:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21105:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25634:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19693:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;28530:465;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20350:100;20404:13;20437:5;20430:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20350:100;:::o;21264:169::-;21347:4;21364:39;21373:12;:10;:12::i;:::-;21387:7;21396:6;21364:8;:39::i;:::-;21421:4;21414:11;;21264:169;;;;:::o;25151:41::-;;;;;;;;;;;;;:::o;20671:108::-;20732:7;20759:12;;20752:19;;20671:108;:::o;21441:573::-;21581:4;21598:24;21625:11;:19;21637:6;21625:19;;;;;;;;;;;;;;;:33;21645:12;:10;:12::i;:::-;21625:33;;;;;;;;;;;;;;;;21598:60;;21693:17;21673:16;:37;21669:265;;21755:6;21735:16;:26;;21727:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;21850:57;21859:6;21867:12;:10;:12::i;:::-;21900:6;21881:16;:25;21850:8;:57::i;:::-;21669:265;21946:36;21956:6;21964:9;21975:6;21946:9;:36::i;:::-;22002:4;21995:11;;;21441:573;;;;;:::o;25339:34::-;;;;:::o;20570:93::-;20628:5;20653:2;20646:9;;20570:93;:::o;22022:215::-;22110:4;22127:80;22136:12;:10;:12::i;:::-;22150:7;22196:10;22159:11;:25;22171:12;:10;:12::i;:::-;22159:25;;;;;;;;;;;;;;;:34;22185:7;22159:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;22127:8;:80::i;:::-;22225:4;22218:11;;22022:215;;;;:::o;25199:29::-;;;;;;;;;;;;;:::o;25708:26::-;;;;;;;;;;;;;:::o;29356:125::-;29421:4;29445:19;:28;29465:7;29445:28;;;;;;;;;;;;;;;;;;;;;;;;;29438:35;;29356:125;;;:::o;25382:33::-;;;;:::o;25544:41::-;;;;:::o;20787:127::-;20861:7;20888:9;:18;20898:7;20888:18;;;;;;;;;;;;;;;;20881:25;;20787:127;;;:::o;19537:148::-;19460:12;:10;:12::i;:::-;19450:22;;:6;;;;;;;;;;;:22;;;19442:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19644:1:::1;19607:40;;19628:6;;;;;;;;;;;19607:40;;;;;;;;;;;;19675:1;19658:6;;:19;;;;;;;;;;;;;;;;;;19537:148::o:0;25594:31::-;;;;;;;;;;;;;:::o;25299:33::-;;;;:::o;29878:149::-;19460:12;:10;:12::i;:::-;19450:22;;:6;;;;;;;;;;;:22;;;19442:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;29942:14:::1;;;;;;;;;;;29941:15;29933:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;30015:4;29998:14;;:21;;;;;;;;;;;;;;;;;;29878:149::o:0;19323:79::-;19361:7;19388:6;;;;;;;;;;;19381:13;;19323:79;:::o;20458:104::-;20514:13;20547:7;20540:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20458:104;:::o;22245:413::-;22338:4;22355:24;22382:11;:25;22394:12;:10;:12::i;:::-;22382:25;;;;;;;;;;;;;;;:34;22408:7;22382:34;;;;;;;;;;;;;;;;22355:61;;22455:15;22435:16;:35;;22427:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;22548:67;22557:12;:10;:12::i;:::-;22571:7;22599:15;22580:16;:34;22548:8;:67::i;:::-;22646:4;22639:11;;;22245:413;;;;:::o;20922:175::-;21008:4;21025:42;21035:12;:10;:12::i;:::-;21049:9;21060:6;21025:9;:42::i;:::-;21085:4;21078:11;;20922:175;;;;:::o;32261:300::-;19460:12;:10;:12::i;:::-;19450:22;;:6;;;;;;;;;;;:22;;;19442:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;32376:7:::1;32360:13;:11;:13::i;:::-;:23;;;;:::i;:::-;32348:9;:35;32340:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;32483:9;32462:18;:30;;;;32508:45;32534:18;;32508:45;;;;;;:::i;:::-;;;;;;;;32261:300:::0;:::o;29489:377::-;19460:12;:10;:12::i;:::-;19450:22;;:6;;;;;;;;;;;:22;;;19442:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;29603:15:::1;;;;;;;;;;;29583:35;;:16;:35;;::::0;29575:87:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;29709:1;29681:30;;:16;:30;;::::0;29673:85:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;29787:16;29769:15;;:34;;;;;;;;;;;;;;;;;;29819:39;29842:15;;;;;;;;;;;29819:39;;;;;;:::i;:::-;;;;;;;;29489:377:::0;:::o;29058:290::-;19460:12;:10;:12::i;:::-;19450:22;;:6;;;;;;;;;;;:22;;;19442:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;29184:8:::1;29152:40;;:19;:28;29172:7;29152:28;;;;;;;;;;;;;;;;;;;;;;;;;:40;;::::0;29144:94:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;29280:8;29249:19;:28;29269:7;29249:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;29322:7;29306:34;;;29331:8;29306:34;;;;;;:::i;:::-;;;;;;;;29058:290:::0;;:::o;27943:579::-;19460:12;:10;:12::i;:::-;19450:22;;:6;;;;;;;;;;;:22;;;19442:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;28090:9:::1;28070:17;:29;;;;28131:10;28110:18;:31;;;;28172:9;28152:17;:29;;;;28213:10;28192:18;:31;;;;28278:17;;28257;;:38;;;;:::i;:::-;28236:15;:59;;;;28348:18;;28327;;:39;;;;:::i;:::-;28306:16;:60;;;;28406:2;28387:15;;:21;;28379:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;28478:2;28458:16;;:22;;28450:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;27943:579:::0;;;;:::o;25422:34::-;;;;:::o;21105:151::-;21194:7;21221:11;:18;21233:5;21221:18;;;;;;;;;;;;;;;:27;21240:7;21221:27;;;;;;;;;;;;;;;;21214:34;;21105:151;;;;:::o;25634:34::-;;;;:::o;19693:244::-;19460:12;:10;:12::i;:::-;19450:22;;:6;;;;;;;;;;;:22;;;19442:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19802:1:::1;19782:22;;:8;:22;;::::0;19774:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;19892:8;19863:38;;19884:6;;;;;;;;;;;19863:38;;;;;;;;;;;;19921:8;19912:6;;:17;;;;;;;;;;;;;;;;;;19693:244:::0;:::o;28530:465::-;19460:12;:10;:12::i;:::-;19450:22;;:6;;;;;;;;;;;:22;;;19442:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;28626:4:::1;28609:22;;:5;:22;;::::0;28601:90:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;28723:3;28706:21;;:5;:21;;::::0;28702:127:::1;;28744:52;28774:21;28752:10;28744:29;;;;:52;;;;:::i;:::-;28811:7;;28702:127;28839:17;28866:5;28839:33;;28883:15;28901:10;:20;;;28930:4;28901:35;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;28883:53;;28947:10;:19;;;28967:10;28979:7;28947:40;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;28590:405;;19520:1;28530:465:::0;:::o;18646:98::-;18699:7;18726:10;18719:17;;18646:98;:::o;24413:380::-;24566:1;24549:19;;:5;:19;;;24541:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24647:1;24628:21;;:7;:21;;;24620:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24731:6;24701:11;:18;24713:5;24701:18;;;;;;;;;;;;;;;:27;24720:7;24701:27;;;;;;;;;;;;;;;:36;;;;24769:7;24753:32;;24762:5;24753:32;;;24778:6;24753:32;;;;;;:::i;:::-;;;;;;;;24413:380;;;:::o;30085:2122::-;30198:1;30182:18;;:4;:18;;;30174:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;30275:1;30261:16;;:2;:16;;;30253:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;30336:14;;;;;;;;;;;:43;;;;30354:19;:25;30374:4;30354:25;;;;;;;;;;;;;;;;;;;;;;;;;30336:43;:70;;;;30383:19;:23;30403:2;30383:23;;;;;;;;;;;;;;;;;;;;;;;;;30336:70;30328:109;;;;;;;;;;;;:::i;:::-;;;;;;;;;30471:1;30461:6;:11;30457:93;;30489:28;30505:4;30511:2;30515:1;30489:15;:28::i;:::-;30532:7;;30457:93;30556:28;30587:24;30605:4;30587:9;:24::i;:::-;30556:55;;30624:12;30663:18;;30639:20;:42;;30624:57;;30698:7;:33;;;;;30723:8;;;;;;;;;;;30722:9;30698:33;:69;;;;;30754:13;;;;;;;;;;;30748:19;;:2;:19;;;30698:69;:124;;;;;30821:1;30802:16;;30784:15;;:34;;;;:::i;:::-;:38;30698:124;30694:867;;;30860:4;30849:8;;:15;;;;;;;;;;;;;;;;;;30881:16;30918;;30900:15;;:34;;;;:::i;:::-;30881:53;;30949:22;30994:18;;30974:17;;:38;;;;:::i;:::-;30949:63;;31027:22;31072:18;;31052:17;;:38;;;;:::i;:::-;31027:63;;31128:1;31111:14;:18;31107:183;;;31150:23;31216:8;31199:14;31176:20;:37;;;;:::i;:::-;:48;;;;:::i;:::-;31150:74;;31243:31;31258:15;31243:14;:31::i;:::-;31131:159;31107:183;31339:1;31322:14;:18;31318:189;;;31361:23;31427:8;31410:14;31387:20;:37;;;;:::i;:::-;:48;;;;:::i;:::-;31361:74;;31454:37;31475:15;31454:20;:37::i;:::-;31342:165;31318:189;31544:5;31533:8;;:16;;;;;;;;;;;;;;;;;;30834:727;;;30694:867;31573:18;31606:19;:25;31626:4;31606:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;31635:19;:23;31655:2;31635:23;;;;;;;;;;;;;;;;;;;;;;;;;31606:52;:64;;;;31662:8;;;;;;;;;;;31606:64;31602:357;;;31700:1;31687:14;;31602:357;;;31731:13;;;;;;;;;;;31723:21;;:4;:21;;;31719:240;;31774:15;;31761:28;;31719:240;;;31817:13;;;;;;;;;;;31811:19;;:2;:19;;;31807:152;;31860:16;;31847:29;;31807:152;;;31922:25;;31909:38;;31807:152;31719:240;31602:357;31988:1;31975:10;:14;31971:183;;;32006:12;32045:3;32031:10;32022:6;:19;;;;:::i;:::-;32021:27;;;;:::i;:::-;32006:42;;32081:4;32072:6;:13;;;;:::i;:::-;32063:22;;32100:42;32116:4;32130;32137;32100:15;:42::i;:::-;31991:163;31971:183;32166:33;32182:4;32188:2;32192:6;32166:15;:33::i;:::-;30163:2044;;;30085:2122;;;;:::o;11679:317::-;11794:6;11769:21;:31;;11761:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;11848:12;11866:9;:14;;11888:6;11866:33;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11847:52;;;11918:7;11910:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;11750:246;11679:317;;:::o;22666:733::-;22824:1;22806:20;;:6;:20;;;22798:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;22908:1;22887:23;;:9;:23;;;22879:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;22963:47;22984:6;22992:9;23003:6;22963:20;:47::i;:::-;23023:21;23047:9;:17;23057:6;23047:17;;;;;;;;;;;;;;;;23023:41;;23100:6;23083:13;:23;;23075:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;23221:6;23205:13;:22;23185:9;:17;23195:6;23185:17;;;;;;;;;;;;;;;:42;;;;23273:6;23249:9;:20;23259:9;23249:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;23314:9;23297:35;;23306:6;23297:35;;;23325:6;23297:35;;;;;;:::i;:::-;;;;;;;;23345:46;23365:6;23373:9;23384:6;23345:19;:46::i;:::-;22787:612;22666:733;;;:::o;32569:876::-;32628:12;32652:1;32643:6;:10;;;;:::i;:::-;32628:25;;32664:17;32693:4;32684:6;:13;;;;:::i;:::-;32664:33;;32710:22;32735:21;32710:46;;32769:21;32807:1;32793:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32769:40;;32838:4;32820;32825:1;32820:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;32864:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;32854:4;32859:1;32854:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;32899:15;;;;;;;;;;;:66;;;32980:4;32999:1;33015:4;33042;33062:15;32899:179;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33099:18;33144:14;33120:21;:38;;;;:::i;:::-;33099:59;;33171:15;;;;;;;;;;;:31;;;33210:10;33244:4;33264:9;33288:1;33304;33328:6;33350:15;33171:205;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;33394:43;33409:4;33415:10;33427:9;33394:43;;;;;;;;:::i;:::-;;;;;;;;32617:828;;;;;32569:876;:::o;33453:647::-;33523:22;33548:21;33523:46;;33582:21;33620:1;33606:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33582:40;;33651:4;33633;33638:1;33633:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;33677:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;33667:4;33672:1;33667:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;33712:15;;;;;;;;;;;:66;;;33793:11;33819:1;33835:4;33862;33882:15;33712:186;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33911:18;33956:14;33932:21;:38;;;;:::i;:::-;33911:59;;33983:46;34018:10;33991:15;;;;;;;;;;;33983:34;;;;:46;;;;:::i;:::-;34047:45;34068:11;34081:10;34047:45;;;;;;;:::i;:::-;;;;;;;;33512:588;;;33453:647;:::o;24801:125::-;;;;:::o;24934:124::-;;;;:::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:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:60::-;3474:3;3495:5;3488:12;;3446:60;;;:::o;3512:142::-;3562:9;3595:53;3613:34;3622:24;3640:5;3622:24;:::i;:::-;3613:34;:::i;:::-;3595:53;:::i;:::-;3582:66;;3512:142;;;:::o;3660:126::-;3710:9;3743:37;3774:5;3743:37;:::i;:::-;3730:50;;3660:126;;;:::o;3792:152::-;3868:9;3901:37;3932:5;3901:37;:::i;:::-;3888:50;;3792:152;;;:::o;3950:183::-;4063:63;4120:5;4063:63;:::i;:::-;4058:3;4051:76;3950:183;;:::o;4139:274::-;4258:4;4296:2;4285:9;4281:18;4273:26;;4309:97;4403:1;4392:9;4388:17;4379:6;4309:97;:::i;:::-;4139:274;;;;:::o;4419:118::-;4506:24;4524:5;4506:24;:::i;:::-;4501:3;4494:37;4419:118;;:::o;4543:222::-;4636:4;4674:2;4663:9;4659:18;4651:26;;4687:71;4755:1;4744:9;4740:17;4731:6;4687:71;:::i;:::-;4543:222;;;;:::o;4771:619::-;4848:6;4856;4864;4913:2;4901:9;4892:7;4888:23;4884:32;4881:119;;;4919:79;;:::i;:::-;4881:119;5039:1;5064:53;5109:7;5100:6;5089:9;5085:22;5064:53;:::i;:::-;5054:63;;5010:117;5166:2;5192:53;5237:7;5228:6;5217:9;5213:22;5192:53;:::i;:::-;5182:63;;5137:118;5294:2;5320:53;5365:7;5356:6;5345:9;5341:22;5320:53;:::i;:::-;5310:63;;5265:118;4771:619;;;;;:::o;5396:86::-;5431:7;5471:4;5464:5;5460:16;5449:27;;5396:86;;;:::o;5488:112::-;5571:22;5587:5;5571:22;:::i;:::-;5566:3;5559:35;5488:112;;:::o;5606:214::-;5695:4;5733:2;5722:9;5718:18;5710:26;;5746:67;5810:1;5799:9;5795:17;5786:6;5746:67;:::i;:::-;5606:214;;;;:::o;5826:118::-;5913:24;5931:5;5913:24;:::i;:::-;5908:3;5901:37;5826:118;;:::o;5950:222::-;6043:4;6081:2;6070:9;6066:18;6058:26;;6094:71;6162:1;6151:9;6147:17;6138:6;6094:71;:::i;:::-;5950:222;;;;:::o;6178:329::-;6237:6;6286:2;6274:9;6265:7;6261:23;6257:32;6254:119;;;6292:79;;:::i;:::-;6254:119;6412:1;6437:53;6482:7;6473:6;6462:9;6458:22;6437:53;:::i;:::-;6427:63;;6383:117;6178:329;;;;:::o;6513:::-;6572:6;6621:2;6609:9;6600:7;6596:23;6592:32;6589:119;;;6627:79;;:::i;:::-;6589:119;6747:1;6772:53;6817:7;6808:6;6797:9;6793:22;6772:53;:::i;:::-;6762:63;;6718:117;6513:329;;;;:::o;6848:116::-;6918:21;6933:5;6918:21;:::i;:::-;6911:5;6908:32;6898:60;;6954:1;6951;6944:12;6898:60;6848:116;:::o;6970:133::-;7013:5;7051:6;7038:20;7029:29;;7067:30;7091:5;7067:30;:::i;:::-;6970:133;;;;:::o;7109:468::-;7174:6;7182;7231:2;7219:9;7210:7;7206:23;7202:32;7199:119;;;7237:79;;:::i;:::-;7199:119;7357:1;7382:53;7427:7;7418:6;7407:9;7403:22;7382:53;:::i;:::-;7372:63;;7328:117;7484:2;7510:50;7552:7;7543:6;7532:9;7528:22;7510:50;:::i;:::-;7500:60;;7455:115;7109:468;;;;;:::o;7583:765::-;7669:6;7677;7685;7693;7742:3;7730:9;7721:7;7717:23;7713:33;7710:120;;;7749:79;;:::i;:::-;7710:120;7869:1;7894:53;7939:7;7930:6;7919:9;7915:22;7894:53;:::i;:::-;7884:63;;7840:117;7996:2;8022:53;8067:7;8058:6;8047:9;8043:22;8022:53;:::i;:::-;8012:63;;7967:118;8124:2;8150:53;8195:7;8186:6;8175:9;8171:22;8150:53;:::i;:::-;8140:63;;8095:118;8252:2;8278:53;8323:7;8314:6;8303:9;8299:22;8278:53;:::i;:::-;8268:63;;8223:118;7583:765;;;;;;;:::o;8354:474::-;8422:6;8430;8479:2;8467:9;8458:7;8454:23;8450:32;8447:119;;;8485:79;;:::i;:::-;8447:119;8605:1;8630:53;8675:7;8666:6;8655:9;8651:22;8630:53;:::i;:::-;8620:63;;8576:117;8732:2;8758:53;8803:7;8794:6;8783:9;8779:22;8758:53;:::i;:::-;8748:63;;8703:118;8354:474;;;;;:::o;8834:180::-;8882:77;8879:1;8872:88;8979:4;8976:1;8969:15;9003:4;9000:1;8993:15;9020:320;9064:6;9101:1;9095:4;9091:12;9081:22;;9148:1;9142:4;9138:12;9169:18;9159:81;;9225:4;9217:6;9213:17;9203:27;;9159:81;9287:2;9279:6;9276:14;9256:18;9253:38;9250:84;;9306:18;;:::i;:::-;9250:84;9071:269;9020:320;;;:::o;9346:227::-;9486:34;9482:1;9474:6;9470:14;9463:58;9555:10;9550:2;9542:6;9538:15;9531:35;9346:227;:::o;9579:366::-;9721:3;9742:67;9806:2;9801:3;9742:67;:::i;:::-;9735:74;;9818:93;9907:3;9818:93;:::i;:::-;9936:2;9931:3;9927:12;9920:19;;9579:366;;;:::o;9951:419::-;10117:4;10155:2;10144:9;10140:18;10132:26;;10204:9;10198:4;10194:20;10190:1;10179:9;10175:17;10168:47;10232:131;10358:4;10232:131;:::i;:::-;10224:139;;9951:419;;;:::o;10376:180::-;10424:77;10421:1;10414:88;10521:4;10518:1;10511:15;10545:4;10542:1;10535:15;10562:191;10602:3;10621:20;10639:1;10621:20;:::i;:::-;10616:25;;10655:20;10673:1;10655:20;:::i;:::-;10650:25;;10698:1;10695;10691:9;10684:16;;10719:3;10716:1;10713:10;10710:36;;;10726:18;;:::i;:::-;10710:36;10562:191;;;;:::o;10759:182::-;10899:34;10895:1;10887:6;10883:14;10876:58;10759:182;:::o;10947:366::-;11089:3;11110:67;11174:2;11169:3;11110:67;:::i;:::-;11103:74;;11186:93;11275:3;11186:93;:::i;:::-;11304:2;11299:3;11295:12;11288:19;;10947:366;;;:::o;11319:419::-;11485:4;11523:2;11512:9;11508:18;11500:26;;11572:9;11566:4;11562:20;11558:1;11547:9;11543:17;11536:47;11600:131;11726:4;11600:131;:::i;:::-;11592:139;;11319:419;;;:::o;11744:176::-;11884:28;11880:1;11872:6;11868:14;11861:52;11744:176;:::o;11926:366::-;12068:3;12089:67;12153:2;12148:3;12089:67;:::i;:::-;12082:74;;12165:93;12254:3;12165:93;:::i;:::-;12283:2;12278:3;12274:12;12267:19;;11926:366;;;:::o;12298:419::-;12464:4;12502:2;12491:9;12487:18;12479:26;;12551:9;12545:4;12541:20;12537:1;12526:9;12522:17;12515:47;12579:131;12705:4;12579:131;:::i;:::-;12571:139;;12298:419;;;:::o;12723:224::-;12863:34;12859:1;12851:6;12847:14;12840:58;12932:7;12927:2;12919:6;12915:15;12908:32;12723:224;:::o;12953:366::-;13095:3;13116:67;13180:2;13175:3;13116:67;:::i;:::-;13109:74;;13192:93;13281:3;13192:93;:::i;:::-;13310:2;13305:3;13301:12;13294:19;;12953:366;;;:::o;13325:419::-;13491:4;13529:2;13518:9;13514:18;13506:26;;13578:9;13572:4;13568:20;13564:1;13553:9;13549:17;13542:47;13606:131;13732:4;13606:131;:::i;:::-;13598:139;;13325:419;;;:::o;13750:180::-;13798:77;13795:1;13788:88;13895:4;13892:1;13885:15;13919:4;13916:1;13909:15;13936:185;13976:1;13993:20;14011:1;13993:20;:::i;:::-;13988:25;;14027:20;14045:1;14027:20;:::i;:::-;14022:25;;14066:1;14056:35;;14071:18;;:::i;:::-;14056:35;14113:1;14110;14106:9;14101:14;;13936:185;;;;:::o;14127:250::-;14267:34;14263:1;14255:6;14251:14;14244:58;14336:33;14331:2;14323:6;14319:15;14312:58;14127:250;:::o;14383:366::-;14525:3;14546:67;14610:2;14605:3;14546:67;:::i;:::-;14539:74;;14622:93;14711:3;14622:93;:::i;:::-;14740:2;14735:3;14731:12;14724:19;;14383:366;;;:::o;14755:419::-;14921:4;14959:2;14948:9;14944:18;14936:26;;15008:9;15002:4;14998:20;14994:1;14983:9;14979:17;14972:47;15036:131;15162:4;15036:131;:::i;:::-;15028:139;;14755:419;;;:::o;15180:227::-;15320:34;15316:1;15308:6;15304:14;15297:58;15389:10;15384:2;15376:6;15372:15;15365:35;15180:227;:::o;15413:366::-;15555:3;15576:67;15640:2;15635:3;15576:67;:::i;:::-;15569:74;;15652:93;15741:3;15652:93;:::i;:::-;15770:2;15765:3;15761:12;15754:19;;15413:366;;;:::o;15785:419::-;15951:4;15989:2;15978:9;15974:18;15966:26;;16038:9;16032:4;16028:20;16024:1;16013:9;16009:17;16002:47;16066:131;16192:4;16066:131;:::i;:::-;16058:139;;15785:419;;;:::o;16210:230::-;16350:34;16346:1;16338:6;16334:14;16327:58;16419:13;16414:2;16406:6;16402:15;16395:38;16210:230;:::o;16446:366::-;16588:3;16609:67;16673:2;16668:3;16609:67;:::i;:::-;16602:74;;16685:93;16774:3;16685:93;:::i;:::-;16803:2;16798:3;16794:12;16787:19;;16446:366;;;:::o;16818:419::-;16984:4;17022:2;17011:9;17007:18;16999:26;;17071:9;17065:4;17061:20;17057:1;17046:9;17042:17;17035:47;17099:131;17225:4;17099:131;:::i;:::-;17091:139;;16818:419;;;:::o;17243:229::-;17383:34;17379:1;17371:6;17367:14;17360:58;17452:12;17447:2;17439:6;17435:15;17428:37;17243:229;:::o;17478:366::-;17620:3;17641:67;17705:2;17700:3;17641:67;:::i;:::-;17634:74;;17717:93;17806:3;17717:93;:::i;:::-;17835:2;17830:3;17826:12;17819:19;;17478:366;;;:::o;17850:419::-;18016:4;18054:2;18043:9;18039:18;18031:26;;18103:9;18097:4;18093:20;18089:1;18078:9;18074:17;18067:47;18131:131;18257:4;18131:131;:::i;:::-;18123:139;;17850:419;;;:::o;18275:176::-;18415:28;18411:1;18403:6;18399:14;18392:52;18275:176;:::o;18457:366::-;18599:3;18620:67;18684:2;18679:3;18620:67;:::i;:::-;18613:74;;18696:93;18785:3;18696:93;:::i;:::-;18814:2;18809:3;18805:12;18798:19;;18457:366;;;:::o;18829:419::-;18995:4;19033:2;19022:9;19018:18;19010:26;;19082:9;19076:4;19072:20;19068:1;19057:9;19053:17;19046:47;19110:131;19236:4;19110:131;:::i;:::-;19102:139;;18829:419;;;:::o;19254:177::-;19394:29;19390:1;19382:6;19378:14;19371:53;19254:177;:::o;19437:366::-;19579:3;19600:67;19664:2;19659:3;19600:67;:::i;:::-;19593:74;;19676:93;19765:3;19676:93;:::i;:::-;19794:2;19789:3;19785:12;19778:19;;19437:366;;;:::o;19809:419::-;19975:4;20013:2;20002:9;19998:18;19990:26;;20062:9;20056:4;20052:20;20048:1;20037:9;20033:17;20026:47;20090:131;20216:4;20090:131;:::i;:::-;20082:139;;19809:419;;;:::o;20234:225::-;20374:34;20370:1;20362:6;20358:14;20351:58;20443:8;20438:2;20430:6;20426:15;20419:33;20234:225;:::o;20465:366::-;20607:3;20628:67;20692:2;20687:3;20628:67;:::i;:::-;20621:74;;20704:93;20793:3;20704:93;:::i;:::-;20822:2;20817:3;20813:12;20806:19;;20465:366;;;:::o;20837:419::-;21003:4;21041:2;21030:9;21026:18;21018:26;;21090:9;21084:4;21080:20;21076:1;21065:9;21061:17;21054:47;21118:131;21244:4;21118:131;:::i;:::-;21110:139;;20837:419;;;:::o;21262:242::-;21402:34;21398:1;21390:6;21386:14;21379:58;21471:25;21466:2;21458:6;21454:15;21447:50;21262:242;:::o;21510:366::-;21652:3;21673:67;21737:2;21732:3;21673:67;:::i;:::-;21666:74;;21749:93;21838:3;21749:93;:::i;:::-;21867:2;21862:3;21858:12;21851:19;;21510:366;;;:::o;21882:419::-;22048:4;22086:2;22075:9;22071:18;22063:26;;22135:9;22129:4;22125:20;22121:1;22110:9;22106:17;22099:47;22163:131;22289:4;22163:131;:::i;:::-;22155:139;;21882:419;;;:::o;22307:143::-;22364:5;22395:6;22389:13;22380:22;;22411:33;22438:5;22411:33;:::i;:::-;22307:143;;;;:::o;22456:351::-;22526:6;22575:2;22563:9;22554:7;22550:23;22546:32;22543:119;;;22581:79;;:::i;:::-;22543:119;22701:1;22726:64;22782:7;22773:6;22762:9;22758:22;22726:64;:::i;:::-;22716:74;;22672:128;22456:351;;;;:::o;22813:332::-;22934:4;22972:2;22961:9;22957:18;22949:26;;22985:71;23053:1;23042:9;23038:17;23029:6;22985:71;:::i;:::-;23066:72;23134:2;23123:9;23119:18;23110:6;23066:72;:::i;:::-;22813:332;;;;;:::o;23151:137::-;23205:5;23236:6;23230:13;23221:22;;23252:30;23276:5;23252:30;:::i;:::-;23151:137;;;;:::o;23294:345::-;23361:6;23410:2;23398:9;23389:7;23385:23;23381:32;23378:119;;;23416:79;;:::i;:::-;23378:119;23536:1;23561:61;23614:7;23605:6;23594:9;23590:22;23561:61;:::i;:::-;23551:71;;23507:125;23294:345;;;;:::o;23645:223::-;23785:34;23781:1;23773:6;23769:14;23762:58;23854:6;23849:2;23841:6;23837:15;23830:31;23645:223;:::o;23874:366::-;24016:3;24037:67;24101:2;24096:3;24037:67;:::i;:::-;24030:74;;24113:93;24202:3;24113:93;:::i;:::-;24231:2;24226:3;24222:12;24215:19;;23874:366;;;:::o;24246:419::-;24412:4;24450:2;24439:9;24435:18;24427:26;;24499:9;24493:4;24489:20;24485:1;24474:9;24470:17;24463:47;24527:131;24653:4;24527:131;:::i;:::-;24519:139;;24246:419;;;:::o;24671:221::-;24811:34;24807:1;24799:6;24795:14;24788:58;24880:4;24875:2;24867:6;24863:15;24856:29;24671:221;:::o;24898:366::-;25040:3;25061:67;25125:2;25120:3;25061:67;:::i;:::-;25054:74;;25137:93;25226:3;25137:93;:::i;:::-;25255:2;25250:3;25246:12;25239:19;;24898:366;;;:::o;25270:419::-;25436:4;25474:2;25463:9;25459:18;25451:26;;25523:9;25517:4;25513:20;25509:1;25498:9;25494:17;25487:47;25551:131;25677:4;25551:131;:::i;:::-;25543:139;;25270:419;;;:::o;25695:224::-;25835:34;25831:1;25823:6;25819:14;25812:58;25904:7;25899:2;25891:6;25887:15;25880:32;25695:224;:::o;25925:366::-;26067:3;26088:67;26152:2;26147:3;26088:67;:::i;:::-;26081:74;;26164:93;26253:3;26164:93;:::i;:::-;26282:2;26277:3;26273:12;26266:19;;25925:366;;;:::o;26297:419::-;26463:4;26501:2;26490:9;26486:18;26478:26;;26550:9;26544:4;26540:20;26536:1;26525:9;26521:17;26514:47;26578:131;26704:4;26578:131;:::i;:::-;26570:139;;26297:419;;;:::o;26722:222::-;26862:34;26858:1;26850:6;26846:14;26839:58;26931:5;26926:2;26918:6;26914:15;26907:30;26722:222;:::o;26950:366::-;27092:3;27113:67;27177:2;27172:3;27113:67;:::i;:::-;27106:74;;27189:93;27278:3;27189:93;:::i;:::-;27307:2;27302:3;27298:12;27291:19;;26950:366;;;:::o;27322:419::-;27488:4;27526:2;27515:9;27511:18;27503:26;;27575:9;27569:4;27565:20;27561:1;27550:9;27546:17;27539:47;27603:131;27729:4;27603:131;:::i;:::-;27595:139;;27322:419;;;:::o;27747:176::-;27887:28;27883:1;27875:6;27871:14;27864:52;27747:176;:::o;27929:366::-;28071:3;28092:67;28156:2;28151:3;28092:67;:::i;:::-;28085:74;;28168:93;28257:3;28168:93;:::i;:::-;28286:2;28281:3;28277:12;28270:19;;27929:366;;;:::o;28301:419::-;28467:4;28505:2;28494:9;28490:18;28482:26;;28554:9;28548:4;28544:20;28540:1;28529:9;28525:17;28518:47;28582:131;28708:4;28582:131;:::i;:::-;28574:139;;28301:419;;;:::o;28726:410::-;28766:7;28789:20;28807:1;28789:20;:::i;:::-;28784:25;;28823:20;28841:1;28823:20;:::i;:::-;28818:25;;28878:1;28875;28871:9;28900:30;28918:11;28900:30;:::i;:::-;28889:41;;29079:1;29070:7;29066:15;29063:1;29060:22;29040:1;29033:9;29013:83;28990:139;;29109:18;;:::i;:::-;28990:139;28774:362;28726:410;;;;:::o;29142:194::-;29182:4;29202:20;29220:1;29202:20;:::i;:::-;29197:25;;29236:20;29254:1;29236:20;:::i;:::-;29231:25;;29280:1;29277;29273:9;29265:17;;29304:1;29298:4;29295:11;29292:37;;;29309:18;;:::i;:::-;29292:37;29142:194;;;;:::o;29342:179::-;29482:31;29478:1;29470:6;29466:14;29459:55;29342:179;:::o;29527:366::-;29669:3;29690:67;29754:2;29749:3;29690:67;:::i;:::-;29683:74;;29766:93;29855:3;29766:93;:::i;:::-;29884:2;29879:3;29875:12;29868:19;;29527:366;;;:::o;29899:419::-;30065:4;30103:2;30092:9;30088:18;30080:26;;30152:9;30146:4;30142:20;30138:1;30127:9;30123:17;30116:47;30180:131;30306:4;30180:131;:::i;:::-;30172:139;;29899:419;;;:::o;30324:147::-;30425:11;30462:3;30447:18;;30324:147;;;;:::o;30477:114::-;;:::o;30597:398::-;30756:3;30777:83;30858:1;30853:3;30777:83;:::i;:::-;30770:90;;30869:93;30958:3;30869:93;:::i;:::-;30987:1;30982:3;30978:11;30971:18;;30597:398;;;:::o;31001:379::-;31185:3;31207:147;31350:3;31207:147;:::i;:::-;31200:154;;31371:3;31364:10;;31001:379;;;:::o;31386:245::-;31526:34;31522:1;31514:6;31510:14;31503:58;31595:28;31590:2;31582:6;31578:15;31571:53;31386:245;:::o;31637:366::-;31779:3;31800:67;31864:2;31859:3;31800:67;:::i;:::-;31793:74;;31876:93;31965:3;31876:93;:::i;:::-;31994:2;31989:3;31985:12;31978:19;;31637:366;;;:::o;32009:419::-;32175:4;32213:2;32202:9;32198:18;32190:26;;32262:9;32256:4;32252:20;32248:1;32237:9;32233:17;32226:47;32290:131;32416:4;32290:131;:::i;:::-;32282:139;;32009:419;;;:::o;32434:225::-;32574:34;32570:1;32562:6;32558:14;32551:58;32643:8;32638:2;32630:6;32626:15;32619:33;32434:225;:::o;32665:366::-;32807:3;32828:67;32892:2;32887:3;32828:67;:::i;:::-;32821:74;;32904:93;32993:3;32904:93;:::i;:::-;33022:2;33017:3;33013:12;33006:19;;32665:366;;;:::o;33037:419::-;33203:4;33241:2;33230:9;33226:18;33218:26;;33290:9;33284:4;33280:20;33276:1;33265:9;33261:17;33254:47;33318:131;33444:4;33318:131;:::i;:::-;33310:139;;33037:419;;;:::o;33462:180::-;33510:77;33507:1;33500:88;33607:4;33604:1;33597:15;33631:4;33628:1;33621:15;33648:180;33696:77;33693:1;33686:88;33793:4;33790:1;33783:15;33817:4;33814:1;33807:15;33834:143;33891:5;33922:6;33916:13;33907:22;;33938:33;33965:5;33938:33;:::i;:::-;33834:143;;;;:::o;33983:351::-;34053:6;34102:2;34090:9;34081:7;34077:23;34073:32;34070:119;;;34108:79;;:::i;:::-;34070:119;34228:1;34253:64;34309:7;34300:6;34289:9;34285:22;34253:64;:::i;:::-;34243:74;;34199:128;33983:351;;;;:::o;34340:85::-;34385:7;34414:5;34403:16;;34340:85;;;:::o;34431:158::-;34489:9;34522:61;34540:42;34549:32;34575:5;34549:32;:::i;:::-;34540:42;:::i;:::-;34522:61;:::i;:::-;34509:74;;34431:158;;;:::o;34595:147::-;34690:45;34729:5;34690:45;:::i;:::-;34685:3;34678:58;34595:147;;:::o;34748:114::-;34815:6;34849:5;34843:12;34833:22;;34748:114;;;:::o;34868:184::-;34967:11;35001:6;34996:3;34989:19;35041:4;35036:3;35032:14;35017:29;;34868:184;;;;:::o;35058:132::-;35125:4;35148:3;35140:11;;35178:4;35173:3;35169:14;35161:22;;35058:132;;;:::o;35196:108::-;35273:24;35291:5;35273:24;:::i;:::-;35268:3;35261:37;35196:108;;:::o;35310:179::-;35379:10;35400:46;35442:3;35434:6;35400:46;:::i;:::-;35478:4;35473:3;35469:14;35455:28;;35310:179;;;;:::o;35495:113::-;35565:4;35597;35592:3;35588:14;35580:22;;35495:113;;;:::o;35644:732::-;35763:3;35792:54;35840:5;35792:54;:::i;:::-;35862:86;35941:6;35936:3;35862:86;:::i;:::-;35855:93;;35972:56;36022:5;35972:56;:::i;:::-;36051:7;36082:1;36067:284;36092:6;36089:1;36086:13;36067:284;;;36168:6;36162:13;36195:63;36254:3;36239:13;36195:63;:::i;:::-;36188:70;;36281:60;36334:6;36281:60;:::i;:::-;36271:70;;36127:224;36114:1;36111;36107:9;36102:14;;36067:284;;;36071:14;36367:3;36360:10;;35768:608;;;35644:732;;;;:::o;36382:831::-;36645:4;36683:3;36672:9;36668:19;36660:27;;36697:71;36765:1;36754:9;36750:17;36741:6;36697:71;:::i;:::-;36778:80;36854:2;36843:9;36839:18;36830:6;36778:80;:::i;:::-;36905:9;36899:4;36895:20;36890:2;36879:9;36875:18;36868:48;36933:108;37036:4;37027:6;36933:108;:::i;:::-;36925:116;;37051:72;37119:2;37108:9;37104:18;37095:6;37051:72;:::i;:::-;37133:73;37201:3;37190:9;37186:19;37177:6;37133:73;:::i;:::-;36382:831;;;;;;;;:::o;37219:807::-;37468:4;37506:3;37495:9;37491:19;37483:27;;37520:71;37588:1;37577:9;37573:17;37564:6;37520:71;:::i;:::-;37601:72;37669:2;37658:9;37654:18;37645:6;37601:72;:::i;:::-;37683:80;37759:2;37748:9;37744:18;37735:6;37683:80;:::i;:::-;37773;37849:2;37838:9;37834:18;37825:6;37773:80;:::i;:::-;37863:73;37931:3;37920:9;37916:19;37907:6;37863:73;:::i;:::-;37946;38014:3;38003:9;37999:19;37990:6;37946:73;:::i;:::-;37219:807;;;;;;;;;:::o;38032:663::-;38120:6;38128;38136;38185:2;38173:9;38164:7;38160:23;38156:32;38153:119;;;38191:79;;:::i;:::-;38153:119;38311:1;38336:64;38392:7;38383:6;38372:9;38368:22;38336:64;:::i;:::-;38326:74;;38282:128;38449:2;38475:64;38531:7;38522:6;38511:9;38507:22;38475:64;:::i;:::-;38465:74;;38420:129;38588:2;38614:64;38670:7;38661:6;38650:9;38646:22;38614:64;:::i;:::-;38604:74;;38559:129;38032:663;;;;;:::o;38701:442::-;38850:4;38888:2;38877:9;38873:18;38865:26;;38901:71;38969:1;38958:9;38954:17;38945:6;38901:71;:::i;:::-;38982:72;39050:2;39039:9;39035:18;39026:6;38982:72;:::i;:::-;39064;39132:2;39121:9;39117:18;39108:6;39064:72;:::i;:::-;38701:442;;;;;;:::o;39149:332::-;39270:4;39308:2;39297:9;39293:18;39285:26;;39321:71;39389:1;39378:9;39374:17;39365:6;39321:71;:::i;:::-;39402:72;39470:2;39459:9;39455:18;39446:6;39402:72;:::i;:::-;39149:332;;;;;:::o
Swarm Source
ipfs://692d5eb907d42fb9ac6a2686897ab88b2134825d5cc4f34f55c57130dcde9a18
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.