Source Code
More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 23 from a total of 23 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Approve | 15321184 | 1326 days ago | IN | 0 ETH | 0.00146324 | ||||
| Approve | 15321181 | 1326 days ago | IN | 0 ETH | 0.00198987 | ||||
| Approve | 15321179 | 1326 days ago | IN | 0 ETH | 0.00144567 | ||||
| Approve | 15321179 | 1326 days ago | IN | 0 ETH | 0.00279198 | ||||
| Approve | 15321175 | 1326 days ago | IN | 0 ETH | 0.0094478 | ||||
| Approve | 15321175 | 1326 days ago | IN | 0 ETH | 0.0094478 | ||||
| Approve | 15321174 | 1326 days ago | IN | 0 ETH | 0.00094776 | ||||
| Approve | 15321174 | 1326 days ago | IN | 0 ETH | 0.0018453 | ||||
| Approve | 15321173 | 1326 days ago | IN | 0 ETH | 0.00093435 | ||||
| Approve | 15321173 | 1326 days ago | IN | 0 ETH | 0.00093435 | ||||
| Approve | 15321173 | 1326 days ago | IN | 0 ETH | 0.00093435 | ||||
| Approve | 15321173 | 1326 days ago | IN | 0 ETH | 0.00330673 | ||||
| Transfer | 15321165 | 1326 days ago | IN | 0 ETH | 0.00093269 | ||||
| Set Tx Limit Exc... | 15321160 | 1326 days ago | IN | 0 ETH | 0.00105083 | ||||
| Transfer | 15321150 | 1326 days ago | IN | 0 ETH | 0.00075461 | ||||
| Set Swap And Liq... | 15321134 | 1326 days ago | IN | 0 ETH | 0.00064196 | ||||
| Approve | 15321126 | 1326 days ago | IN | 0 ETH | 0.00102026 | ||||
| Set Wallet Limit... | 15321124 | 1326 days ago | IN | 0 ETH | 0.00101927 | ||||
| Set Wallet Limit... | 15321122 | 1326 days ago | IN | 0 ETH | 0.00054528 | ||||
| Set Wallet Limit... | 15321119 | 1326 days ago | IN | 0 ETH | 0.00041786 | ||||
| Set Wallet Limit... | 15321116 | 1326 days ago | IN | 0 ETH | 0.00046415 | ||||
| Set Swap And Liq... | 15321112 | 1326 days ago | IN | 0 ETH | 0.00037228 | ||||
| Transfer | 15321096 | 1326 days ago | IN | 0 ETH | 0.00139265 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
Inari
Compiler Version
v0.8.4+commit.c7e474f2
Contract Source Code (Solidity)
/**
*Submitted for verification at Etherscan.io on 2022-08-11
*/
/*
https://www.kaminoinari.io/
*/
// SPDX-License-Identifier: Unlicensed
pragma solidity ^0.8.4;
abstract contract Context {
function _msgSender() internal view virtual returns (address payable) {
return payable(msg.sender);
}
function _msgData() internal view virtual returns (bytes memory) {
this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
return msg.data;
}
}
interface IERC20 {
function totalSupply() external view returns (uint256);
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);
}
library SafeMath {
function add(uint256 a, uint256 b) internal pure returns (uint256) {
uint256 c = a + b;
require(c >= a, "SafeMath: addition overflow");
return c;
}
function sub(uint256 a, uint256 b) internal pure returns (uint256) {
return sub(a, b, "SafeMath: subtraction overflow");
}
function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
require(b <= a, errorMessage);
uint256 c = a - b;
return c;
}
function mul(uint256 a, uint256 b) internal pure returns (uint256) {
if (a == 0) {
return 0;
}
uint256 c = a * b;
require(c / a == b, "SafeMath: multiplication overflow");
return c;
}
function div(uint256 a, uint256 b) internal pure returns (uint256) {
return div(a, b, "SafeMath: division by zero");
}
function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
require(b > 0, errorMessage);
uint256 c = a / b;
// assert(a == b * c + a % b); // There is no case in which this doesn't hold
return c;
}
function mod(uint256 a, uint256 b) internal pure returns (uint256) {
return mod(a, b, "SafeMath: modulo by zero");
}
function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
require(b != 0, errorMessage);
return a % b;
}
}
library Address {
function isContract(address account) internal view returns (bool) {
// According to EIP-1052, 0x0 is the value returned for not-yet created accounts
// and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned
// for accounts without code, i.e. `keccak256('')`
bytes32 codehash;
bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
// solhint-disable-next-line no-inline-assembly
assembly { codehash := extcodehash(account) }
return (codehash != accountHash && codehash != 0x0);
}
function sendValue(address payable recipient, uint256 amount) internal {
require(address(this).balance >= amount, "Address: insufficient balance");
// solhint-disable-next-line avoid-low-level-calls, avoid-call-value
(bool success, ) = recipient.call{ value: amount }("");
require(success, "Address: unable to send value, recipient may have reverted");
}
function functionCall(address target, bytes memory data) internal returns (bytes memory) {
return functionCall(target, data, "Address: low-level call failed");
}
function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
return _functionCallWithValue(target, data, 0, errorMessage);
}
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");
}
function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {
require(address(this).balance >= value, "Address: insufficient balance for call");
return _functionCallWithValue(target, data, value, errorMessage);
}
function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) {
require(isContract(target), "Address: call to non-contract");
(bool success, bytes memory returndata) = target.call{ value: weiValue }(data);
if (success) {
return returndata;
} else {
if (returndata.length > 0) {
assembly {
let returndata_size := mload(returndata)
revert(add(32, returndata), returndata_size)
}
} else {
revert(errorMessage);
}
}
}
}
contract Ownable is Context {
address private _owner;
address private _previousOwner;
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 waiveOwnership() 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;
}
}
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 Burn(address indexed sender, uint amount0, uint amount1, address indexed to);
event Swap(
address indexed sender,
uint amount0In,
uint amount1In,
uint amount0Out,
uint amount1Out,
address indexed to
);
event Sync(uint112 reserve0, uint112 reserve1);
function MINIMUM_LIQUIDITY() external pure returns (uint);
function factory() external view returns (address);
function token0() external view returns (address);
function token1() external view returns (address);
function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
function price0CumulativeLast() external view returns (uint);
function price1CumulativeLast() external view returns (uint);
function kLast() external view returns (uint);
function burn(address to) external returns (uint amount0, uint amount1);
function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
function skim(address to) external;
function sync() external;
function initialize(address, address) external;
}
interface IUniswapV2Router01 {
function factory() external pure returns (address);
function WETH() external pure returns (address);
function addLiquidity(
address tokenA,
address tokenB,
uint amountADesired,
uint amountBDesired,
uint amountAMin,
uint amountBMin,
address to,
uint deadline
) external returns (uint amountA, uint amountB, uint liquidity);
function addLiquidityETH(
address token,
uint amountTokenDesired,
uint amountTokenMin,
uint amountETHMin,
address to,
uint deadline
) external payable returns (uint amountToken, uint amountETH, uint liquidity);
function removeLiquidity(
address tokenA,
address tokenB,
uint liquidity,
uint amountAMin,
uint amountBMin,
address to,
uint deadline
) external returns (uint amountA, uint amountB);
function removeLiquidityETH(
address token,
uint liquidity,
uint amountTokenMin,
uint amountETHMin,
address to,
uint deadline
) external returns (uint amountToken, uint amountETH);
function removeLiquidityWithPermit(
address tokenA,
address tokenB,
uint liquidity,
uint amountAMin,
uint amountBMin,
address to,
uint deadline,
bool approveMax, uint8 v, bytes32 r, bytes32 s
) external returns (uint amountA, uint amountB);
function removeLiquidityETHWithPermit(
address token,
uint liquidity,
uint amountTokenMin,
uint amountETHMin,
address to,
uint deadline,
bool approveMax, uint8 v, bytes32 r, bytes32 s
) external returns (uint amountToken, uint amountETH);
function swapExactTokensForTokens(
uint amountIn,
uint amountOutMin,
address[] calldata path,
address to,
uint deadline
) external returns (uint[] memory amounts);
function swapTokensForExactTokens(
uint amountOut,
uint amountInMax,
address[] calldata path,
address to,
uint deadline
) external returns (uint[] memory amounts);
function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
external
payable
returns (uint[] memory amounts);
function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
external
returns (uint[] memory amounts);
function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
external
returns (uint[] memory amounts);
function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
external
payable
returns (uint[] memory amounts);
function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}
interface IUniswapV2Router02 is IUniswapV2Router01 {
function removeLiquidityETHSupportingFeeOnTransferTokens(
address token,
uint liquidity,
uint amountTokenMin,
uint amountETHMin,
address to,
uint deadline
) external returns (uint amountETH);
function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
address token,
uint liquidity,
uint amountTokenMin,
uint amountETHMin,
address to,
uint deadline,
bool approveMax, uint8 v, bytes32 r, bytes32 s
) external returns (uint amountETH);
function swapExactTokensForTokensSupportingFeeOnTransferTokens(
uint amountIn,
uint amountOutMin,
address[] calldata path,
address to,
uint deadline
) external;
function swapExactETHForTokensSupportingFeeOnTransferTokens(
uint amountOutMin,
address[] calldata path,
address to,
uint deadline
) external payable;
function swapExactTokensForETHSupportingFeeOnTransferTokens(
uint amountIn,
uint amountOutMin,
address[] calldata path,
address to,
uint deadline
) external;
}
contract Inari is Context, IERC20, Ownable {
using SafeMath for uint256;
using Address for address;
string private _name = "Kamino Inari";
string private _symbol = "INARI";
uint8 private _decimals = 9;
address payable private taxWallet1 = payable(0x6Ad43F9fB24A0EB92426A5f2B21e96c66d5b6A46);
address payable private taxWallet2 = payable(0x6Ad43F9fB24A0EB92426A5f2B21e96c66d5b6A46);
address public immutable deadAddress = 0x000000000000000000000000000000000000dEaD;
mapping (address => uint256) _balances;
mapping (address => mapping (address => uint256)) private _allowances;
mapping (address => bool) public ExcludedFromFees;
mapping (address => bool) public WalletLimitExcept;
mapping (address => bool) public TxLimitExcept;
mapping (address => bool) public MarketPair;
uint256 private _buyLiquidityFees = 1;
uint256 private _buyMarketingFees = 1;
uint256 private _buyDevelopmentFees = 1;
uint256 private _sellLiquidityFees = 1;
uint256 private _sellMarketingFees = 1;
uint256 private _sellDevelopmentFees = 1;
uint256 private _liquidityShares = 2;
uint256 private _marketingShares = 10;
uint256 private _developmentShares = 10;
uint256 private _totalTaxIfBuying = 10;
uint256 private _totalTaxIfSelling = 10;
uint256 private _totalDistributionShares = 22;
uint256 private _totalSupply = 10000 * 10**6 * 10**9;
uint256 public _maxTxAmount = 10000 * 10**6 * 10**9;
uint256 public _walletMax = 300 * 10**6 * 10**9;
uint256 private minimumTokensBeforeSwap = 10 * 10**9;
IUniswapV2Router02 public uniswapV2Router;
address public uniswapPair;
bool inSwapAndLiquify;
bool public swapAndLiquifyEnabled = true;
bool public swapAndLiquifyByLimitOnly = false;
bool public checkWalletLimit = true;
event SwapAndLiquifyEnabledUpdated(bool enabled);
event SwapAndLiquify(
uint256 tokensSwapped,
uint256 ethReceived,
uint256 tokensIntoLiqudity
);
event SwapETHForTokens(
uint256 amountIn,
address[] path
);
event SwapTokensForETH(
uint256 amountIn,
address[] path
);
modifier lockTheSwap {
inSwapAndLiquify = true;
_;
inSwapAndLiquify = false;
}
constructor () {
IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
uniswapPair = IUniswapV2Factory(_uniswapV2Router.factory())
.createPair(address(this), _uniswapV2Router.WETH());
uniswapV2Router = _uniswapV2Router;
_allowances[address(this)][address(uniswapV2Router)] = _totalSupply;
ExcludedFromFees[owner()] = true;
ExcludedFromFees[address(this)] = true;
_totalTaxIfBuying = _buyLiquidityFees.add(_buyMarketingFees).add(_buyDevelopmentFees);
_totalTaxIfSelling = _sellLiquidityFees.add(_sellMarketingFees).add(_sellDevelopmentFees);
_totalDistributionShares = _liquidityShares.add(_marketingShares).add(_developmentShares);
WalletLimitExcept[owner()] = true;
WalletLimitExcept[address(uniswapPair)] = true;
WalletLimitExcept[address(this)] = true;
TxLimitExcept[owner()] = true;
TxLimitExcept[address(this)] = true;
MarketPair[address(uniswapPair)] = true;
_balances[_msgSender()] = _totalSupply;
emit Transfer(address(0), _msgSender(), _totalSupply);
}
function name() public view returns (string memory) {
return _name;
}
function symbol() public view returns (string memory) {
return _symbol;
}
function decimals() public view returns (uint8) {
return _decimals;
}
function totalSupply() public view override returns (uint256) {
return _totalSupply;
}
function balanceOf(address account) public view override returns (uint256) {
return _balances[account];
}
function allowance(address owner, address spender) public view override returns (uint256) {
return _allowances[owner][spender];
}
function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
_approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));
return true;
}
function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
_approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
return true;
}
function approve(address spender, uint256 amount) public override returns (bool) {
_approve(_msgSender(), spender, amount);
return true;
}
function _approve(address owner, address spender, uint256 amount) private {
require(owner != address(0), "ERC20: approve from the zero address");
require(spender != address(0), "ERC20: approve to the zero address");
_allowances[owner][spender] = amount;
emit Approval(owner, spender, amount);
}
function addMarketPair(address account) public onlyOwner {
MarketPair[account] = true;
}
function setTxLimitExcept(address holder, bool exempt) external onlyOwner {
TxLimitExcept[holder] = exempt;
}
function setExcludedFromFees(address account, bool newValue) public onlyOwner {
ExcludedFromFees[account] = newValue;
}
function setBuyFee(uint256 newLiquidityTax, uint256 newMarketingTax, uint256 newDevelopmentTax) external onlyOwner() {
_buyLiquidityFees = newLiquidityTax;
_buyMarketingFees = newMarketingTax;
_buyDevelopmentFees = newDevelopmentTax;
_totalTaxIfBuying = _buyLiquidityFees.add(_buyMarketingFees).add(_buyDevelopmentFees);
}
function setSellFee(uint256 newLiquidityTax, uint256 newMarketingTax, uint256 newDevelopmentTax) external onlyOwner() {
_sellLiquidityFees = newLiquidityTax;
_sellMarketingFees = newMarketingTax;
_sellDevelopmentFees = newDevelopmentTax;
_totalTaxIfSelling = _sellLiquidityFees.add(_sellMarketingFees).add(_sellDevelopmentFees);
}
function setDistributionSettings(uint256 newLiquidityShare, uint256 newMarketingShare, uint256 newDevelopmentShare) external onlyOwner() {
_liquidityShares = newLiquidityShare;
_marketingShares = newMarketingShare;
_developmentShares = newDevelopmentShare;
_totalDistributionShares = _liquidityShares.add(_marketingShares).add(_developmentShares);
}
function adjustMaxTxAmount(uint256 maxTxAmount) external onlyOwner() {
require(maxTxAmount <= (10000 * 10**6 * 10**9), "Max wallet should be less or euqal to 4% totalSupply");
_maxTxAmount = maxTxAmount;
}
function enableDisableWalletLimit(bool newValue) external onlyOwner {
checkWalletLimit = newValue;
}
function setWalletLimitExcept(address holder, bool exempt) external onlyOwner {
WalletLimitExcept[holder] = exempt;
}
function setWalletLimit(uint256 newLimit) external onlyOwner {
_walletMax = newLimit;
}
function setNumTokensBeforeSwap(uint256 newLimit) external onlyOwner() {
minimumTokensBeforeSwap = newLimit;
}
function settaxWallet1(address newAddress) external onlyOwner() {
taxWallet1 = payable(newAddress);
}
function settaxWallet2(address newAddress) external onlyOwner() {
taxWallet2 = payable(newAddress);
}
function setSwapAndLiquifyEnabled(bool _enabled) public onlyOwner {
swapAndLiquifyEnabled = _enabled;
emit SwapAndLiquifyEnabledUpdated(_enabled);
}
function setSwapAndLiquifyByLimitOnly(bool newValue) public onlyOwner {
swapAndLiquifyByLimitOnly = newValue;
}
function getCirculatingSupply() public view returns (uint256) {
return _totalSupply.sub(balanceOf(deadAddress));
}
function transferToAddressETH(address payable recipient, uint256 amount) private {
recipient.transfer(amount);
}
function changeRouterVersion(address newRouterAddress) public onlyOwner returns(address newPairAddress) {
IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(newRouterAddress);
newPairAddress = IUniswapV2Factory(_uniswapV2Router.factory()).getPair(address(this), _uniswapV2Router.WETH());
if(newPairAddress == address(0)) //Create If Doesnt exist
{
newPairAddress = IUniswapV2Factory(_uniswapV2Router.factory())
.createPair(address(this), _uniswapV2Router.WETH());
}
uniswapPair = newPairAddress; //Set new pair address
uniswapV2Router = _uniswapV2Router; //Set new router address
WalletLimitExcept[address(uniswapPair)] = true;
MarketPair[address(uniswapPair)] = true;
}
//to recieve ETH from uniswapV2Router when swaping
receive() external payable {}
function transfer(address recipient, uint256 amount) public override returns (bool) {
_transfer(_msgSender(), recipient, amount);
return true;
}
function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
_transfer(sender, recipient, amount);
_approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
return true;
}
function _transfer(address sender, address recipient, uint256 amount) private returns (bool) {
require(sender != address(0), "ERC20: transfer from the zero address");
require(recipient != address(0), "ERC20: transfer to the zero address");
if(inSwapAndLiquify)
{
return _basicTransfer(sender, recipient, amount);
}
else
{
if(!TxLimitExcept[sender] && !TxLimitExcept[recipient]) {
require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount.");
}
uint256 contractTokenBalance = balanceOf(address(this));
bool overMinimumTokenBalance = contractTokenBalance >= minimumTokensBeforeSwap;
if (overMinimumTokenBalance && !inSwapAndLiquify && !MarketPair[sender] && swapAndLiquifyEnabled)
{
if(swapAndLiquifyByLimitOnly)
contractTokenBalance = minimumTokensBeforeSwap;
swapAndLiquify(contractTokenBalance);
}
_balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");
uint256 finalAmount = (ExcludedFromFees[sender] || ExcludedFromFees[recipient]) ?
amount : takeFee(sender, recipient, amount);
if(checkWalletLimit && !WalletLimitExcept[recipient])
require(balanceOf(recipient).add(finalAmount) <= _walletMax);
_balances[recipient] = _balances[recipient].add(finalAmount);
emit Transfer(sender, recipient, finalAmount);
return true;
}
}
function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
_balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");
_balances[recipient] = _balances[recipient].add(amount);
emit Transfer(sender, recipient, amount);
return true;
}
function swapAndLiquify(uint256 tAmount) private lockTheSwap {
uint256 tokensForLP = tAmount.mul(_liquidityShares).div(_totalDistributionShares).div(2);
uint256 tokensForSwap = tAmount.sub(tokensForLP);
swapTokensForEth(tokensForSwap);
uint256 amountReceived = address(this).balance;
uint256 totalETHFee = _totalDistributionShares.sub(_liquidityShares.div(2));
uint256 amountETHLiquidity = amountReceived.mul(_liquidityShares).div(totalETHFee).div(2);
uint256 amountETHDevelopment = amountReceived.mul(_developmentShares).div(totalETHFee);
uint256 amountETHMarketing = amountReceived.sub(amountETHLiquidity).sub(amountETHDevelopment);
if(amountETHMarketing > 0)
transferToAddressETH(taxWallet1, amountETHMarketing);
if(amountETHDevelopment > 0)
transferToAddressETH(taxWallet2, amountETHDevelopment);
if(amountETHLiquidity > 0 && tokensForLP > 0)
addLiquidity(tokensForLP, amountETHLiquidity);
}
function swapTokensForEth(uint256 tokenAmount) private {
// generate the uniswap pair path of token -> weth
address[] memory path = new address[](2);
path[0] = address(this);
path[1] = uniswapV2Router.WETH();
_approve(address(this), address(uniswapV2Router), tokenAmount);
// make the swap
uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
tokenAmount,
0, // accept any amount of ETH
path,
address(this), // The contract
block.timestamp
);
emit SwapTokensForETH(tokenAmount, path);
}
function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
// approve token transfer to cover all possible scenarios
_approve(address(this), address(uniswapV2Router), tokenAmount);
// add the liquidity
uniswapV2Router.addLiquidityETH{value: ethAmount}(
address(this),
tokenAmount,
0, // slippage is unavoidable
0, // slippage is unavoidable
owner(),
block.timestamp
);
}
function takeFee(address sender, address recipient, uint256 amount) internal returns (uint256) {
uint256 feeAmount = 0;
if(MarketPair[sender]) {
feeAmount = amount.mul(_totalTaxIfBuying).div(100);
}
else if(MarketPair[recipient]) {
feeAmount = amount.mul(_totalTaxIfSelling).div(100);
}
if(feeAmount > 0) {
_balances[address(this)] = _balances[address(this)].add(feeAmount);
emit Transfer(sender, address(this), feeAmount);
}
return amount.sub(feeAmount);
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapETHForTokens","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapTokensForETH","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":"","type":"address"}],"name":"ExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"MarketPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"TxLimitExcept","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"WalletLimitExcept","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_walletMax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"addMarketPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"adjustMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newRouterAddress","type":"address"}],"name":"changeRouterVersion","outputs":[{"internalType":"address","name":"newPairAddress","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"checkWalletLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"newValue","type":"bool"}],"name":"enableDisableWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"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":[{"internalType":"uint256","name":"newLiquidityTax","type":"uint256"},{"internalType":"uint256","name":"newMarketingTax","type":"uint256"},{"internalType":"uint256","name":"newDevelopmentTax","type":"uint256"}],"name":"setBuyFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLiquidityShare","type":"uint256"},{"internalType":"uint256","name":"newMarketingShare","type":"uint256"},{"internalType":"uint256","name":"newDevelopmentShare","type":"uint256"}],"name":"setDistributionSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setExcludedFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setNumTokensBeforeSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLiquidityTax","type":"uint256"},{"internalType":"uint256","name":"newMarketingTax","type":"uint256"},{"internalType":"uint256","name":"newDevelopmentTax","type":"uint256"}],"name":"setSellFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setSwapAndLiquifyByLimitOnly","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setTxLimitExcept","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setWalletLimitExcept","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"settaxWallet1","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"settaxWallet2","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyByLimitOnly","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":[{"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":"uniswapPair","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":[],"name":"waiveOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]Contract Creation Code
60a06040526040518060400160405280600c81526020017f4b616d696e6f20496e6172690000000000000000000000000000000000000000815250600290805190602001906200005192919062000b41565b506040518060400160405280600581526020017f494e415249000000000000000000000000000000000000000000000000000000815250600390805190602001906200009f92919062000b41565b506009600460006101000a81548160ff021916908360ff160217905550736ad43f9fb24a0eb92426a5f2b21e96c66d5b6a46600460016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550736ad43f9fb24a0eb92426a5f2b21e96c66d5b6a46600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061dead73ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff1660601b8152506001600c556001600d556001600e556001600f55600160105560016011556002601255600a601355600a601455600a601555600a6016556016601755678ac7230489e80000601855678ac7230489e80000601955670429d069189e0000601a556402540be400601b556001601d60156101000a81548160ff0219169083151502179055506000601d60166101000a81548160ff0219169083151502179055506001601d60176101000a81548160ff0219169083151502179055503480156200026557600080fd5b5060006200027862000aad60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200037657600080fd5b505afa1580156200038b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003b1919062000c08565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200041457600080fd5b505afa15801562000429573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200044f919062000c08565b6040518363ffffffff1660e01b81526004016200046e92919062000c7d565b602060405180830381600087803b1580156200048957600080fd5b505af11580156200049e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004c4919062000c08565b601d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601854600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600860006200060062000ab560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620006e2600e54620006ce600d54600c5462000ade60201b620025911790919060201c565b62000ade60201b620025911790919060201c565b601581905550620007216011546200070d601054600f5462000ade60201b620025911790919060201c565b62000ade60201b620025911790919060201c565b601681905550620007606014546200074c60135460125462000ade60201b620025911790919060201c565b62000ade60201b620025911790919060201c565b6017819055506001600960006200077c62000ab560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160096000601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a6000620008b562000ab560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b6000601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060185460066000620009ef62000aad60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555062000a3d62000aad60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60185460405162000a9e919062000ccc565b60405180910390a35062000e6c565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600080828462000aef919062000cfa565b90508381101562000b37576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000b2e9062000caa565b60405180910390fd5b8091505092915050565b82805462000b4f9062000d95565b90600052602060002090601f01602090048101928262000b73576000855562000bbf565b82601f1062000b8e57805160ff191683800117855562000bbf565b8280016001018555821562000bbf579182015b8281111562000bbe57825182559160200191906001019062000ba1565b5b50905062000bce919062000bd2565b5090565b5b8082111562000bed57600081600090555060010162000bd3565b5090565b60008151905062000c028162000e52565b92915050565b60006020828403121562000c1b57600080fd5b600062000c2b8482850162000bf1565b91505092915050565b62000c3f8162000d57565b82525050565b600062000c54601b8362000ce9565b915062000c618262000e29565b602082019050919050565b62000c778162000d8b565b82525050565b600060408201905062000c94600083018562000c34565b62000ca3602083018462000c34565b9392505050565b6000602082019050818103600083015262000cc58162000c45565b9050919050565b600060208201905062000ce3600083018462000c6c565b92915050565b600082825260208201905092915050565b600062000d078262000d8b565b915062000d148362000d8b565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000d4c5762000d4b62000dcb565b5b828201905092915050565b600062000d648262000d6b565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000600282049050600182168062000dae57607f821691505b6020821081141562000dc55762000dc462000dfa565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b62000e5d8162000d57565b811462000e6957600080fd5b50565b60805160601c61484f62000e9260003960008181610f700152610f9c015261484f6000f3fe6080604052600436106102605760003560e01c8063807c2d9c11610144578063c2d4640e116100b6578063e1e037d11161007a578063e1e037d11461093d578063e207a92b14610966578063f0d610aa1461098f578063f1d5f517146109cc578063f2fde38b146109f5578063f872858a14610a1e57610267565b8063c2d4640e14610858578063c49b9a8014610881578063c816841b146108aa578063da00097d146108d5578063dd62ed3e1461090057610267565b806395d89b411161010857806395d89b4114610724578063a457c2d71461074f578063a5d69d1f1461078c578063a9059cbb146107b5578063aeecbb1d146107f2578063bbaa7d441461082f57610267565b8063807c2d9c146106515780638bacb7621461067c5780638da5cb5b146106b95780638f03aad5146106e4578063914eb66a1461070d57610267565b806327c8f835116101dd5780633b97084a116101a15780633b97084a1461052f5780634a74bb02146105585780635881f3ef14610583578063590ffdce146105c057806370a08231146105e95780637d1db4a51461062657610267565b806327c8f835146104485780632b112e49146104735780633133f75a1461049e578063313ce567146104c757806339509351146104f257610267565b80631d865c30116102245780631d865c30146103535780631e743d181461037c57806323b872dd146103b957806325519cf2146103f65780632563ae831461041f57610267565b806306fdde031461026c578063095ea7b3146102975780630fe1203c146102d45780631694505e146102fd57806318160ddd1461032857610267565b3661026757005b600080fd5b34801561027857600080fd5b50610281610a49565b60405161028e9190613fa3565b60405180910390f35b3480156102a357600080fd5b506102be60048036038101906102b99190613b26565b610adb565b6040516102cb9190613f6d565b60405180910390f35b3480156102e057600080fd5b506102fb60048036038101906102f69190613a0d565b610af9565b005b34801561030957600080fd5b50610312610bd2565b60405161031f9190613f88565b60405180910390f35b34801561033457600080fd5b5061033d610bf8565b60405161034a9190614105565b60405180910390f35b34801561035f57600080fd5b5061037a60048036038101906103759190613bb4565b610c02565b005b34801561038857600080fd5b506103a3600480360381019061039e9190613a0d565b610ce2565b6040516103b09190613f6d565b60405180910390f35b3480156103c557600080fd5b506103e060048036038101906103db9190613a9b565b610d02565b6040516103ed9190613f6d565b60405180910390f35b34801561040257600080fd5b5061041d60048036038101906104189190613bb4565b610ddc565b005b34801561042b57600080fd5b5061044660048036038101906104419190613b62565b610ebc565b005b34801561045457600080fd5b5061045d610f6e565b60405161046a9190613ec8565b60405180910390f35b34801561047f57600080fd5b50610488610f92565b6040516104959190614105565b60405180910390f35b3480156104aa57600080fd5b506104c560048036038101906104c09190613aea565b610fd6565b005b3480156104d357600080fd5b506104dc6110c6565b6040516104e991906141aa565b60405180910390f35b3480156104fe57600080fd5b5061051960048036038101906105149190613b26565b6110dd565b6040516105269190613f6d565b60405180910390f35b34801561053b57600080fd5b5061055660048036038101906105519190613b8b565b611190565b005b34801561056457600080fd5b5061056d61122f565b60405161057a9190613f6d565b60405180910390f35b34801561058f57600080fd5b506105aa60048036038101906105a59190613a0d565b611242565b6040516105b79190613ec8565b60405180910390f35b3480156105cc57600080fd5b506105e760048036038101906105e29190613aea565b6117a0565b005b3480156105f557600080fd5b50610610600480360381019061060b9190613a0d565b611890565b60405161061d9190614105565b60405180910390f35b34801561063257600080fd5b5061063b6118d9565b6040516106489190614105565b60405180910390f35b34801561065d57600080fd5b506106666118df565b6040516106739190614105565b60405180910390f35b34801561068857600080fd5b506106a3600480360381019061069e9190613a0d565b6118e5565b6040516106b09190613f6d565b60405180910390f35b3480156106c557600080fd5b506106ce611905565b6040516106db9190613ec8565b60405180910390f35b3480156106f057600080fd5b5061070b60048036038101906107069190613b8b565b61192e565b005b34801561071957600080fd5b50610722611a18565b005b34801561073057600080fd5b50610739611b6b565b6040516107469190613fa3565b60405180910390f35b34801561075b57600080fd5b5061077660048036038101906107719190613b26565b611bfd565b6040516107839190613f6d565b60405180910390f35b34801561079857600080fd5b506107b360048036038101906107ae9190613b62565b611cca565b005b3480156107c157600080fd5b506107dc60048036038101906107d79190613b26565b611d7c565b6040516107e99190613f6d565b60405180910390f35b3480156107fe57600080fd5b5061081960048036038101906108149190613a0d565b611d9b565b6040516108269190613f6d565b60405180910390f35b34801561083b57600080fd5b5061085660048036038101906108519190613a0d565b611dbb565b005b34801561086457600080fd5b5061087f600480360381019061087a9190613bb4565b611e94565b005b34801561088d57600080fd5b506108a860048036038101906108a39190613b62565b611f74565b005b3480156108b657600080fd5b506108bf61205d565b6040516108cc9190613ec8565b60405180910390f35b3480156108e157600080fd5b506108ea612083565b6040516108f79190613f6d565b60405180910390f35b34801561090c57600080fd5b5061092760048036038101906109229190613a5f565b612096565b6040516109349190614105565b60405180910390f35b34801561094957600080fd5b50610964600480360381019061095f9190613aea565b61211d565b005b34801561097257600080fd5b5061098d60048036038101906109889190613a0d565b61220d565b005b34801561099b57600080fd5b506109b660048036038101906109b19190613a0d565b6122fd565b6040516109c39190613f6d565b60405180910390f35b3480156109d857600080fd5b506109f360048036038101906109ee9190613b8b565b61231d565b005b348015610a0157600080fd5b50610a1c6004803603810190610a179190613a0d565b6123bc565b005b348015610a2a57600080fd5b50610a3361257e565b604051610a409190613f6d565b60405180910390f35b606060028054610a58906143ed565b80601f0160208091040260200160405190810160405280929190818152602001828054610a84906143ed565b8015610ad15780601f10610aa657610100808354040283529160200191610ad1565b820191906000526020600020905b815481529060010190602001808311610ab457829003601f168201915b5050505050905090565b6000610aef610ae86125ef565b84846125f7565b6001905092915050565b610b016125ef565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b85906140a5565b60405180910390fd5b80600460016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601854905090565b610c0a6125ef565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c97576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c8e906140a5565b60405180910390fd5b82600f819055508160108190555080601181905550610cd7601154610cc9601054600f5461259190919063ffffffff16565b61259190919063ffffffff16565b601681905550505050565b60086020528060005260406000206000915054906101000a900460ff1681565b6000610d0f8484846127c2565b50610dd184610d1c6125ef565b610dcc856040518060600160405280602881526020016147cd60289139600760008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610d826125ef565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612da79092919063ffffffff16565b6125f7565b600190509392505050565b610de46125ef565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e71576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e68906140a5565b60405180910390fd5b82600c8190555081600d8190555080600e81905550610eb1600e54610ea3600d54600c5461259190919063ffffffff16565b61259190919063ffffffff16565b601581905550505050565b610ec46125ef565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f48906140a5565b60405180910390fd5b80601d60176101000a81548160ff02191690831515021790555050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000610fd1610fc07f0000000000000000000000000000000000000000000000000000000000000000611890565b601854612e0b90919063ffffffff16565b905090565b610fde6125ef565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461106b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611062906140a5565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600460009054906101000a900460ff16905090565b60006111866110ea6125ef565b8461118185600760006110fb6125ef565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461259190919063ffffffff16565b6125f7565b6001905092915050565b6111986125ef565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611225576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121c906140a5565b60405180910390fd5b80601b8190555050565b601d60159054906101000a900460ff1681565b600061124c6125ef565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112d0906140a5565b60405180910390fd5b60008290508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561132457600080fd5b505afa158015611338573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061135c9190613a36565b73ffffffffffffffffffffffffffffffffffffffff1663e6a43905308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156113be57600080fd5b505afa1580156113d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113f69190613a36565b6040518363ffffffff1660e01b8152600401611413929190613ee3565b60206040518083038186803b15801561142b57600080fd5b505afa15801561143f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114639190613a36565b9150600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611624578073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156114e057600080fd5b505afa1580156114f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115189190613a36565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561157a57600080fd5b505afa15801561158e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115b29190613a36565b6040518363ffffffff1660e01b81526004016115cf929190613ee3565b602060405180830381600087803b1580156115e957600080fd5b505af11580156115fd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116219190613a36565b91505b81601d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160096000601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b6000601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050919050565b6117a86125ef565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611835576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161182c906140a5565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60195481565b601a5481565b600a6020528060005260406000206000915054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6119366125ef565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ba906140a5565b60405180910390fd5b678ac7230489e80000811115611a0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0590613fe5565b60405180910390fd5b8060198190555050565b611a206125ef565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611aad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aa4906140a5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b606060038054611b7a906143ed565b80601f0160208091040260200160405190810160405280929190818152602001828054611ba6906143ed565b8015611bf35780601f10611bc857610100808354040283529160200191611bf3565b820191906000526020600020905b815481529060010190602001808311611bd657829003601f168201915b5050505050905090565b6000611cc0611c0a6125ef565b84611cbb856040518060600160405280602581526020016147f56025913960076000611c346125ef565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612da79092919063ffffffff16565b6125f7565b6001905092915050565b611cd26125ef565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d56906140a5565b60405180910390fd5b80601d60166101000a81548160ff02191690831515021790555050565b6000611d90611d896125ef565b84846127c2565b506001905092915050565b600b6020528060005260406000206000915054906101000a900460ff1681565b611dc36125ef565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e50576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e47906140a5565b60405180910390fd5b80600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611e9c6125ef565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f20906140a5565b60405180910390fd5b826012819055508160138190555080601481905550611f69601454611f5b60135460125461259190919063ffffffff16565b61259190919063ffffffff16565b601781905550505050565b611f7c6125ef565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612009576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612000906140a5565b60405180910390fd5b80601d60156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159816040516120529190613f6d565b60405180910390a150565b601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601d60169054906101000a900460ff1681565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6121256125ef565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146121b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121a9906140a5565b60405180910390fd5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6122156125ef565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146122a2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612299906140a5565b60405180910390fd5b6001600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60096020528060005260406000206000915054906101000a900460ff1681565b6123256125ef565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146123b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123a9906140a5565b60405180910390fd5b80601a8190555050565b6123c46125ef565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612451576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612448906140a5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156124c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124b890614005565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601d60179054906101000a900460ff1681565b60008082846125a0919061421a565b9050838110156125e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125dc90614045565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612667576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161265e906140e5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156126d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126ce90614025565b60405180910390fd5b80600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516127b59190614105565b60405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415612833576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161282a906140c5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156128a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161289a90613fc5565b60405180910390fd5b601d60149054906101000a900460ff16156128ca576128c3848484612e55565b9050612da0565b600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561296e5750600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156129b9576019548211156129b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129af90614065565b60405180910390fd5b5b60006129c430611890565b90506000601b5482101590508080156129ea5750601d60149054906101000a900460ff16155b8015612a405750600b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612a585750601d60159054906101000a900460ff165b15612a8257601d60169054906101000a900460ff1615612a7857601b5491505b612a8182613028565b5b612b0b846040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612da79092919063ffffffff16565b600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612bf15750600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612c0557612c00878787613219565b612c07565b845b9050601d60179054906101000a900460ff168015612c6f5750600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612c9e57601a54612c9282612c8489611890565b61259190919063ffffffff16565b1115612c9d57600080fd5b5b612cf081600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461259190919063ffffffff16565b600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612d909190614105565b60405180910390a3600193505050505b9392505050565b6000838311158290612def576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612de69190613fa3565b60405180910390fd5b5060008385612dfe91906142fb565b9050809150509392505050565b6000612e4d83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612da7565b905092915050565b6000612ee0826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612da79092919063ffffffff16565b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612f7582600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461259190919063ffffffff16565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516130159190614105565b60405180910390a3600190509392505050565b6001601d60146101000a81548160ff021916908315150217905550600061308160026130736017546130656012548761344090919063ffffffff16565b6134bb90919063ffffffff16565b6134bb90919063ffffffff16565b905060006130988284612e0b90919063ffffffff16565b90506130a381613505565b600047905060006130d46130c360026012546134bb90919063ffffffff16565b601754612e0b90919063ffffffff16565b905060006131126002613104846130f66012548861344090919063ffffffff16565b6134bb90919063ffffffff16565b6134bb90919063ffffffff16565b9050600061313d8361312f6014548761344090919063ffffffff16565b6134bb90919063ffffffff16565b90506000613166826131588588612e0b90919063ffffffff16565b612e0b90919063ffffffff16565b9050600081111561319e5761319d600460019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682613802565b5b60008211156131d4576131d3600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683613802565b5b6000831180156131e45750600087115b156131f4576131f3878461384d565b5b505050505050506000601d60146101000a81548160ff02191690831515021790555050565b60008060009050600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156132a15761329a606461328c6015548661344090919063ffffffff16565b6134bb90919063ffffffff16565b905061331f565b600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561331e5761331b606461330d6016548661344090919063ffffffff16565b6134bb90919063ffffffff16565b90505b5b60008111156134235761337a81600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461259190919063ffffffff16565b600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161341a9190614105565b60405180910390a35b6134368184612e0b90919063ffffffff16565b9150509392505050565b60008083141561345357600090506134b5565b6000828461346191906142a1565b90508284826134709190614270565b146134b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134a790614085565b60405180910390fd5b809150505b92915050565b60006134fd83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613941565b905092915050565b6000600267ffffffffffffffff811115613548577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280602002602001820160405280156135765781602001602082028036833780820191505090505b50905030816000815181106135b4577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561365657600080fd5b505afa15801561366a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061368e9190613a36565b816001815181106136c8577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061372f30601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846125f7565b601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613793959493929190614150565b600060405180830381600087803b1580156137ad57600080fd5b505af11580156137c1573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a782826040516137f6929190614120565b60405180910390a15050565b8173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015613848573d6000803e3d6000fd5b505050565b61387a30601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846125f7565b601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198230856000806138c6611905565b426040518863ffffffff1660e01b81526004016138e896959493929190613f0c565b6060604051808303818588803b15801561390157600080fd5b505af1158015613915573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061393a9190613c03565b5050505050565b60008083118290613988576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161397f9190613fa3565b60405180910390fd5b50600083856139979190614270565b9050809150509392505050565b6000813590506139b381614787565b92915050565b6000815190506139c881614787565b92915050565b6000813590506139dd8161479e565b92915050565b6000813590506139f2816147b5565b92915050565b600081519050613a07816147b5565b92915050565b600060208284031215613a1f57600080fd5b6000613a2d848285016139a4565b91505092915050565b600060208284031215613a4857600080fd5b6000613a56848285016139b9565b91505092915050565b60008060408385031215613a7257600080fd5b6000613a80858286016139a4565b9250506020613a91858286016139a4565b9150509250929050565b600080600060608486031215613ab057600080fd5b6000613abe868287016139a4565b9350506020613acf868287016139a4565b9250506040613ae0868287016139e3565b9150509250925092565b60008060408385031215613afd57600080fd5b6000613b0b858286016139a4565b9250506020613b1c858286016139ce565b9150509250929050565b60008060408385031215613b3957600080fd5b6000613b47858286016139a4565b9250506020613b58858286016139e3565b9150509250929050565b600060208284031215613b7457600080fd5b6000613b82848285016139ce565b91505092915050565b600060208284031215613b9d57600080fd5b6000613bab848285016139e3565b91505092915050565b600080600060608486031215613bc957600080fd5b6000613bd7868287016139e3565b9350506020613be8868287016139e3565b9250506040613bf9868287016139e3565b9150509250925092565b600080600060608486031215613c1857600080fd5b6000613c26868287016139f8565b9350506020613c37868287016139f8565b9250506040613c48868287016139f8565b9150509250925092565b6000613c5e8383613c6a565b60208301905092915050565b613c738161432f565b82525050565b613c828161432f565b82525050565b6000613c93826141d5565b613c9d81856141f8565b9350613ca8836141c5565b8060005b83811015613cd9578151613cc08882613c52565b9750613ccb836141eb565b925050600181019050613cac565b5085935050505092915050565b613cef81614341565b82525050565b613cfe81614384565b82525050565b613d0d816143a8565b82525050565b6000613d1e826141e0565b613d288185614209565b9350613d388185602086016143ba565b613d41816144ac565b840191505092915050565b6000613d59602383614209565b9150613d64826144bd565b604082019050919050565b6000613d7c603483614209565b9150613d878261450c565b604082019050919050565b6000613d9f602683614209565b9150613daa8261455b565b604082019050919050565b6000613dc2602283614209565b9150613dcd826145aa565b604082019050919050565b6000613de5601b83614209565b9150613df0826145f9565b602082019050919050565b6000613e08602883614209565b9150613e1382614622565b604082019050919050565b6000613e2b602183614209565b9150613e3682614671565b604082019050919050565b6000613e4e602083614209565b9150613e59826146c0565b602082019050919050565b6000613e71602583614209565b9150613e7c826146e9565b604082019050919050565b6000613e94602483614209565b9150613e9f82614738565b604082019050919050565b613eb38161436d565b82525050565b613ec281614377565b82525050565b6000602082019050613edd6000830184613c79565b92915050565b6000604082019050613ef86000830185613c79565b613f056020830184613c79565b9392505050565b600060c082019050613f216000830189613c79565b613f2e6020830188613eaa565b613f3b6040830187613d04565b613f486060830186613d04565b613f556080830185613c79565b613f6260a0830184613eaa565b979650505050505050565b6000602082019050613f826000830184613ce6565b92915050565b6000602082019050613f9d6000830184613cf5565b92915050565b60006020820190508181036000830152613fbd8184613d13565b905092915050565b60006020820190508181036000830152613fde81613d4c565b9050919050565b60006020820190508181036000830152613ffe81613d6f565b9050919050565b6000602082019050818103600083015261401e81613d92565b9050919050565b6000602082019050818103600083015261403e81613db5565b9050919050565b6000602082019050818103600083015261405e81613dd8565b9050919050565b6000602082019050818103600083015261407e81613dfb565b9050919050565b6000602082019050818103600083015261409e81613e1e565b9050919050565b600060208201905081810360008301526140be81613e41565b9050919050565b600060208201905081810360008301526140de81613e64565b9050919050565b600060208201905081810360008301526140fe81613e87565b9050919050565b600060208201905061411a6000830184613eaa565b92915050565b60006040820190506141356000830185613eaa565b81810360208301526141478184613c88565b90509392505050565b600060a0820190506141656000830188613eaa565b6141726020830187613d04565b81810360408301526141848186613c88565b90506141936060830185613c79565b6141a06080830184613eaa565b9695505050505050565b60006020820190506141bf6000830184613eb9565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b60006142258261436d565b91506142308361436d565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156142655761426461441f565b5b828201905092915050565b600061427b8261436d565b91506142868361436d565b9250826142965761429561444e565b5b828204905092915050565b60006142ac8261436d565b91506142b78361436d565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156142f0576142ef61441f565b5b828202905092915050565b60006143068261436d565b91506143118361436d565b9250828210156143245761432361441f565b5b828203905092915050565b600061433a8261434d565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b600061438f82614396565b9050919050565b60006143a18261434d565b9050919050565b60006143b38261436d565b9050919050565b60005b838110156143d85780820151818401526020810190506143bd565b838111156143e7576000848401525b50505050565b6000600282049050600182168061440557607f821691505b602082108114156144195761441861447d565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f4d61782077616c6c65742073686f756c64206265206c657373206f722065757160008201527f616c20746f20342520746f74616c537570706c79000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6147908161432f565b811461479b57600080fd5b50565b6147a781614341565b81146147b257600080fd5b50565b6147be8161436d565b81146147c957600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220d6ffcbfe448ea09f0edb9e8736affb27a3fccf6ffb5afcfad4d525aef550ca3064736f6c63430008040033
Deployed Bytecode
0x6080604052600436106102605760003560e01c8063807c2d9c11610144578063c2d4640e116100b6578063e1e037d11161007a578063e1e037d11461093d578063e207a92b14610966578063f0d610aa1461098f578063f1d5f517146109cc578063f2fde38b146109f5578063f872858a14610a1e57610267565b8063c2d4640e14610858578063c49b9a8014610881578063c816841b146108aa578063da00097d146108d5578063dd62ed3e1461090057610267565b806395d89b411161010857806395d89b4114610724578063a457c2d71461074f578063a5d69d1f1461078c578063a9059cbb146107b5578063aeecbb1d146107f2578063bbaa7d441461082f57610267565b8063807c2d9c146106515780638bacb7621461067c5780638da5cb5b146106b95780638f03aad5146106e4578063914eb66a1461070d57610267565b806327c8f835116101dd5780633b97084a116101a15780633b97084a1461052f5780634a74bb02146105585780635881f3ef14610583578063590ffdce146105c057806370a08231146105e95780637d1db4a51461062657610267565b806327c8f835146104485780632b112e49146104735780633133f75a1461049e578063313ce567146104c757806339509351146104f257610267565b80631d865c30116102245780631d865c30146103535780631e743d181461037c57806323b872dd146103b957806325519cf2146103f65780632563ae831461041f57610267565b806306fdde031461026c578063095ea7b3146102975780630fe1203c146102d45780631694505e146102fd57806318160ddd1461032857610267565b3661026757005b600080fd5b34801561027857600080fd5b50610281610a49565b60405161028e9190613fa3565b60405180910390f35b3480156102a357600080fd5b506102be60048036038101906102b99190613b26565b610adb565b6040516102cb9190613f6d565b60405180910390f35b3480156102e057600080fd5b506102fb60048036038101906102f69190613a0d565b610af9565b005b34801561030957600080fd5b50610312610bd2565b60405161031f9190613f88565b60405180910390f35b34801561033457600080fd5b5061033d610bf8565b60405161034a9190614105565b60405180910390f35b34801561035f57600080fd5b5061037a60048036038101906103759190613bb4565b610c02565b005b34801561038857600080fd5b506103a3600480360381019061039e9190613a0d565b610ce2565b6040516103b09190613f6d565b60405180910390f35b3480156103c557600080fd5b506103e060048036038101906103db9190613a9b565b610d02565b6040516103ed9190613f6d565b60405180910390f35b34801561040257600080fd5b5061041d60048036038101906104189190613bb4565b610ddc565b005b34801561042b57600080fd5b5061044660048036038101906104419190613b62565b610ebc565b005b34801561045457600080fd5b5061045d610f6e565b60405161046a9190613ec8565b60405180910390f35b34801561047f57600080fd5b50610488610f92565b6040516104959190614105565b60405180910390f35b3480156104aa57600080fd5b506104c560048036038101906104c09190613aea565b610fd6565b005b3480156104d357600080fd5b506104dc6110c6565b6040516104e991906141aa565b60405180910390f35b3480156104fe57600080fd5b5061051960048036038101906105149190613b26565b6110dd565b6040516105269190613f6d565b60405180910390f35b34801561053b57600080fd5b5061055660048036038101906105519190613b8b565b611190565b005b34801561056457600080fd5b5061056d61122f565b60405161057a9190613f6d565b60405180910390f35b34801561058f57600080fd5b506105aa60048036038101906105a59190613a0d565b611242565b6040516105b79190613ec8565b60405180910390f35b3480156105cc57600080fd5b506105e760048036038101906105e29190613aea565b6117a0565b005b3480156105f557600080fd5b50610610600480360381019061060b9190613a0d565b611890565b60405161061d9190614105565b60405180910390f35b34801561063257600080fd5b5061063b6118d9565b6040516106489190614105565b60405180910390f35b34801561065d57600080fd5b506106666118df565b6040516106739190614105565b60405180910390f35b34801561068857600080fd5b506106a3600480360381019061069e9190613a0d565b6118e5565b6040516106b09190613f6d565b60405180910390f35b3480156106c557600080fd5b506106ce611905565b6040516106db9190613ec8565b60405180910390f35b3480156106f057600080fd5b5061070b60048036038101906107069190613b8b565b61192e565b005b34801561071957600080fd5b50610722611a18565b005b34801561073057600080fd5b50610739611b6b565b6040516107469190613fa3565b60405180910390f35b34801561075b57600080fd5b5061077660048036038101906107719190613b26565b611bfd565b6040516107839190613f6d565b60405180910390f35b34801561079857600080fd5b506107b360048036038101906107ae9190613b62565b611cca565b005b3480156107c157600080fd5b506107dc60048036038101906107d79190613b26565b611d7c565b6040516107e99190613f6d565b60405180910390f35b3480156107fe57600080fd5b5061081960048036038101906108149190613a0d565b611d9b565b6040516108269190613f6d565b60405180910390f35b34801561083b57600080fd5b5061085660048036038101906108519190613a0d565b611dbb565b005b34801561086457600080fd5b5061087f600480360381019061087a9190613bb4565b611e94565b005b34801561088d57600080fd5b506108a860048036038101906108a39190613b62565b611f74565b005b3480156108b657600080fd5b506108bf61205d565b6040516108cc9190613ec8565b60405180910390f35b3480156108e157600080fd5b506108ea612083565b6040516108f79190613f6d565b60405180910390f35b34801561090c57600080fd5b5061092760048036038101906109229190613a5f565b612096565b6040516109349190614105565b60405180910390f35b34801561094957600080fd5b50610964600480360381019061095f9190613aea565b61211d565b005b34801561097257600080fd5b5061098d60048036038101906109889190613a0d565b61220d565b005b34801561099b57600080fd5b506109b660048036038101906109b19190613a0d565b6122fd565b6040516109c39190613f6d565b60405180910390f35b3480156109d857600080fd5b506109f360048036038101906109ee9190613b8b565b61231d565b005b348015610a0157600080fd5b50610a1c6004803603810190610a179190613a0d565b6123bc565b005b348015610a2a57600080fd5b50610a3361257e565b604051610a409190613f6d565b60405180910390f35b606060028054610a58906143ed565b80601f0160208091040260200160405190810160405280929190818152602001828054610a84906143ed565b8015610ad15780601f10610aa657610100808354040283529160200191610ad1565b820191906000526020600020905b815481529060010190602001808311610ab457829003601f168201915b5050505050905090565b6000610aef610ae86125ef565b84846125f7565b6001905092915050565b610b016125ef565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b85906140a5565b60405180910390fd5b80600460016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601854905090565b610c0a6125ef565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c97576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c8e906140a5565b60405180910390fd5b82600f819055508160108190555080601181905550610cd7601154610cc9601054600f5461259190919063ffffffff16565b61259190919063ffffffff16565b601681905550505050565b60086020528060005260406000206000915054906101000a900460ff1681565b6000610d0f8484846127c2565b50610dd184610d1c6125ef565b610dcc856040518060600160405280602881526020016147cd60289139600760008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610d826125ef565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612da79092919063ffffffff16565b6125f7565b600190509392505050565b610de46125ef565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e71576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e68906140a5565b60405180910390fd5b82600c8190555081600d8190555080600e81905550610eb1600e54610ea3600d54600c5461259190919063ffffffff16565b61259190919063ffffffff16565b601581905550505050565b610ec46125ef565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f48906140a5565b60405180910390fd5b80601d60176101000a81548160ff02191690831515021790555050565b7f000000000000000000000000000000000000000000000000000000000000dead81565b6000610fd1610fc07f000000000000000000000000000000000000000000000000000000000000dead611890565b601854612e0b90919063ffffffff16565b905090565b610fde6125ef565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461106b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611062906140a5565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600460009054906101000a900460ff16905090565b60006111866110ea6125ef565b8461118185600760006110fb6125ef565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461259190919063ffffffff16565b6125f7565b6001905092915050565b6111986125ef565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611225576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121c906140a5565b60405180910390fd5b80601b8190555050565b601d60159054906101000a900460ff1681565b600061124c6125ef565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112d0906140a5565b60405180910390fd5b60008290508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561132457600080fd5b505afa158015611338573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061135c9190613a36565b73ffffffffffffffffffffffffffffffffffffffff1663e6a43905308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156113be57600080fd5b505afa1580156113d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113f69190613a36565b6040518363ffffffff1660e01b8152600401611413929190613ee3565b60206040518083038186803b15801561142b57600080fd5b505afa15801561143f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114639190613a36565b9150600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611624578073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156114e057600080fd5b505afa1580156114f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115189190613a36565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561157a57600080fd5b505afa15801561158e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115b29190613a36565b6040518363ffffffff1660e01b81526004016115cf929190613ee3565b602060405180830381600087803b1580156115e957600080fd5b505af11580156115fd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116219190613a36565b91505b81601d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160096000601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b6000601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050919050565b6117a86125ef565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611835576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161182c906140a5565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60195481565b601a5481565b600a6020528060005260406000206000915054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6119366125ef565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ba906140a5565b60405180910390fd5b678ac7230489e80000811115611a0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0590613fe5565b60405180910390fd5b8060198190555050565b611a206125ef565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611aad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aa4906140a5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b606060038054611b7a906143ed565b80601f0160208091040260200160405190810160405280929190818152602001828054611ba6906143ed565b8015611bf35780601f10611bc857610100808354040283529160200191611bf3565b820191906000526020600020905b815481529060010190602001808311611bd657829003601f168201915b5050505050905090565b6000611cc0611c0a6125ef565b84611cbb856040518060600160405280602581526020016147f56025913960076000611c346125ef565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612da79092919063ffffffff16565b6125f7565b6001905092915050565b611cd26125ef565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d56906140a5565b60405180910390fd5b80601d60166101000a81548160ff02191690831515021790555050565b6000611d90611d896125ef565b84846127c2565b506001905092915050565b600b6020528060005260406000206000915054906101000a900460ff1681565b611dc36125ef565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e50576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e47906140a5565b60405180910390fd5b80600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611e9c6125ef565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f20906140a5565b60405180910390fd5b826012819055508160138190555080601481905550611f69601454611f5b60135460125461259190919063ffffffff16565b61259190919063ffffffff16565b601781905550505050565b611f7c6125ef565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612009576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612000906140a5565b60405180910390fd5b80601d60156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159816040516120529190613f6d565b60405180910390a150565b601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601d60169054906101000a900460ff1681565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6121256125ef565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146121b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121a9906140a5565b60405180910390fd5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6122156125ef565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146122a2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612299906140a5565b60405180910390fd5b6001600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60096020528060005260406000206000915054906101000a900460ff1681565b6123256125ef565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146123b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123a9906140a5565b60405180910390fd5b80601a8190555050565b6123c46125ef565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612451576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612448906140a5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156124c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124b890614005565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601d60179054906101000a900460ff1681565b60008082846125a0919061421a565b9050838110156125e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125dc90614045565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612667576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161265e906140e5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156126d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126ce90614025565b60405180910390fd5b80600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516127b59190614105565b60405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415612833576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161282a906140c5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156128a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161289a90613fc5565b60405180910390fd5b601d60149054906101000a900460ff16156128ca576128c3848484612e55565b9050612da0565b600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561296e5750600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156129b9576019548211156129b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129af90614065565b60405180910390fd5b5b60006129c430611890565b90506000601b5482101590508080156129ea5750601d60149054906101000a900460ff16155b8015612a405750600b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612a585750601d60159054906101000a900460ff165b15612a8257601d60169054906101000a900460ff1615612a7857601b5491505b612a8182613028565b5b612b0b846040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612da79092919063ffffffff16565b600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612bf15750600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612c0557612c00878787613219565b612c07565b845b9050601d60179054906101000a900460ff168015612c6f5750600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612c9e57601a54612c9282612c8489611890565b61259190919063ffffffff16565b1115612c9d57600080fd5b5b612cf081600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461259190919063ffffffff16565b600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612d909190614105565b60405180910390a3600193505050505b9392505050565b6000838311158290612def576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612de69190613fa3565b60405180910390fd5b5060008385612dfe91906142fb565b9050809150509392505050565b6000612e4d83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612da7565b905092915050565b6000612ee0826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612da79092919063ffffffff16565b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612f7582600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461259190919063ffffffff16565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516130159190614105565b60405180910390a3600190509392505050565b6001601d60146101000a81548160ff021916908315150217905550600061308160026130736017546130656012548761344090919063ffffffff16565b6134bb90919063ffffffff16565b6134bb90919063ffffffff16565b905060006130988284612e0b90919063ffffffff16565b90506130a381613505565b600047905060006130d46130c360026012546134bb90919063ffffffff16565b601754612e0b90919063ffffffff16565b905060006131126002613104846130f66012548861344090919063ffffffff16565b6134bb90919063ffffffff16565b6134bb90919063ffffffff16565b9050600061313d8361312f6014548761344090919063ffffffff16565b6134bb90919063ffffffff16565b90506000613166826131588588612e0b90919063ffffffff16565b612e0b90919063ffffffff16565b9050600081111561319e5761319d600460019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682613802565b5b60008211156131d4576131d3600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683613802565b5b6000831180156131e45750600087115b156131f4576131f3878461384d565b5b505050505050506000601d60146101000a81548160ff02191690831515021790555050565b60008060009050600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156132a15761329a606461328c6015548661344090919063ffffffff16565b6134bb90919063ffffffff16565b905061331f565b600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561331e5761331b606461330d6016548661344090919063ffffffff16565b6134bb90919063ffffffff16565b90505b5b60008111156134235761337a81600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461259190919063ffffffff16565b600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161341a9190614105565b60405180910390a35b6134368184612e0b90919063ffffffff16565b9150509392505050565b60008083141561345357600090506134b5565b6000828461346191906142a1565b90508284826134709190614270565b146134b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134a790614085565b60405180910390fd5b809150505b92915050565b60006134fd83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613941565b905092915050565b6000600267ffffffffffffffff811115613548577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280602002602001820160405280156135765781602001602082028036833780820191505090505b50905030816000815181106135b4577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561365657600080fd5b505afa15801561366a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061368e9190613a36565b816001815181106136c8577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061372f30601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846125f7565b601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613793959493929190614150565b600060405180830381600087803b1580156137ad57600080fd5b505af11580156137c1573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a782826040516137f6929190614120565b60405180910390a15050565b8173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015613848573d6000803e3d6000fd5b505050565b61387a30601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846125f7565b601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198230856000806138c6611905565b426040518863ffffffff1660e01b81526004016138e896959493929190613f0c565b6060604051808303818588803b15801561390157600080fd5b505af1158015613915573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061393a9190613c03565b5050505050565b60008083118290613988576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161397f9190613fa3565b60405180910390fd5b50600083856139979190614270565b9050809150509392505050565b6000813590506139b381614787565b92915050565b6000815190506139c881614787565b92915050565b6000813590506139dd8161479e565b92915050565b6000813590506139f2816147b5565b92915050565b600081519050613a07816147b5565b92915050565b600060208284031215613a1f57600080fd5b6000613a2d848285016139a4565b91505092915050565b600060208284031215613a4857600080fd5b6000613a56848285016139b9565b91505092915050565b60008060408385031215613a7257600080fd5b6000613a80858286016139a4565b9250506020613a91858286016139a4565b9150509250929050565b600080600060608486031215613ab057600080fd5b6000613abe868287016139a4565b9350506020613acf868287016139a4565b9250506040613ae0868287016139e3565b9150509250925092565b60008060408385031215613afd57600080fd5b6000613b0b858286016139a4565b9250506020613b1c858286016139ce565b9150509250929050565b60008060408385031215613b3957600080fd5b6000613b47858286016139a4565b9250506020613b58858286016139e3565b9150509250929050565b600060208284031215613b7457600080fd5b6000613b82848285016139ce565b91505092915050565b600060208284031215613b9d57600080fd5b6000613bab848285016139e3565b91505092915050565b600080600060608486031215613bc957600080fd5b6000613bd7868287016139e3565b9350506020613be8868287016139e3565b9250506040613bf9868287016139e3565b9150509250925092565b600080600060608486031215613c1857600080fd5b6000613c26868287016139f8565b9350506020613c37868287016139f8565b9250506040613c48868287016139f8565b9150509250925092565b6000613c5e8383613c6a565b60208301905092915050565b613c738161432f565b82525050565b613c828161432f565b82525050565b6000613c93826141d5565b613c9d81856141f8565b9350613ca8836141c5565b8060005b83811015613cd9578151613cc08882613c52565b9750613ccb836141eb565b925050600181019050613cac565b5085935050505092915050565b613cef81614341565b82525050565b613cfe81614384565b82525050565b613d0d816143a8565b82525050565b6000613d1e826141e0565b613d288185614209565b9350613d388185602086016143ba565b613d41816144ac565b840191505092915050565b6000613d59602383614209565b9150613d64826144bd565b604082019050919050565b6000613d7c603483614209565b9150613d878261450c565b604082019050919050565b6000613d9f602683614209565b9150613daa8261455b565b604082019050919050565b6000613dc2602283614209565b9150613dcd826145aa565b604082019050919050565b6000613de5601b83614209565b9150613df0826145f9565b602082019050919050565b6000613e08602883614209565b9150613e1382614622565b604082019050919050565b6000613e2b602183614209565b9150613e3682614671565b604082019050919050565b6000613e4e602083614209565b9150613e59826146c0565b602082019050919050565b6000613e71602583614209565b9150613e7c826146e9565b604082019050919050565b6000613e94602483614209565b9150613e9f82614738565b604082019050919050565b613eb38161436d565b82525050565b613ec281614377565b82525050565b6000602082019050613edd6000830184613c79565b92915050565b6000604082019050613ef86000830185613c79565b613f056020830184613c79565b9392505050565b600060c082019050613f216000830189613c79565b613f2e6020830188613eaa565b613f3b6040830187613d04565b613f486060830186613d04565b613f556080830185613c79565b613f6260a0830184613eaa565b979650505050505050565b6000602082019050613f826000830184613ce6565b92915050565b6000602082019050613f9d6000830184613cf5565b92915050565b60006020820190508181036000830152613fbd8184613d13565b905092915050565b60006020820190508181036000830152613fde81613d4c565b9050919050565b60006020820190508181036000830152613ffe81613d6f565b9050919050565b6000602082019050818103600083015261401e81613d92565b9050919050565b6000602082019050818103600083015261403e81613db5565b9050919050565b6000602082019050818103600083015261405e81613dd8565b9050919050565b6000602082019050818103600083015261407e81613dfb565b9050919050565b6000602082019050818103600083015261409e81613e1e565b9050919050565b600060208201905081810360008301526140be81613e41565b9050919050565b600060208201905081810360008301526140de81613e64565b9050919050565b600060208201905081810360008301526140fe81613e87565b9050919050565b600060208201905061411a6000830184613eaa565b92915050565b60006040820190506141356000830185613eaa565b81810360208301526141478184613c88565b90509392505050565b600060a0820190506141656000830188613eaa565b6141726020830187613d04565b81810360408301526141848186613c88565b90506141936060830185613c79565b6141a06080830184613eaa565b9695505050505050565b60006020820190506141bf6000830184613eb9565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b60006142258261436d565b91506142308361436d565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156142655761426461441f565b5b828201905092915050565b600061427b8261436d565b91506142868361436d565b9250826142965761429561444e565b5b828204905092915050565b60006142ac8261436d565b91506142b78361436d565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156142f0576142ef61441f565b5b828202905092915050565b60006143068261436d565b91506143118361436d565b9250828210156143245761432361441f565b5b828203905092915050565b600061433a8261434d565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b600061438f82614396565b9050919050565b60006143a18261434d565b9050919050565b60006143b38261436d565b9050919050565b60005b838110156143d85780820151818401526020810190506143bd565b838111156143e7576000848401525b50505050565b6000600282049050600182168061440557607f821691505b602082108114156144195761441861447d565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f4d61782077616c6c65742073686f756c64206265206c657373206f722065757160008201527f616c20746f20342520746f74616c537570706c79000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6147908161432f565b811461479b57600080fd5b50565b6147a781614341565b81146147b257600080fd5b50565b6147be8161436d565b81146147c957600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220d6ffcbfe448ea09f0edb9e8736affb27a3fccf6ffb5afcfad4d525aef550ca3064736f6c63430008040033
Deployed Bytecode Sourcemap
14275:14802:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17929:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19095:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21895:115;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15936:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18206:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20368:373;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14932:49;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23811:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19995:365;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21393:113;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14711:81;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22457:128;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19719:123;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18115:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18592:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21763:124;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16051:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22731:803;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19854:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18314:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15762:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15820:47;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15045:46;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5814:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21157:228;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6039:145;;;;;;;;;;;;;:::i;:::-;;18020:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18818:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22320:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23636:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15098:43;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22018:115;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20753:392;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22141:171;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15984:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16098:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18441:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21514:131;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19609:102;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14988:50;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21653:102;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6192:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16150:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17929:83;17966:13;17999:5;17992:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17929:83;:::o;19095:161::-;19170:4;19187:39;19196:12;:10;:12::i;:::-;19210:7;19219:6;19187:8;:39::i;:::-;19244:4;19237:11;;19095:161;;;;:::o;21895:115::-;5958:12;:10;:12::i;:::-;5948:22;;:6;;;;;;;;;;:22;;;5940:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21991:10:::1;21970;;:32;;;;;;;;;;;;;;;;;;21895:115:::0;:::o;15936:41::-;;;;;;;;;;;;;:::o;18206:100::-;18259:7;18286:12;;18279:19;;18206:100;:::o;20368:373::-;5958:12;:10;:12::i;:::-;5948:22;;:6;;;;;;;;;;:22;;;5940:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20518:15:::1;20497:18;:36;;;;20565:15;20544:18;:36;;;;20614:17;20591:20;:40;;;;20665:68;20712:20;;20665:42;20688:18;;20665;;:22;;:42;;;;:::i;:::-;:46;;:68;;;;:::i;:::-;20644:18;:89;;;;20368:373:::0;;;:::o;14932:49::-;;;;;;;;;;;;;;;;;;;;;;:::o;23811:313::-;23909:4;23926:36;23936:6;23944:9;23955:6;23926:9;:36::i;:::-;;23973:121;23982:6;23990:12;:10;:12::i;:::-;24004:89;24042:6;24004:89;;;;;;;;;;;;;;;;;:11;:19;24016:6;24004:19;;;;;;;;;;;;;;;:33;24024:12;:10;:12::i;:::-;24004:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;23973:8;:121::i;:::-;24112:4;24105:11;;23811:313;;;;;:::o;19995:365::-;5958:12;:10;:12::i;:::-;5948:22;;:6;;;;;;;;;;:22;;;5940:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20143:15:::1;20123:17;:35;;;;20189:15;20169:17;:35;;;;20237:17;20215:19;:39;;;;20287:65;20332:19;;20287:40;20309:17;;20287;;:21;;:40;;;;:::i;:::-;:44;;:65;;;;:::i;:::-;20267:17;:85;;;;19995:365:::0;;;:::o;21393:113::-;5958:12;:10;:12::i;:::-;5948:22;;:6;;;;;;;;;;:22;;;5940:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21490:8:::1;21471:16;;:27;;;;;;;;;;;;;;;;;;21393:113:::0;:::o;14711:81::-;;;:::o;22457:128::-;22510:7;22537:40;22554:22;22564:11;22554:9;:22::i;:::-;22537:12;;:16;;:40;;;;:::i;:::-;22530:47;;22457:128;:::o;19719:123::-;5958:12;:10;:12::i;:::-;5948:22;;:6;;;;;;;;;;:22;;;5940:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19828:6:::1;19804:13;:21;19818:6;19804:21;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;19719:123:::0;;:::o;18115:83::-;18156:5;18181:9;;;;;;;;;;;18174:16;;18115:83;:::o;18592:218::-;18680:4;18697:83;18706:12;:10;:12::i;:::-;18720:7;18729:50;18768:10;18729:11;:25;18741:12;:10;:12::i;:::-;18729:25;;;;;;;;;;;;;;;:34;18755:7;18729:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;18697:8;:83::i;:::-;18798:4;18791:11;;18592:218;;;;:::o;21763:124::-;5958:12;:10;:12::i;:::-;5948:22;;:6;;;;;;;;;;:22;;;5940:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21871:8:::1;21845:23;:34;;;;21763:124:::0;:::o;16051:40::-;;;;;;;;;;;;;:::o;22731:803::-;22811:22;5958:12;:10;:12::i;:::-;5948:22;;:6;;;;;;;;;;:22;;;5940:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22848:35:::1;22905:16;22848:74;;22971:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22953:53;;;23015:4;23022:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22953:93;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22936:110;;23088:1;23062:28;;:14;:28;;;23059:225;;;23176:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23158:74;;;23241:4;23248:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23158:114;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23141:131;;23059:225;23310:14;23296:11;;:28;;;;;;;;;;;;;;;;;;23376:16;23358:15;;:34;;;;;;;;;;;;;;;;;;23472:4;23430:17;:39;23456:11;;;;;;;;;;;23430:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;23522:4;23487:10;:32;23506:11;;;;;;;;;;;23487:32;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;6018:1;22731:803:::0;;;:::o;19854:133::-;5958:12;:10;:12::i;:::-;5948:22;;:6;;;;;;;;;;:22;;;5940:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19971:8:::1;19943:16;:25;19960:7;19943:25;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;19854:133:::0;;:::o;18314:119::-;18380:7;18407:9;:18;18417:7;18407:18;;;;;;;;;;;;;;;;18400:25;;18314:119;;;:::o;15762:51::-;;;;:::o;15820:47::-;;;;:::o;15045:46::-;;;;;;;;;;;;;;;;;;;;;;:::o;5814:79::-;5852:7;5879:6;;;;;;;;;;;5872:13;;5814:79;:::o;21157:228::-;5958:12;:10;:12::i;:::-;5948:22;;:6;;;;;;;;;;:22;;;5940:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21261:21:::1;21245:11;:38;;21237:103;;;;;;;;;;;;:::i;:::-;;;;;;;;;21366:11;21351:12;:26;;;;21157:228:::0;:::o;6039:145::-;5958:12;:10;:12::i;:::-;5948:22;;:6;;;;;;;;;;:22;;;5940:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6143:1:::1;6106:40;;6127:6;::::0;::::1;;;;;;;;6106:40;;;;;;;;;;;;6174:1;6157:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;6039:145::o:0;18020:87::-;18059:13;18092:7;18085:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18020:87;:::o;18818:269::-;18911:4;18928:129;18937:12;:10;:12::i;:::-;18951:7;18960:96;18999:15;18960:96;;;;;;;;;;;;;;;;;:11;:25;18972:12;:10;:12::i;:::-;18960:25;;;;;;;;;;;;;;;:34;18986:7;18960:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;18928:8;:129::i;:::-;19075:4;19068:11;;18818:269;;;;:::o;22320:125::-;5958:12;:10;:12::i;:::-;5948:22;;:6;;;;;;;;;;:22;;;5940:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22429:8:::1;22401:25;;:36;;;;;;;;;;;;;;;;;;22320:125:::0;:::o;23636:167::-;23714:4;23731:42;23741:12;:10;:12::i;:::-;23755:9;23766:6;23731:9;:42::i;:::-;;23791:4;23784:11;;23636:167;;;;:::o;15098:43::-;;;;;;;;;;;;;;;;;;;;;;:::o;22018:115::-;5958:12;:10;:12::i;:::-;5948:22;;:6;;;;;;;;;;:22;;;5940:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22114:10:::1;22093;;:32;;;;;;;;;;;;;;;;;;22018:115:::0;:::o;20753:392::-;5958:12;:10;:12::i;:::-;5948:22;;:6;;;;;;;;;;:22;;;5940:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20920:17:::1;20901:16;:36;;;;20967:17;20948:16;:36;;;;21016:19;20995:18;:40;;;;21075:62;21118:18;;21075:38;21096:16;;21075;;:20;;:38;;;;:::i;:::-;:42;;:62;;;;:::i;:::-;21048:24;:89;;;;20753:392:::0;;;:::o;22141:171::-;5958:12;:10;:12::i;:::-;5948:22;;:6;;;;;;;;;;:22;;;5940:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22242:8:::1;22218:21;;:32;;;;;;;;;;;;;;;;;;22266:38;22295:8;22266:38;;;;;;:::i;:::-;;;;;;;;22141:171:::0;:::o;15984:26::-;;;;;;;;;;;;;:::o;16098:45::-;;;;;;;;;;;;;:::o;18441:143::-;18522:7;18549:11;:18;18561:5;18549:18;;;;;;;;;;;;;;;:27;18568:7;18549:27;;;;;;;;;;;;;;;;18542:34;;18441:143;;;;:::o;21514:131::-;5958:12;:10;:12::i;:::-;5948:22;;:6;;;;;;;;;;:22;;;5940:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21631:6:::1;21603:17;:25;21621:6;21603:25;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;21514:131:::0;;:::o;19609:102::-;5958:12;:10;:12::i;:::-;5948:22;;:6;;;;;;;;;;:22;;;5940:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19699:4:::1;19677:10;:19;19688:7;19677:19;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;19609:102:::0;:::o;14988:50::-;;;;;;;;;;;;;;;;;;;;;;:::o;21653:102::-;5958:12;:10;:12::i;:::-;5948:22;;:6;;;;;;;;;;:22;;;5940:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21739:8:::1;21725:10;:22;;;;21653:102:::0;:::o;6192:244::-;5958:12;:10;:12::i;:::-;5948:22;;:6;;;;;;;;;;:22;;;5940:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6301:1:::1;6281:22;;:8;:22;;;;6273:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;6391:8;6362:38;;6383:6;::::0;::::1;;;;;;;;6362:38;;;;;;;;;;;;6420:8;6411:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;6192:244:::0;:::o;16150:35::-;;;;;;;;;;;;;:::o;1216:181::-;1274:7;1294:9;1310:1;1306;:5;;;;:::i;:::-;1294:17;;1335:1;1330;:6;;1322:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1388:1;1381:8;;;1216:181;;;;:::o;148:115::-;201:15;244:10;229:26;;148:115;:::o;19264:337::-;19374:1;19357:19;;:5;:19;;;;19349:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19455:1;19436:21;;:7;:21;;;;19428:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19539:6;19509:11;:18;19521:5;19509:18;;;;;;;;;;;;;;;:27;19528:7;19509:27;;;;;;;;;;;;;;;:36;;;;19577:7;19561:32;;19570:5;19561:32;;;19586:6;19561:32;;;;;;:::i;:::-;;;;;;;;19264:337;;;:::o;24132:1697::-;24219:4;24264:1;24246:20;;:6;:20;;;;24238:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;24348:1;24327:23;;:9;:23;;;;24319:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;24406:16;;;;;;;;;;;24403:1419;;;24456:41;24471:6;24479:9;24490:6;24456:14;:41::i;:::-;24449:48;;;;24403:1419;24553:13;:21;24567:6;24553:21;;;;;;;;;;;;;;;;;;;;;;;;;24552:22;:51;;;;;24579:13;:24;24593:9;24579:24;;;;;;;;;;;;;;;;;;;;;;;;;24578:25;24552:51;24549:166;;;24642:12;;24632:6;:22;;24624:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;24549:166;24743:28;24774:24;24792:4;24774:9;:24::i;:::-;24743:55;;24813:28;24868:23;;24844:20;:47;;24813:78;;24924:23;:44;;;;;24952:16;;;;;;;;;;;24951:17;24924:44;:67;;;;;24973:10;:18;24984:6;24973:18;;;;;;;;;;;;;;;;;;;;;;;;;24972:19;24924:67;:92;;;;;24995:21;;;;;;;;;;;24924:92;24920:303;;;25054:25;;;;;;;;;;;25051:97;;;25125:23;;25102:46;;25051:97;25167:36;25182:20;25167:14;:36::i;:::-;24920:303;25259:53;25281:6;25259:53;;;;;;;;;;;;;;;;;:9;:17;25269:6;25259:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;25239:9;:17;25249:6;25239:17;;;;;;;;;;;;;;;:73;;;;25329:19;25352:16;:24;25369:6;25352:24;;;;;;;;;;;;;;;;;;;;;;;;;:55;;;;25380:16;:27;25397:9;25380:27;;;;;;;;;;;;;;;;;;;;;;;;;25352:55;25351:146;;25463:34;25471:6;25479:9;25490:6;25463:7;:34::i;:::-;25351:146;;;25454:6;25351:146;25329:168;;25517:16;;;;;;;;;;;:49;;;;;25538:17;:28;25556:9;25538:28;;;;;;;;;;;;;;;;;;;;;;;;;25537:29;25517:49;25514:131;;;25634:10;;25593:37;25618:11;25593:20;25603:9;25593;:20::i;:::-;:24;;:37;;;;:::i;:::-;:51;;25585:60;;;;;;25514:131;25685:37;25710:11;25685:9;:20;25695:9;25685:20;;;;;;;;;;;;;;;;:24;;:37;;;;:::i;:::-;25662:9;:20;25672:9;25662:20;;;;;;;;;;;;;;;:60;;;;25761:9;25744:40;;25753:6;25744:40;;;25772:11;25744:40;;;;;;:::i;:::-;;;;;;;;25806:4;25799:11;;;;;24132:1697;;;;;;:::o;1549:192::-;1635:7;1668:1;1663;:6;;1671:12;1655:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1695:9;1711:1;1707;:5;;;;:::i;:::-;1695:17;;1732:1;1725:8;;;1549:192;;;;;:::o;1405:136::-;1463:7;1490:43;1494:1;1497;1490:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1483:50;;1405:136;;;;:::o;25837:330::-;25930:4;25967:53;25989:6;25967:53;;;;;;;;;;;;;;;;;:9;:17;25977:6;25967:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;25947:9;:17;25957:6;25947:17;;;;;;;;;;;;;;;:73;;;;26054:32;26079:6;26054:9;:20;26064:9;26054:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;26031:9;:20;26041:9;26031:20;;;;;;;;;;;;;;;:55;;;;26119:9;26102:35;;26111:6;26102:35;;;26130:6;26102:35;;;;;;:::i;:::-;;;;;;;;26155:4;26148:11;;25837:330;;;;;:::o;26175:1068::-;16627:4;16608:16;;:23;;;;;;;;;;;;;;;;;;26257:19:::1;26279:66;26343:1;26279:59;26313:24;;26279:29;26291:16;;26279:7;:11;;:29;;;;:::i;:::-;:33;;:59;;;;:::i;:::-;:63;;:66;;;;:::i;:::-;26257:88;;26356:21;26380:24;26392:11;26380:7;:11;;:24;;;;:::i;:::-;26356:48;;26417:31;26434:13;26417:16;:31::i;:::-;26459:22;26484:21;26459:46;;26518:19;26540:53;26569:23;26590:1;26569:16;;:20;;:23;;;;:::i;:::-;26540:24;;:28;;:53;;;;:::i;:::-;26518:75;;26614:26;26643:60;26701:1;26643:53;26684:11;26643:36;26662:16;;26643:14;:18;;:36;;;;:::i;:::-;:40;;:53;;;;:::i;:::-;:57;;:60;;;;:::i;:::-;26614:89;;26714:28;26745:55;26788:11;26745:38;26764:18;;26745:14;:18;;:38;;;;:::i;:::-;:42;;:55;;;;:::i;:::-;26714:86;;26811:26;26840:64;26883:20;26840:38;26859:18;26840:14;:18;;:38;;;;:::i;:::-;:42;;:64;;;;:::i;:::-;26811:93;;26941:1;26920:18;:22;26917:92;;;26957:52;26978:10;;;;;;;;;;;26990:18;26957:20;:52::i;:::-;26917:92;27048:1;27025:20;:24;27022:96;;;27064:54;27085:10;;;;;;;;;;;27097:20;27064;:54::i;:::-;27022:96;27155:1;27134:18;:22;:41;;;;;27174:1;27160:11;:15;27134:41;27131:104;;;27190:45;27203:11;27216:18;27190:12;:45::i;:::-;27131:104;16642:1;;;;;;;16673:5:::0;16654:16;;:24;;;;;;;;;;;;;;;;;;26175:1068;:::o;28450:618::-;28536:7;28566:17;28586:1;28566:21;;28611:10;:18;28622:6;28611:18;;;;;;;;;;;;;;;;;;;;;;;;;28608:219;;;28658:38;28692:3;28658:29;28669:17;;28658:6;:10;;:29;;;;:::i;:::-;:33;;:38;;;;:::i;:::-;28646:50;;28608:219;;;28726:10;:21;28737:9;28726:21;;;;;;;;;;;;;;;;;;;;;;;;;28723:104;;;28776:39;28811:3;28776:30;28787:18;;28776:6;:10;;:30;;;;:::i;:::-;:34;;:39;;;;:::i;:::-;28764:51;;28723:104;28608:219;28862:1;28850:9;:13;28847:173;;;28907:39;28936:9;28907;:24;28925:4;28907:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;28880:9;:24;28898:4;28880:24;;;;;;;;;;;;;;;:66;;;;28991:4;28966:42;;28975:6;28966:42;;;28998:9;28966:42;;;;;;:::i;:::-;;;;;;;;28847:173;29039:21;29050:9;29039:6;:10;;:21;;;;:::i;:::-;29032:28;;;28450:618;;;;;:::o;1749:250::-;1807:7;1836:1;1831;:6;1827:47;;;1861:1;1854:8;;;;1827:47;1886:9;1902:1;1898;:5;;;;:::i;:::-;1886:17;;1931:1;1926;1922;:5;;;;:::i;:::-;:10;1914:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1990:1;1983:8;;;1749:250;;;;;:::o;2007:132::-;2065:7;2092:39;2096:1;2099;2092:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2085:46;;2007:132;;;;:::o;27255:666::-;27381:21;27419:1;27405:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27381:40;;27450:4;27432;27437:1;27432:7;;;;;;;;;;;;;;;;;;;;;:23;;;;;;;;;;;27476:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27466:4;27471:1;27466:7;;;;;;;;;;;;;;;;;;;;;:32;;;;;;;;;;;27511:62;27528:4;27543:15;;;;;;;;;;;27561:11;27511:8;:62::i;:::-;27612:15;;;;;;;;;;;:66;;;27693:11;27719:1;27763:4;27790;27826:15;27612:240;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27878:35;27895:11;27908:4;27878:35;;;;;;;:::i;:::-;;;;;;;;27255:666;;:::o;22593:126::-;22685:9;:18;;:26;22704:6;22685:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22593:126;;:::o;27929:513::-;28077:62;28094:4;28109:15;;;;;;;;;;;28127:11;28077:8;:62::i;:::-;28182:15;;;;;;;;;;;:31;;;28221:9;28254:4;28274:11;28300:1;28343;28386:7;:5;:7::i;:::-;28408:15;28182:252;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;27929:513;;:::o;2147:278::-;2233:7;2265:1;2261;:5;2268:12;2253:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2292:9;2308:1;2304;:5;;;;:::i;:::-;2292:17;;2416:1;2409:8;;;2147:278;;;;;:::o;7:139:1:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;152:143::-;209:5;240:6;234:13;225:22;;256:33;283:5;256:33;:::i;:::-;215:80;;;;:::o;301:133::-;344:5;382:6;369:20;360:29;;398:30;422:5;398:30;:::i;:::-;350:84;;;;:::o;440:139::-;486:5;524:6;511:20;502:29;;540:33;567:5;540:33;:::i;:::-;492:87;;;;:::o;585:143::-;642:5;673:6;667:13;658:22;;689:33;716:5;689:33;:::i;:::-;648:80;;;;:::o;734:262::-;793:6;842:2;830:9;821:7;817:23;813:32;810:2;;;858:1;855;848:12;810:2;901:1;926:53;971:7;962:6;951:9;947:22;926:53;:::i;:::-;916:63;;872:117;800:196;;;;:::o;1002:284::-;1072:6;1121:2;1109:9;1100:7;1096:23;1092:32;1089:2;;;1137:1;1134;1127:12;1089:2;1180:1;1205:64;1261:7;1252:6;1241:9;1237:22;1205:64;:::i;:::-;1195:74;;1151:128;1079:207;;;;:::o;1292:407::-;1360:6;1368;1417:2;1405:9;1396:7;1392:23;1388:32;1385:2;;;1433:1;1430;1423:12;1385:2;1476:1;1501:53;1546:7;1537:6;1526:9;1522:22;1501:53;:::i;:::-;1491:63;;1447:117;1603:2;1629:53;1674:7;1665:6;1654:9;1650:22;1629:53;:::i;:::-;1619:63;;1574:118;1375:324;;;;;:::o;1705:552::-;1782:6;1790;1798;1847:2;1835:9;1826:7;1822:23;1818:32;1815:2;;;1863:1;1860;1853:12;1815:2;1906:1;1931:53;1976:7;1967:6;1956:9;1952:22;1931:53;:::i;:::-;1921:63;;1877:117;2033:2;2059:53;2104:7;2095:6;2084:9;2080:22;2059:53;:::i;:::-;2049:63;;2004:118;2161:2;2187:53;2232:7;2223:6;2212:9;2208:22;2187:53;:::i;:::-;2177:63;;2132:118;1805:452;;;;;:::o;2263:401::-;2328:6;2336;2385:2;2373:9;2364:7;2360:23;2356:32;2353:2;;;2401:1;2398;2391:12;2353:2;2444:1;2469:53;2514:7;2505:6;2494:9;2490:22;2469:53;:::i;:::-;2459:63;;2415:117;2571:2;2597:50;2639:7;2630:6;2619:9;2615:22;2597:50;:::i;:::-;2587:60;;2542:115;2343:321;;;;;:::o;2670:407::-;2738:6;2746;2795:2;2783:9;2774:7;2770:23;2766:32;2763:2;;;2811:1;2808;2801:12;2763:2;2854:1;2879:53;2924:7;2915:6;2904:9;2900:22;2879:53;:::i;:::-;2869:63;;2825:117;2981:2;3007:53;3052:7;3043:6;3032:9;3028:22;3007:53;:::i;:::-;2997:63;;2952:118;2753:324;;;;;:::o;3083:256::-;3139:6;3188:2;3176:9;3167:7;3163:23;3159:32;3156:2;;;3204:1;3201;3194:12;3156:2;3247:1;3272:50;3314:7;3305:6;3294:9;3290:22;3272:50;:::i;:::-;3262:60;;3218:114;3146:193;;;;:::o;3345:262::-;3404:6;3453:2;3441:9;3432:7;3428:23;3424:32;3421:2;;;3469:1;3466;3459:12;3421:2;3512:1;3537:53;3582:7;3573:6;3562:9;3558:22;3537:53;:::i;:::-;3527:63;;3483:117;3411:196;;;;:::o;3613:552::-;3690:6;3698;3706;3755:2;3743:9;3734:7;3730:23;3726:32;3723:2;;;3771:1;3768;3761:12;3723:2;3814:1;3839:53;3884:7;3875:6;3864:9;3860:22;3839:53;:::i;:::-;3829:63;;3785:117;3941:2;3967:53;4012:7;4003:6;3992:9;3988:22;3967:53;:::i;:::-;3957:63;;3912:118;4069:2;4095:53;4140:7;4131:6;4120:9;4116:22;4095:53;:::i;:::-;4085:63;;4040:118;3713:452;;;;;:::o;4171:596::-;4259:6;4267;4275;4324:2;4312:9;4303:7;4299:23;4295:32;4292:2;;;4340:1;4337;4330:12;4292:2;4383:1;4408:64;4464:7;4455:6;4444:9;4440:22;4408:64;:::i;:::-;4398:74;;4354:128;4521:2;4547:64;4603:7;4594:6;4583:9;4579:22;4547:64;:::i;:::-;4537:74;;4492:129;4660:2;4686:64;4742:7;4733:6;4722:9;4718:22;4686:64;:::i;:::-;4676:74;;4631:129;4282:485;;;;;:::o;4773:179::-;4842:10;4863:46;4905:3;4897:6;4863:46;:::i;:::-;4941:4;4936:3;4932:14;4918:28;;4853:99;;;;:::o;4958:108::-;5035:24;5053:5;5035:24;:::i;:::-;5030:3;5023:37;5013:53;;:::o;5072:118::-;5159:24;5177:5;5159:24;:::i;:::-;5154:3;5147:37;5137:53;;:::o;5226:732::-;5345:3;5374:54;5422:5;5374:54;:::i;:::-;5444:86;5523:6;5518:3;5444:86;:::i;:::-;5437:93;;5554:56;5604:5;5554:56;:::i;:::-;5633:7;5664:1;5649:284;5674:6;5671:1;5668:13;5649:284;;;5750:6;5744:13;5777:63;5836:3;5821:13;5777:63;:::i;:::-;5770:70;;5863:60;5916:6;5863:60;:::i;:::-;5853:70;;5709:224;5696:1;5693;5689:9;5684:14;;5649:284;;;5653:14;5949:3;5942:10;;5350:608;;;;;;;:::o;5964:109::-;6045:21;6060:5;6045:21;:::i;:::-;6040:3;6033:34;6023:50;;:::o;6079:185::-;6193:64;6251:5;6193:64;:::i;:::-;6188:3;6181:77;6171:93;;:::o;6270:147::-;6365:45;6404:5;6365:45;:::i;:::-;6360:3;6353:58;6343:74;;:::o;6423:364::-;6511:3;6539:39;6572:5;6539:39;:::i;:::-;6594:71;6658:6;6653:3;6594:71;:::i;:::-;6587:78;;6674:52;6719:6;6714:3;6707:4;6700:5;6696:16;6674:52;:::i;:::-;6751:29;6773:6;6751:29;:::i;:::-;6746:3;6742:39;6735:46;;6515:272;;;;;:::o;6793:366::-;6935:3;6956:67;7020:2;7015:3;6956:67;:::i;:::-;6949:74;;7032:93;7121:3;7032:93;:::i;:::-;7150:2;7145:3;7141:12;7134:19;;6939:220;;;:::o;7165:366::-;7307:3;7328:67;7392:2;7387:3;7328:67;:::i;:::-;7321:74;;7404:93;7493:3;7404:93;:::i;:::-;7522:2;7517:3;7513:12;7506:19;;7311:220;;;:::o;7537:366::-;7679:3;7700:67;7764:2;7759:3;7700:67;:::i;:::-;7693:74;;7776:93;7865:3;7776:93;:::i;:::-;7894:2;7889:3;7885:12;7878:19;;7683:220;;;:::o;7909:366::-;8051:3;8072:67;8136:2;8131:3;8072:67;:::i;:::-;8065:74;;8148:93;8237:3;8148:93;:::i;:::-;8266:2;8261:3;8257:12;8250:19;;8055:220;;;:::o;8281:366::-;8423:3;8444:67;8508:2;8503:3;8444:67;:::i;:::-;8437:74;;8520:93;8609:3;8520:93;:::i;:::-;8638:2;8633:3;8629:12;8622:19;;8427:220;;;:::o;8653:366::-;8795:3;8816:67;8880:2;8875:3;8816:67;:::i;:::-;8809:74;;8892:93;8981:3;8892:93;:::i;:::-;9010:2;9005:3;9001:12;8994:19;;8799:220;;;:::o;9025:366::-;9167:3;9188:67;9252:2;9247:3;9188:67;:::i;:::-;9181:74;;9264:93;9353:3;9264:93;:::i;:::-;9382:2;9377:3;9373:12;9366:19;;9171:220;;;:::o;9397:366::-;9539:3;9560:67;9624:2;9619:3;9560:67;:::i;:::-;9553:74;;9636:93;9725:3;9636:93;:::i;:::-;9754:2;9749:3;9745:12;9738:19;;9543:220;;;:::o;9769:366::-;9911:3;9932:67;9996:2;9991:3;9932:67;:::i;:::-;9925:74;;10008:93;10097:3;10008:93;:::i;:::-;10126:2;10121:3;10117:12;10110:19;;9915:220;;;:::o;10141:366::-;10283:3;10304:67;10368:2;10363:3;10304:67;:::i;:::-;10297:74;;10380:93;10469:3;10380:93;:::i;:::-;10498:2;10493:3;10489:12;10482:19;;10287:220;;;:::o;10513:118::-;10600:24;10618:5;10600:24;:::i;:::-;10595:3;10588:37;10578:53;;:::o;10637:112::-;10720:22;10736:5;10720:22;:::i;:::-;10715:3;10708:35;10698:51;;:::o;10755:222::-;10848:4;10886:2;10875:9;10871:18;10863:26;;10899:71;10967:1;10956:9;10952:17;10943:6;10899:71;:::i;:::-;10853:124;;;;:::o;10983:332::-;11104:4;11142:2;11131:9;11127:18;11119:26;;11155:71;11223:1;11212:9;11208:17;11199:6;11155:71;:::i;:::-;11236:72;11304:2;11293:9;11289:18;11280:6;11236:72;:::i;:::-;11109:206;;;;;:::o;11321:807::-;11570:4;11608:3;11597:9;11593:19;11585:27;;11622:71;11690:1;11679:9;11675:17;11666:6;11622:71;:::i;:::-;11703:72;11771:2;11760:9;11756:18;11747:6;11703:72;:::i;:::-;11785:80;11861:2;11850:9;11846:18;11837:6;11785:80;:::i;:::-;11875;11951:2;11940:9;11936:18;11927:6;11875:80;:::i;:::-;11965:73;12033:3;12022:9;12018:19;12009:6;11965:73;:::i;:::-;12048;12116:3;12105:9;12101:19;12092:6;12048:73;:::i;:::-;11575:553;;;;;;;;;:::o;12134:210::-;12221:4;12259:2;12248:9;12244:18;12236:26;;12272:65;12334:1;12323:9;12319:17;12310:6;12272:65;:::i;:::-;12226:118;;;;:::o;12350:276::-;12470:4;12508:2;12497:9;12493:18;12485:26;;12521:98;12616:1;12605:9;12601:17;12592:6;12521:98;:::i;:::-;12475:151;;;;:::o;12632:313::-;12745:4;12783:2;12772:9;12768:18;12760:26;;12832:9;12826:4;12822:20;12818:1;12807:9;12803:17;12796:47;12860:78;12933:4;12924:6;12860:78;:::i;:::-;12852:86;;12750:195;;;;:::o;12951:419::-;13117:4;13155:2;13144:9;13140:18;13132:26;;13204:9;13198:4;13194:20;13190:1;13179:9;13175:17;13168:47;13232:131;13358:4;13232:131;:::i;:::-;13224:139;;13122:248;;;:::o;13376:419::-;13542:4;13580:2;13569:9;13565:18;13557:26;;13629:9;13623:4;13619:20;13615:1;13604:9;13600:17;13593:47;13657:131;13783:4;13657:131;:::i;:::-;13649:139;;13547:248;;;:::o;13801:419::-;13967:4;14005:2;13994:9;13990:18;13982:26;;14054:9;14048:4;14044:20;14040:1;14029:9;14025:17;14018:47;14082:131;14208:4;14082:131;:::i;:::-;14074:139;;13972:248;;;:::o;14226:419::-;14392:4;14430:2;14419:9;14415:18;14407:26;;14479:9;14473:4;14469:20;14465:1;14454:9;14450:17;14443:47;14507:131;14633:4;14507:131;:::i;:::-;14499:139;;14397:248;;;:::o;14651:419::-;14817:4;14855:2;14844:9;14840:18;14832:26;;14904:9;14898:4;14894:20;14890:1;14879:9;14875:17;14868:47;14932:131;15058:4;14932:131;:::i;:::-;14924:139;;14822:248;;;:::o;15076:419::-;15242:4;15280:2;15269:9;15265:18;15257:26;;15329:9;15323:4;15319:20;15315:1;15304:9;15300:17;15293:47;15357:131;15483:4;15357:131;:::i;:::-;15349:139;;15247:248;;;:::o;15501:419::-;15667:4;15705:2;15694:9;15690:18;15682:26;;15754:9;15748:4;15744:20;15740:1;15729:9;15725:17;15718:47;15782:131;15908:4;15782:131;:::i;:::-;15774:139;;15672:248;;;:::o;15926:419::-;16092:4;16130:2;16119:9;16115:18;16107:26;;16179:9;16173:4;16169:20;16165:1;16154:9;16150:17;16143:47;16207:131;16333:4;16207:131;:::i;:::-;16199:139;;16097:248;;;:::o;16351:419::-;16517:4;16555:2;16544:9;16540:18;16532:26;;16604:9;16598:4;16594:20;16590:1;16579:9;16575:17;16568:47;16632:131;16758:4;16632:131;:::i;:::-;16624:139;;16522:248;;;:::o;16776:419::-;16942:4;16980:2;16969:9;16965:18;16957:26;;17029:9;17023:4;17019:20;17015:1;17004:9;17000:17;16993:47;17057:131;17183:4;17057:131;:::i;:::-;17049:139;;16947:248;;;:::o;17201:222::-;17294:4;17332:2;17321:9;17317:18;17309:26;;17345:71;17413:1;17402:9;17398:17;17389:6;17345:71;:::i;:::-;17299:124;;;;:::o;17429:483::-;17600:4;17638:2;17627:9;17623:18;17615:26;;17651:71;17719:1;17708:9;17704:17;17695:6;17651:71;:::i;:::-;17769:9;17763:4;17759:20;17754:2;17743:9;17739:18;17732:48;17797:108;17900:4;17891:6;17797:108;:::i;:::-;17789:116;;17605:307;;;;;:::o;17918:831::-;18181:4;18219:3;18208:9;18204:19;18196:27;;18233:71;18301:1;18290:9;18286:17;18277:6;18233:71;:::i;:::-;18314:80;18390:2;18379:9;18375:18;18366:6;18314:80;:::i;:::-;18441:9;18435:4;18431:20;18426:2;18415:9;18411:18;18404:48;18469:108;18572:4;18563:6;18469:108;:::i;:::-;18461:116;;18587:72;18655:2;18644:9;18640:18;18631:6;18587:72;:::i;:::-;18669:73;18737:3;18726:9;18722:19;18713:6;18669:73;:::i;:::-;18186:563;;;;;;;;:::o;18755:214::-;18844:4;18882:2;18871:9;18867:18;18859:26;;18895:67;18959:1;18948:9;18944:17;18935:6;18895:67;:::i;:::-;18849:120;;;;:::o;18975:132::-;19042:4;19065:3;19057:11;;19095:4;19090:3;19086:14;19078:22;;19047:60;;;:::o;19113:114::-;19180:6;19214:5;19208:12;19198:22;;19187:40;;;:::o;19233:99::-;19285:6;19319:5;19313:12;19303:22;;19292:40;;;:::o;19338:113::-;19408:4;19440;19435:3;19431:14;19423:22;;19413:38;;;:::o;19457:184::-;19556:11;19590:6;19585:3;19578:19;19630:4;19625:3;19621:14;19606:29;;19568:73;;;;:::o;19647:169::-;19731:11;19765:6;19760:3;19753:19;19805:4;19800:3;19796:14;19781:29;;19743:73;;;;:::o;19822:305::-;19862:3;19881:20;19899:1;19881:20;:::i;:::-;19876:25;;19915:20;19933:1;19915:20;:::i;:::-;19910:25;;20069:1;20001:66;19997:74;19994:1;19991:81;19988:2;;;20075:18;;:::i;:::-;19988:2;20119:1;20116;20112:9;20105:16;;19866:261;;;;:::o;20133:185::-;20173:1;20190:20;20208:1;20190:20;:::i;:::-;20185:25;;20224:20;20242:1;20224:20;:::i;:::-;20219:25;;20263:1;20253:2;;20268:18;;:::i;:::-;20253:2;20310:1;20307;20303:9;20298:14;;20175:143;;;;:::o;20324:348::-;20364:7;20387:20;20405:1;20387:20;:::i;:::-;20382:25;;20421:20;20439:1;20421:20;:::i;:::-;20416:25;;20609:1;20541:66;20537:74;20534:1;20531:81;20526:1;20519:9;20512:17;20508:105;20505:2;;;20616:18;;:::i;:::-;20505:2;20664:1;20661;20657:9;20646:20;;20372:300;;;;:::o;20678:191::-;20718:4;20738:20;20756:1;20738:20;:::i;:::-;20733:25;;20772:20;20790:1;20772:20;:::i;:::-;20767:25;;20811:1;20808;20805:8;20802:2;;;20816:18;;:::i;:::-;20802:2;20861:1;20858;20854:9;20846:17;;20723:146;;;;:::o;20875:96::-;20912:7;20941:24;20959:5;20941:24;:::i;:::-;20930:35;;20920:51;;;:::o;20977:90::-;21011:7;21054:5;21047:13;21040:21;21029:32;;21019:48;;;:::o;21073:126::-;21110:7;21150:42;21143:5;21139:54;21128:65;;21118:81;;;:::o;21205:77::-;21242:7;21271:5;21260:16;;21250:32;;;:::o;21288:86::-;21323:7;21363:4;21356:5;21352:16;21341:27;;21331:43;;;:::o;21380:180::-;21457:9;21490:64;21548:5;21490:64;:::i;:::-;21477:77;;21467:93;;;:::o;21566:140::-;21643:9;21676:24;21694:5;21676:24;:::i;:::-;21663:37;;21653:53;;;:::o;21712:121::-;21770:9;21803:24;21821:5;21803:24;:::i;:::-;21790:37;;21780:53;;;:::o;21839:307::-;21907:1;21917:113;21931:6;21928:1;21925:13;21917:113;;;22016:1;22011:3;22007:11;22001:18;21997:1;21992:3;21988:11;21981:39;21953:2;21950:1;21946:10;21941:15;;21917:113;;;22048:6;22045:1;22042:13;22039:2;;;22128:1;22119:6;22114:3;22110:16;22103:27;22039:2;21888:258;;;;:::o;22152:320::-;22196:6;22233:1;22227:4;22223:12;22213:22;;22280:1;22274:4;22270:12;22301:18;22291:2;;22357:4;22349:6;22345:17;22335:27;;22291:2;22419;22411:6;22408:14;22388:18;22385:38;22382:2;;;22438:18;;:::i;:::-;22382:2;22203:269;;;;:::o;22478:180::-;22526:77;22523:1;22516:88;22623:4;22620:1;22613:15;22647:4;22644:1;22637:15;22664:180;22712:77;22709:1;22702:88;22809:4;22806:1;22799:15;22833:4;22830:1;22823:15;22850:180;22898:77;22895:1;22888:88;22995:4;22992:1;22985:15;23019:4;23016:1;23009:15;23036:102;23077:6;23128:2;23124:7;23119:2;23112:5;23108:14;23104:28;23094:38;;23084:54;;;:::o;23144:222::-;23284:34;23280:1;23272:6;23268:14;23261:58;23353:5;23348:2;23340:6;23336:15;23329:30;23250:116;:::o;23372:239::-;23512:34;23508:1;23500:6;23496:14;23489:58;23581:22;23576:2;23568:6;23564:15;23557:47;23478:133;:::o;23617:225::-;23757:34;23753:1;23745:6;23741:14;23734:58;23826:8;23821:2;23813:6;23809:15;23802:33;23723:119;:::o;23848:221::-;23988:34;23984:1;23976:6;23972:14;23965:58;24057:4;24052:2;24044:6;24040:15;24033:29;23954:115;:::o;24075:177::-;24215:29;24211:1;24203:6;24199:14;24192:53;24181:71;:::o;24258:227::-;24398:34;24394:1;24386:6;24382:14;24375:58;24467:10;24462:2;24454:6;24450:15;24443:35;24364:121;:::o;24491:220::-;24631:34;24627:1;24619:6;24615:14;24608:58;24700:3;24695:2;24687:6;24683:15;24676:28;24597:114;:::o;24717:182::-;24857:34;24853:1;24845:6;24841:14;24834:58;24823:76;:::o;24905:224::-;25045:34;25041:1;25033:6;25029:14;25022:58;25114:7;25109:2;25101:6;25097:15;25090:32;25011:118;:::o;25135:223::-;25275:34;25271:1;25263:6;25259:14;25252:58;25344:6;25339:2;25331:6;25327:15;25320:31;25241:117;:::o;25364:122::-;25437:24;25455:5;25437:24;:::i;:::-;25430:5;25427:35;25417:2;;25476:1;25473;25466:12;25417:2;25407:79;:::o;25492:116::-;25562:21;25577:5;25562:21;:::i;:::-;25555:5;25552:32;25542:2;;25598:1;25595;25588:12;25542:2;25532:76;:::o;25614:122::-;25687:24;25705:5;25687:24;:::i;:::-;25680:5;25677:35;25667:2;;25726:1;25723;25716:12;25667:2;25657:79;:::o
Swarm Source
ipfs://d6ffcbfe448ea09f0edb9e8736affb27a3fccf6ffb5afcfad4d525aef550ca30
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in ETH
0
Multichain Portfolio | 33 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.