Source Code
More Info
Private Name Tags
ContractCreator
TokenTracker
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
FeunAI
Compiler Version
v0.8.25+commit.b61c2a91
Contract Source Code (Solidity)
/**
*Submitted for verification at Etherscan.io on 2025-05-08
*/
/*
FeunAI is a decentralized marketplace that connects GPU owners with AI developers,
researchers, and businesses seeking computational resources.
Website: https://www.feun.network/
Whitepaper: https://www.feun.network/whitepaper
X: https://twitter.com/FeunNetwork
Telegram Portal: https://t.me/FeunNetwork
LinkTree: https://linktr.ee/FeunNetwork
*/
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.18;
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
);
}
interface IERC20Metadata is IERC20 {
/**
* @dev Returns the name of the token.
*/
function name() external view returns (string memory);
/**
* @dev Returns the symbol of the token.
*/
function symbol() external view returns (string memory);
/**
* @dev Returns the decimals places of the token.
*/
function decimals() external view returns (uint8);
}
contract ERC20 is Context, IERC20, IERC20Metadata {
mapping(address => uint256) private _balances;
mapping(address => mapping(address => uint256)) private _allowances;
uint256 private _totalSupply;
string private _name;
string private _symbol;
uint8 private _decimals;
constructor(
string memory name_,
string memory symbol_,
uint8 decimals_
) {
_name = name_;
_symbol = symbol_;
_decimals = decimals_;
}
function name() public view virtual override returns (string memory) {
return _name;
}
function symbol() public view virtual override returns (string memory) {
return _symbol;
}
function decimals() public view virtual override returns (uint8) {
return _decimals;
}
function totalSupply() public view virtual override returns (uint256) {
return _totalSupply;
}
function balanceOf(address account)
public
view
virtual
override
returns (uint256)
{
return _balances[account];
}
function transfer(address recipient, uint256 amount)
public
virtual
override
returns (bool)
{
_transfer(_msgSender(), recipient, amount);
return true;
}
function allowance(address owner, address spender)
public
view
virtual
override
returns (uint256)
{
return _allowances[owner][spender];
}
function approve(address spender, uint256 amount)
public
virtual
override
returns (bool)
{
_approve(_msgSender(), spender, amount);
return true;
}
function transferFrom(
address sender,
address recipient,
uint256 amount
) public virtual override returns (bool) {
_transfer(sender, recipient, amount);
uint256 currentAllowance = _allowances[sender][_msgSender()];
require(
currentAllowance >= amount,
"ERC20: transfer amount exceeds allowance"
);
unchecked {
_approve(sender, _msgSender(), currentAllowance - amount);
}
return true;
}
function increaseAllowance(address spender, uint256 addedValue)
public
virtual
returns (bool)
{
_approve(
_msgSender(),
spender,
_allowances[_msgSender()][spender] + addedValue
);
return true;
}
function decreaseAllowance(address spender, uint256 subtractedValue)
public
virtual
returns (bool)
{
uint256 currentAllowance = _allowances[_msgSender()][spender];
require(
currentAllowance >= subtractedValue,
"ERC20: decreased allowance below zero"
);
unchecked {
_approve(_msgSender(), spender, currentAllowance - subtractedValue);
}
return true;
}
function _transfer(
address sender,
address recipient,
uint256 amount
) internal virtual {
require(sender != address(0), "ERC20: transfer from the zero address");
require(recipient != address(0), "ERC20: transfer to the zero address");
_beforeTokenTransfer(sender, recipient, amount);
uint256 senderBalance = _balances[sender];
require(
senderBalance >= amount,
"ERC20: transfer amount exceeds balance"
);
unchecked {
_balances[sender] = senderBalance - amount;
}
_balances[recipient] += amount;
emit Transfer(sender, recipient, amount);
_afterTokenTransfer(sender, recipient, amount);
}
function _mint(address account, uint256 amount) internal virtual {
require(account != address(0), "ERC20: mint to the zero address");
_beforeTokenTransfer(address(0), account, amount);
_totalSupply += amount;
_balances[account] += amount;
emit Transfer(address(0), account, amount);
_afterTokenTransfer(address(0), account, amount);
}
function _burn(address account, uint256 amount) internal virtual {
require(account != address(0), "ERC20: burn from the zero address");
_beforeTokenTransfer(account, address(0), amount);
uint256 accountBalance = _balances[account];
require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
unchecked {
_balances[account] = accountBalance - amount;
}
_totalSupply -= amount;
emit Transfer(account, address(0), amount);
_afterTokenTransfer(account, address(0), amount);
}
function _approve(
address owner,
address spender,
uint256 amount
) internal virtual {
require(owner != address(0), "ERC20: approve from the zero address");
require(spender != address(0), "ERC20: approve to the zero address");
_allowances[owner][spender] = amount;
emit Approval(owner, spender, amount);
}
function _beforeTokenTransfer(
address from,
address to,
uint256 amount
) internal virtual {}
function _afterTokenTransfer(
address from,
address to,
uint256 amount
) internal virtual {}
}
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,
uint256
);
function feeTo() external view returns (address);
function feeToSetter() external view returns (address);
function getPair(address tokenA, address tokenB)
external
view
returns (address pair);
function allPairs(uint256) external view returns (address pair);
function allPairsLength() external view returns (uint256);
function createPair(address tokenA, address tokenB)
external
returns (address pair);
function setFeeTo(address) external;
function setFeeToSetter(address) external;
}
interface IUniswapV2Pair {
event Approval(
address indexed owner,
address indexed spender,
uint256 value
);
event Transfer(address indexed from, address indexed to, uint256 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 (uint256);
function balanceOf(address owner) external view returns (uint256);
function allowance(address owner, address spender)
external
view
returns (uint256);
function approve(address spender, uint256 value) external returns (bool);
function transfer(address to, uint256 value) external returns (bool);
function transferFrom(
address from,
address to,
uint256 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 (uint256);
function permit(
address owner,
address spender,
uint256 value,
uint256 deadline,
uint8 v,
bytes32 r,
bytes32 s
) external;
event Burn(
address indexed sender,
uint256 amount0,
uint256 amount1,
address indexed to
);
event Swap(
address indexed sender,
uint256 amount0In,
uint256 amount1In,
uint256 amount0Out,
uint256 amount1Out,
address indexed to
);
event Sync(uint112 reserve0, uint112 reserve1);
function MINIMUM_LIQUIDITY() external pure returns (uint256);
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 (uint256);
function price1CumulativeLast() external view returns (uint256);
function kLast() external view returns (uint256);
function burn(address to)
external
returns (uint256 amount0, uint256 amount1);
function swap(
uint256 amount0Out,
uint256 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,
uint256 amountADesired,
uint256 amountBDesired,
uint256 amountAMin,
uint256 amountBMin,
address to,
uint256 deadline
)
external
returns (
uint256 amountA,
uint256 amountB,
uint256 liquidity
);
function addLiquidityETH(
address token,
uint256 amountTokenDesired,
uint256 amountTokenMin,
uint256 amountETHMin,
address to,
uint256 deadline
)
external
payable
returns (
uint256 amountToken,
uint256 amountETH,
uint256 liquidity
);
function removeLiquidity(
address tokenA,
address tokenB,
uint256 liquidity,
uint256 amountAMin,
uint256 amountBMin,
address to,
uint256 deadline
) external returns (uint256 amountA, uint256 amountB);
function removeLiquidityETH(
address token,
uint256 liquidity,
uint256 amountTokenMin,
uint256 amountETHMin,
address to,
uint256 deadline
) external returns (uint256 amountToken, uint256 amountETH);
function removeLiquidityWithPermit(
address tokenA,
address tokenB,
uint256 liquidity,
uint256 amountAMin,
uint256 amountBMin,
address to,
uint256 deadline,
bool approveMax,
uint8 v,
bytes32 r,
bytes32 s
) external returns (uint256 amountA, uint256 amountB);
function removeLiquidityETHWithPermit(
address token,
uint256 liquidity,
uint256 amountTokenMin,
uint256 amountETHMin,
address to,
uint256 deadline,
bool approveMax,
uint8 v,
bytes32 r,
bytes32 s
) external returns (uint256 amountToken, uint256 amountETH);
function swapExactTokensForTokens(
uint256 amountIn,
uint256 amountOutMin,
address[] calldata path,
address to,
uint256 deadline
) external returns (uint256[] memory amounts);
function swapTokensForExactTokens(
uint256 amountOut,
uint256 amountInMax,
address[] calldata path,
address to,
uint256 deadline
) external returns (uint256[] memory amounts);
function swapExactETHForTokens(
uint256 amountOutMin,
address[] calldata path,
address to,
uint256 deadline
) external payable returns (uint256[] memory amounts);
function swapTokensForExactETH(
uint256 amountOut,
uint256 amountInMax,
address[] calldata path,
address to,
uint256 deadline
) external returns (uint256[] memory amounts);
function swapExactTokensForETH(
uint256 amountIn,
uint256 amountOutMin,
address[] calldata path,
address to,
uint256 deadline
) external returns (uint256[] memory amounts);
function swapETHForExactTokens(
uint256 amountOut,
address[] calldata path,
address to,
uint256 deadline
) external payable returns (uint256[] memory amounts);
function quote(
uint256 amountA,
uint256 reserveA,
uint256 reserveB
) external pure returns (uint256 amountB);
function getAmountOut(
uint256 amountIn,
uint256 reserveIn,
uint256 reserveOut
) external pure returns (uint256 amountOut);
function getAmountIn(
uint256 amountOut,
uint256 reserveIn,
uint256 reserveOut
) external pure returns (uint256 amountIn);
function getAmountsOut(uint256 amountIn, address[] calldata path)
external
view
returns (uint256[] memory amounts);
function getAmountsIn(uint256 amountOut, address[] calldata path)
external
view
returns (uint256[] memory amounts);
}
interface IUniswapV2Router02 is IUniswapV2Router01 {
function removeLiquidityETHSupportingFeeOnTransferTokens(
address token,
uint256 liquidity,
uint256 amountTokenMin,
uint256 amountETHMin,
address to,
uint256 deadline
) external returns (uint256 amountETH);
function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
address token,
uint256 liquidity,
uint256 amountTokenMin,
uint256 amountETHMin,
address to,
uint256 deadline,
bool approveMax,
uint8 v,
bytes32 r,
bytes32 s
) external returns (uint256 amountETH);
function swapExactTokensForTokensSupportingFeeOnTransferTokens(
uint256 amountIn,
uint256 amountOutMin,
address[] calldata path,
address to,
uint256 deadline
) external;
function swapExactETHForTokensSupportingFeeOnTransferTokens(
uint256 amountOutMin,
address[] calldata path,
address to,
uint256 deadline
) external payable;
function swapExactTokensForETHSupportingFeeOnTransferTokens(
uint256 amountIn,
uint256 amountOutMin,
address[] calldata path,
address to,
uint256 deadline
) external;
}
contract FeunAI is ERC20, Ownable {
using SafeMath for uint256;
IUniswapV2Router02 public immutable uniswapV2Router;
address public immutable uniswapV2Pair;
address public router = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;
bool private swapping;
address private feunAiWallet;
uint256 public maxTransaction;
uint256 public swapTokensAtAmount;
uint256 public maxWallet;
bool public limitsInEffect = true;
bool public tradingActive = false;
bool public swapEnabled = false;
mapping(address => uint256) private _holderLastTransferBlock;
uint256 public launchBlockNo;
uint256 public buyFees;
uint256 public sellFees;
uint256 private _maxSwapableTokens;
uint256 public _preventSwapBefore = 0;
uint256 public _totalBuys = 0;
mapping(address => bool) private _isExcludedFromFees;
mapping(address => bool) public _isExcludedmaxTransaction;
mapping(address => bool) public automatedMarketMakerPairs;
constructor() ERC20("FeunAI", "FEUNAI", 8) {
IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(router);
excludeFromMaxTransaction(address(_uniswapV2Router), true);
uniswapV2Router = _uniswapV2Router;
uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
.createPair(address(this), _uniswapV2Router.WETH());
excludeFromMaxTransaction(address(uniswapV2Pair), true);
_setAutomatedMarketMakerPair(address(uniswapV2Pair), true);
uint256 totalSupply = 21_000_000 * 10**decimals();
maxTransaction = (totalSupply * 200) / 10_000; // 2.0% max transaction at launch
maxWallet = (totalSupply * 200) / 10_000; // 2.0% max wallet at launch
swapTokensAtAmount = (totalSupply * 50) / 10_000;
_maxSwapableTokens = (totalSupply * 100) / 10_000;
buyFees = 2_500;
sellFees = 2_500;
feunAiWallet = 0xd994b48A83E15d33c65e70A78786D1EB067dEdEf;
// exclude from paying fees or having max transaction amount
excludeFromFees(owner(), true);
excludeFromFees(address(this), true);
excludeFromFees(address(0xdead), true);
excludeFromMaxTransaction(owner(), true);
excludeFromMaxTransaction(address(this), true);
excludeFromMaxTransaction(address(0xdead), true);
_mint(msg.sender, totalSupply);
}
receive() external payable {}
function launch() external onlyOwner {
require(!tradingActive, "FeunAI launched");
tradingActive = true;
launchBlockNo = block.number;
swapEnabled = true;
}
function excludeFromMaxTransaction(address updAds, bool isEx)
public
onlyOwner
{
_isExcludedmaxTransaction[updAds] = isEx;
}
function excludeFromFees(address account, bool excluded) public onlyOwner {
_isExcludedFromFees[account] = excluded;
emit ExcludeFromFees(account, excluded);
}
function setAutomatedMarketMakerPair(address pair, bool value)
public
onlyOwner
{
require(
pair != uniswapV2Pair,
"The pair cannot be removed from automatedMarketMakerPairs"
);
_setAutomatedMarketMakerPair(pair, value);
}
function _setAutomatedMarketMakerPair(address pair, bool value) private {
automatedMarketMakerPairs[pair] = value;
emit SetAutomatedMarketMakerPair(pair, value);
}
function updateFeunAiWallet(address newWallet) external onlyOwner {
emit FeunAiWalletUpdated(newWallet, feunAiWallet);
feunAiWallet = newWallet;
}
function isExcludedFromFees(address account) public view returns (bool) {
return _isExcludedFromFees[account];
}
function _transfer(
address from,
address to,
uint256 amount
) internal override {
require(from != address(0), "ERC20: transfer from the zero address");
require(to != address(0), "ERC20: transfer to the zero address");
if (amount == 0) {
super._transfer(from, to, 0);
return;
}
uint256 contractTokenBalance = balanceOf(address(this));
bool canSwap = contractTokenBalance >= swapTokensAtAmount;
if (
canSwap &&
swapEnabled &&
!swapping &&
!automatedMarketMakerPairs[from] &&
!_isExcludedFromFees[from] &&
!_isExcludedFromFees[to] &&
_totalBuys > _preventSwapBefore
) {
swapping = true;
swapBack(min(contractTokenBalance, _maxSwapableTokens));
swapping = false;
}
bool takeFee = !swapping;
if (_isExcludedFromFees[from] || _isExcludedFromFees[to]) {
takeFee = false;
}
uint256 fees = 0;
if (takeFee) {
// SELL
if (automatedMarketMakerPairs[to] && sellFees > 0) {
fees = amount.mul(sellFees).div(10_000);
}
// BUY
else if (automatedMarketMakerPairs[from] && buyFees > 0) {
fees = amount.mul(buyFees).div(10_000);
_totalBuys++;
}
if (fees > 0) {
super._transfer(from, address(this), fees);
}
amount -= fees;
}
super._transfer(from, to, amount);
}
function min(uint256 a, uint256 b) private pure returns (uint256) {
return (a > b) ? b : a;
}
function swapTokensForEth(uint256 tokenAmount) private {
address[] memory path = new address[](2);
path[0] = address(this);
path[1] = uniswapV2Router.WETH();
_approve(address(this), address(uniswapV2Router), tokenAmount);
uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
tokenAmount,
0,
path,
address(this),
block.timestamp
);
}
function swapBack(uint256 amount) private {
bool success;
if (amount == 0) {
return;
}
uint256 amountToSwapForETH = amount;
swapTokensForEth(amountToSwapForETH);
uint256 ethBalance = address(this).balance;
(success, ) = address(feunAiWallet).call{value: ethBalance}("");
}
event UpdateUniswapV2Router(
address indexed newAddress,
address indexed oldAddress
);
function changeSwapTokensAtAmount(uint256 newValue)
external
onlyOwner
returns (bool)
{
require(
newValue >= (totalSupply() * 1) / 100_000,
"Swap amount < 0.001% total supply."
);
require(
newValue <= (totalSupply() * 100) / 10_000,
"Swap amount > 1% total supply."
);
swapTokensAtAmount = newValue;
return true;
}
function changeMaxTransaction(uint256 newValue) external onlyOwner {
require(
newValue >= ((totalSupply() * 10) / 10_000),
"maxTransaction < 0.1%"
);
maxTransaction = newValue * (10**decimals());
}
function changeMaxWallet(uint256 newValue) external onlyOwner {
require(
newValue >= ((totalSupply() * 50) / 10_000),
"maxWallet < 0.5%"
);
maxWallet = newValue * (10**decimals());
}
// only use to disable contract sales if absolutely necessary (emergency use only)
function updateSwapEnabled(bool _isEnable) external onlyOwner {
swapEnabled = _isEnable;
}
function updateFees(uint256 _buyFee, uint256 _sellFee) external onlyOwner {
require(_buyFee <= 5_000, "Buy fee exceeds limit");
require(_sellFee <= 5_000, "Sell fee exceeds limit");
buyFees = _buyFee;
sellFees = _sellFee;
}
event ExcludeFromFees(address indexed account, bool isExcluded);
event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);
event FeunAiWalletUpdated(
address indexed newWallet,
address indexed oldWallet
);
event SwapAndLiquify(
uint256 tokensSwapped,
uint256 ethReceived,
uint256 tokensIntoLiquidity
);
}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":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"FeunAiWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedmaxTransaction","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_preventSwapBefore","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalBuys","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"changeMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"changeMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"changeSwapTokensAtAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"launchBlockNo","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransaction","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buyFee","type":"uint256"},{"internalType":"uint256","name":"_sellFee","type":"uint256"}],"name":"updateFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateFeunAiWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_isEnable","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"waiveOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]Contract Creation Code
60c0604052737a250d5630b4cf539739df2c5dacb4c659f2488d60075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600c5f6101000a81548160ff0219169083151502179055505f600c60016101000a81548160ff0219169083151502179055505f600c60026101000a81548160ff0219169083151502179055505f6012555f6013553480156100b9575f80fd5b506040518060400160405280600681526020017f4665756e414900000000000000000000000000000000000000000000000000008152506040518060400160405280600681526020017f4645554e41490000000000000000000000000000000000000000000000000000815250600882600390816101379190610c97565b5081600490816101479190610c97565b508060055f6101000a81548160ff021916908360ff1602179055505050505f6101746105d560201b60201c565b905080600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3505f60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506102488160016105dc60201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156102c5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102e99190610dc4565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561034e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103729190610dc4565b6040518363ffffffff1660e01b815260040161038f929190610dfe565b6020604051808303815f875af11580156103ab573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103cf9190610dc4565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff168152505061041560a05160016105dc60201b60201c565b61042860a05160016106d160201b60201c565b5f61043761076f60201b60201c565b600a6104439190610f8d565b6301406f406104529190610fd7565b905061271060c8826104649190610fd7565b61046e9190611045565b60098190555061271060c8826104849190610fd7565b61048e9190611045565b600b819055506127106032826104a49190610fd7565b6104ae9190611045565b600a819055506127106064826104c49190610fd7565b6104ce9190611045565b6011819055506109c4600f819055506109c460108190555073d994b48a83e15d33c65e70a78786d1eb067dedef60085f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061055861054b61078460201b60201c565b60016107ad60201b60201c565b6105693060016107ad60201b60201c565b61057c61dead60016107ad60201b60201c565b61059a61058d61078460201b60201c565b60016105dc60201b60201c565b6105ab3060016105dc60201b60201c565b6105be61dead60016105dc60201b60201c565b6105ce33826108f060201b60201c565b50506111e3565b5f33905090565b6105ea6105d560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610679576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610670906110cf565b60405180910390fd5b8060155f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b8060165f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b5f60055f9054906101000a900460ff16905090565b5f600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6107bb6105d560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461084a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610841906110cf565b60405180910390fd5b8060145f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516108e49190611107565b60405180910390a25050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361095e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109559061116a565b60405180910390fd5b61096f5f8383610a5360201b60201c565b8060025f8282546109809190611188565b92505081905550805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546109d29190611188565b925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610a3691906111ca565b60405180910390a3610a4f5f8383610a5860201b60201c565b5050565b505050565b505050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680610ad857607f821691505b602082108103610aeb57610aea610a94565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302610b4d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82610b12565b610b578683610b12565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f610b9b610b96610b9184610b6f565b610b78565b610b6f565b9050919050565b5f819050919050565b610bb483610b81565b610bc8610bc082610ba2565b848454610b1e565b825550505050565b5f90565b610bdc610bd0565b610be7818484610bab565b505050565b5b81811015610c0a57610bff5f82610bd4565b600181019050610bed565b5050565b601f821115610c4f57610c2081610af1565b610c2984610b03565b81016020851015610c38578190505b610c4c610c4485610b03565b830182610bec565b50505b505050565b5f82821c905092915050565b5f610c6f5f1984600802610c54565b1980831691505092915050565b5f610c878383610c60565b9150826002028217905092915050565b610ca082610a5d565b67ffffffffffffffff811115610cb957610cb8610a67565b5b610cc38254610ac1565b610cce828285610c0e565b5f60209050601f831160018114610cff575f8415610ced578287015190505b610cf78582610c7c565b865550610d5e565b601f198416610d0d86610af1565b5f5b82811015610d3457848901518255600182019150602085019450602081019050610d0f565b86831015610d515784890151610d4d601f891682610c60565b8355505b6001600288020188555050505b505050505050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610d9382610d6a565b9050919050565b610da381610d89565b8114610dad575f80fd5b50565b5f81519050610dbe81610d9a565b92915050565b5f60208284031215610dd957610dd8610d66565b5b5f610de684828501610db0565b91505092915050565b610df881610d89565b82525050565b5f604082019050610e115f830185610def565b610e1e6020830184610def565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115610ea757808604811115610e8357610e82610e25565b5b6001851615610e925780820291505b8081029050610ea085610e52565b9450610e67565b94509492505050565b5f82610ebf5760019050610f7a565b81610ecc575f9050610f7a565b8160018114610ee25760028114610eec57610f1b565b6001915050610f7a565b60ff841115610efe57610efd610e25565b5b8360020a915084821115610f1557610f14610e25565b5b50610f7a565b5060208310610133831016604e8410600b8410161715610f505782820a905083811115610f4b57610f4a610e25565b5b610f7a565b610f5d8484846001610e5e565b92509050818404811115610f7457610f73610e25565b5b81810290505b9392505050565b5f60ff82169050919050565b5f610f9782610b6f565b9150610fa283610f81565b9250610fcf7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484610eb0565b905092915050565b5f610fe182610b6f565b9150610fec83610b6f565b9250828202610ffa81610b6f565b9150828204841483151761101157611010610e25565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61104f82610b6f565b915061105a83610b6f565b92508261106a57611069611018565b5b828204905092915050565b5f82825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6110b9602083611075565b91506110c482611085565b602082019050919050565b5f6020820190508181035f8301526110e6816110ad565b9050919050565b5f8115159050919050565b611101816110ed565b82525050565b5f60208201905061111a5f8301846110f8565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f611154601f83611075565b915061115f82611120565b602082019050919050565b5f6020820190508181035f83015261118181611148565b9050919050565b5f61119282610b6f565b915061119d83610b6f565b92508282019050808211156111b5576111b4610e25565b5b92915050565b6111c481610b6f565b82525050565b5f6020820190506111dd5f8301846111bb565b92915050565b60805160a051613eff6112205f395f8181611130015261179801525f8181610f5501528181612a3101528181612b100152612b370152613eff5ff3fe608060405260043610610249575f3560e01c80638da5cb5b11610138578063c3f70b52116100b5578063e1bc339411610079578063e1bc33941461088e578063e2f45605146108ca578063e4748b9e146108f4578063f2fde38b1461091e578063f887ea4014610946578063f8b45b051461097057610250565b8063c3f70b52146107ac578063c81d9246146107d6578063cd73ab0214610800578063dd62ed3e14610828578063e0f3ccf51461086457610250565b8063a457c2d7116100fc578063a457c2d7146106a6578063a9059cbb146106e2578063b62496f51461071e578063bbc0c7421461075a578063c02466681461078457610250565b80638da5cb5b146105ec578063914eb66a14610616578063924de9b71461062c57806395d89b41146106545780639a7a23d61461067e57610250565b806339509351116101c65780636db794371161018a5780636db794371461050c5780636ddd17131461053457806370a082311461055e57806373a942921461059a5780637571336a146105c457610250565b8063395093511461041657806349bd5a5e146104525780634a62bb651461047c5780634fbee193146104a657806363ee4d1c146104e257610250565b8063150e31f01161020d578063150e31f0146103345780631694505e1461035c57806318160ddd1461038657806323b872dd146103b0578063313ce567146103ec57610250565b806301339c211461025457806306fdde031461026a578063095ea7b31461029457806309d6bf0a146102d05780630b006d601461030c57610250565b3661025057005b5f80fd5b34801561025f575f80fd5b5061026861099a565b005b348015610275575f80fd5b5061027e610ac0565b60405161028b9190612c98565b60405180910390f35b34801561029f575f80fd5b506102ba60048036038101906102b59190612d49565b610b50565b6040516102c79190612da1565b60405180910390f35b3480156102db575f80fd5b506102f660048036038101906102f19190612dba565b610b6d565b6040516103039190612da1565b60405180910390f35b348015610317575f80fd5b50610332600480360381019061032d9190612dba565b610cdc565b005b34801561033f575f80fd5b5061035a60048036038101906103559190612de5565b610dfe565b005b348015610367575f80fd5b50610370610f53565b60405161037d9190612e6b565b60405180910390f35b348015610391575f80fd5b5061039a610f77565b6040516103a79190612e93565b60405180910390f35b3480156103bb575f80fd5b506103d660048036038101906103d19190612eac565b610f80565b6040516103e39190612da1565b60405180910390f35b3480156103f7575f80fd5b50610400611072565b60405161040d9190612f17565b60405180910390f35b348015610421575f80fd5b5061043c60048036038101906104379190612d49565b611087565b6040516104499190612da1565b60405180910390f35b34801561045d575f80fd5b5061046661112e565b6040516104739190612f3f565b60405180910390f35b348015610487575f80fd5b50610490611152565b60405161049d9190612da1565b60405180910390f35b3480156104b1575f80fd5b506104cc60048036038101906104c79190612de5565b611164565b6040516104d99190612da1565b60405180910390f35b3480156104ed575f80fd5b506104f66111b6565b6040516105039190612e93565b60405180910390f35b348015610517575f80fd5b50610532600480360381019061052d9190612f58565b6111bc565b005b34801561053f575f80fd5b506105486112ef565b6040516105559190612da1565b60405180910390f35b348015610569575f80fd5b50610584600480360381019061057f9190612de5565b611302565b6040516105919190612e93565b60405180910390f35b3480156105a5575f80fd5b506105ae611347565b6040516105bb9190612e93565b60405180910390f35b3480156105cf575f80fd5b506105ea60048036038101906105e59190612fc0565b61134d565b005b3480156105f7575f80fd5b5061060061143c565b60405161060d9190612f3f565b60405180910390f35b348015610621575f80fd5b5061062a611465565b005b348015610637575f80fd5b50610652600480360381019061064d9190612ffe565b6115bb565b005b34801561065f575f80fd5b5061066861166f565b6040516106759190612c98565b60405180910390f35b348015610689575f80fd5b506106a4600480360381019061069f9190612fc0565b6116ff565b005b3480156106b1575f80fd5b506106cc60048036038101906106c79190612d49565b611832565b6040516106d99190612da1565b60405180910390f35b3480156106ed575f80fd5b5061070860048036038101906107039190612d49565b611918565b6040516107159190612da1565b60405180910390f35b348015610729575f80fd5b50610744600480360381019061073f9190612de5565b611935565b6040516107519190612da1565b60405180910390f35b348015610765575f80fd5b5061076e611952565b60405161077b9190612da1565b60405180910390f35b34801561078f575f80fd5b506107aa60048036038101906107a59190612fc0565b611965565b005b3480156107b7575f80fd5b506107c0611aa2565b6040516107cd9190612e93565b60405180910390f35b3480156107e1575f80fd5b506107ea611aa8565b6040516107f79190612e93565b60405180910390f35b34801561080b575f80fd5b5061082660048036038101906108219190612dba565b611aae565b005b348015610833575f80fd5b5061084e60048036038101906108499190613029565b611bd0565b60405161085b9190612e93565b60405180910390f35b34801561086f575f80fd5b50610878611c52565b6040516108859190612e93565b60405180910390f35b348015610899575f80fd5b506108b460048036038101906108af9190612de5565b611c58565b6040516108c19190612da1565b60405180910390f35b3480156108d5575f80fd5b506108de611c75565b6040516108eb9190612e93565b60405180910390f35b3480156108ff575f80fd5b50610908611c7b565b6040516109159190612e93565b60405180910390f35b348015610929575f80fd5b50610944600480360381019061093f9190612de5565b611c81565b005b348015610951575f80fd5b5061095a611e46565b6040516109679190612f3f565b60405180910390f35b34801561097b575f80fd5b50610984611e6b565b6040516109919190612e93565b60405180910390f35b6109a2611e71565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a28906130b1565b60405180910390fd5b600c60019054906101000a900460ff1615610a81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a7890613119565b60405180910390fd5b6001600c60016101000a81548160ff02191690831515021790555043600e819055506001600c60026101000a81548160ff021916908315150217905550565b606060038054610acf90613164565b80601f0160208091040260200160405190810160405280929190818152602001828054610afb90613164565b8015610b465780601f10610b1d57610100808354040283529160200191610b46565b820191905f5260205f20905b815481529060010190602001808311610b2957829003601f168201915b5050505050905090565b5f610b63610b5c611e71565b8484611e78565b6001905092915050565b5f610b76611e71565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c05576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bfc906130b1565b60405180910390fd5b620186a06001610c13610f77565b610c1d91906131c1565b610c27919061322f565b821015610c69576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c60906132cf565b60405180910390fd5b6127106064610c76610f77565b610c8091906131c1565b610c8a919061322f565b821115610ccc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cc390613337565b60405180910390fd5b81600a8190555060019050919050565b610ce4611e71565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d6a906130b1565b60405180910390fd5b6127106032610d80610f77565b610d8a91906131c1565b610d94919061322f565b811015610dd6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dcd9061339f565b60405180910390fd5b610dde611072565b600a610dea91906134ec565b81610df591906131c1565b600b8190555050565b610e06611e71565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8c906130b1565b60405180910390fd5b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f79cf35082eebbd4ba188939faabff854270bc7e19e3a42b2125005d8f5ba495460405160405180910390a38060085f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b7f000000000000000000000000000000000000000000000000000000000000000081565b5f600254905090565b5f610f8c84848461203b565b5f60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610fd3611e71565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015611052576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611049906135a6565b60405180910390fd5b6110668561105e611e71565b858403611e78565b60019150509392505050565b5f60055f9054906101000a900460ff16905090565b5f611124611093611e71565b848460015f6110a0611e71565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461111f91906135c4565b611e78565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600c5f9054906101000a900460ff1681565b5f60145f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b600e5481565b6111c4611e71565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611253576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124a906130b1565b60405180910390fd5b611388821115611298576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128f90613641565b60405180910390fd5b6113888111156112dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112d4906136a9565b60405180910390fd5b81600f81905550806010819055505050565b600c60029054906101000a900460ff1681565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b60135481565b611355611e71565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113db906130b1565b60405180910390fd5b8060155f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61146d611e71565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114f3906130b1565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6115c3611e71565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611652576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611649906130b1565b60405180910390fd5b80600c60026101000a81548160ff02191690831515021790555050565b60606004805461167e90613164565b80601f01602080910402602001604051908101604052809291908181526020018280546116aa90613164565b80156116f55780601f106116cc576101008083540402835291602001916116f5565b820191905f5260205f20905b8154815290600101906020018083116116d857829003601f168201915b5050505050905090565b611707611e71565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611796576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178d906130b1565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611824576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161181b90613737565b60405180910390fd5b61182e82826124ef565b5050565b5f8060015f61183f611e71565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050828110156118f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118f0906137c5565b60405180910390fd5b61190d611904611e71565b85858403611e78565b600191505092915050565b5f61192b611924611e71565b848461203b565b6001905092915050565b6016602052805f5260405f205f915054906101000a900460ff1681565b600c60019054906101000a900460ff1681565b61196d611e71565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119f3906130b1565b60405180910390fd5b8060145f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611a969190612da1565b60405180910390a25050565b60095481565b60125481565b611ab6611e71565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3c906130b1565b60405180910390fd5b612710600a611b52610f77565b611b5c91906131c1565b611b66919061322f565b811015611ba8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9f9061382d565b60405180910390fd5b611bb0611072565b600a611bbc91906134ec565b81611bc791906131c1565b60098190555050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60105481565b6015602052805f5260405f205f915054906101000a900460ff1681565b600a5481565b600f5481565b611c89611e71565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d18576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d0f906130b1565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611d86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d7d906138bb565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b5481565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611ee6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611edd90613949565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611f54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f4b906139d7565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161202e9190612e93565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036120a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120a090613a65565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612117576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161210e90613af3565b60405180910390fd5b5f810361212e5761212983835f61258d565b6124ea565b5f61213830611302565b90505f600a54821015905080801561215c5750600c60029054906101000a900460ff165b80156121755750600760149054906101000a900460ff16155b80156121c8575060165f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b801561221b575060145f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b801561226e575060145f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b801561227d5750601254601354115b156122cc576001600760146101000a81548160ff0219169083151502179055506122b16122ac83601154612802565b61281a565b5f600760146101000a81548160ff0219169083151502179055505b5f600760149054906101000a900460ff1615905060145f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168061237b575060145f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15612384575f90505b5f81156124da5760165f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156123e257505f601054115b1561241757612410612710612402601054886128ca90919063ffffffff16565b61294190919063ffffffff16565b90506124b7565b60165f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561246e57505f600f54115b156124b65761249c61271061248e600f54886128ca90919063ffffffff16565b61294190919063ffffffff16565b905060135f8154809291906124b090613b11565b91905055505b5b5f8111156124cb576124ca87308361258d565b5b80856124d79190613b58565b94505b6124e587878761258d565b505050505b505050565b8060165f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036125fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125f290613a65565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612669576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161266090613af3565b60405180910390fd5b61267483838361298a565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050818110156126f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126ee90613bfb565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461278591906135c4565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516127e99190612e93565b60405180910390a36127fc84848461298f565b50505050565b5f8183116128105782612812565b815b905092915050565b5f80820361282857506128c7565b5f82905061283581612994565b5f47905060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168160405161287e90613c46565b5f6040518083038185875af1925050503d805f81146128b8576040519150601f19603f3d011682016040523d82523d5f602084013e6128bd565b606091505b5050809350505050505b50565b5f8083036128da575f905061293b565b5f82846128e791906131c1565b90508284826128f6919061322f565b14612936576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161292d90613cca565b60405180910390fd5b809150505b92915050565b5f61298283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612bc7565b905092915050565b505050565b505050565b5f600267ffffffffffffffff8111156129b0576129af613ce8565b5b6040519080825280602002602001820160405280156129de5781602001602082028036833780820191505090505b50905030815f815181106129f5576129f4613d15565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a98573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612abc9190613d56565b81600181518110612ad057612acf613d15565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612b35307f000000000000000000000000000000000000000000000000000000000000000084611e78565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401612b96959493929190613e71565b5f604051808303815f87803b158015612bad575f80fd5b505af1158015612bbf573d5f803e3d5ffd5b505050505050565b5f8083118290612c0d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c049190612c98565b60405180910390fd5b505f8385612c1b919061322f565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f612c6a82612c28565b612c748185612c32565b9350612c84818560208601612c42565b612c8d81612c50565b840191505092915050565b5f6020820190508181035f830152612cb08184612c60565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612ce582612cbc565b9050919050565b612cf581612cdb565b8114612cff575f80fd5b50565b5f81359050612d1081612cec565b92915050565b5f819050919050565b612d2881612d16565b8114612d32575f80fd5b50565b5f81359050612d4381612d1f565b92915050565b5f8060408385031215612d5f57612d5e612cb8565b5b5f612d6c85828601612d02565b9250506020612d7d85828601612d35565b9150509250929050565b5f8115159050919050565b612d9b81612d87565b82525050565b5f602082019050612db45f830184612d92565b92915050565b5f60208284031215612dcf57612dce612cb8565b5b5f612ddc84828501612d35565b91505092915050565b5f60208284031215612dfa57612df9612cb8565b5b5f612e0784828501612d02565b91505092915050565b5f819050919050565b5f612e33612e2e612e2984612cbc565b612e10565b612cbc565b9050919050565b5f612e4482612e19565b9050919050565b5f612e5582612e3a565b9050919050565b612e6581612e4b565b82525050565b5f602082019050612e7e5f830184612e5c565b92915050565b612e8d81612d16565b82525050565b5f602082019050612ea65f830184612e84565b92915050565b5f805f60608486031215612ec357612ec2612cb8565b5b5f612ed086828701612d02565b9350506020612ee186828701612d02565b9250506040612ef286828701612d35565b9150509250925092565b5f60ff82169050919050565b612f1181612efc565b82525050565b5f602082019050612f2a5f830184612f08565b92915050565b612f3981612cdb565b82525050565b5f602082019050612f525f830184612f30565b92915050565b5f8060408385031215612f6e57612f6d612cb8565b5b5f612f7b85828601612d35565b9250506020612f8c85828601612d35565b9150509250929050565b612f9f81612d87565b8114612fa9575f80fd5b50565b5f81359050612fba81612f96565b92915050565b5f8060408385031215612fd657612fd5612cb8565b5b5f612fe385828601612d02565b9250506020612ff485828601612fac565b9150509250929050565b5f6020828403121561301357613012612cb8565b5b5f61302084828501612fac565b91505092915050565b5f806040838503121561303f5761303e612cb8565b5b5f61304c85828601612d02565b925050602061305d85828601612d02565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f61309b602083612c32565b91506130a682613067565b602082019050919050565b5f6020820190508181035f8301526130c88161308f565b9050919050565b7f4665756e4149206c61756e6368656400000000000000000000000000000000005f82015250565b5f613103600f83612c32565b915061310e826130cf565b602082019050919050565b5f6020820190508181035f830152613130816130f7565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061317b57607f821691505b60208210810361318e5761318d613137565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6131cb82612d16565b91506131d683612d16565b92508282026131e481612d16565b915082820484148315176131fb576131fa613194565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61323982612d16565b915061324483612d16565b92508261325457613253613202565b5b828204905092915050565b7f5377617020616d6f756e74203c20302e3030312520746f74616c20737570706c5f8201527f792e000000000000000000000000000000000000000000000000000000000000602082015250565b5f6132b9602283612c32565b91506132c48261325f565b604082019050919050565b5f6020820190508181035f8301526132e6816132ad565b9050919050565b7f5377617020616d6f756e74203e20312520746f74616c20737570706c792e00005f82015250565b5f613321601e83612c32565b915061332c826132ed565b602082019050919050565b5f6020820190508181035f83015261334e81613315565b9050919050565b7f6d617857616c6c6574203c20302e3525000000000000000000000000000000005f82015250565b5f613389601083612c32565b915061339482613355565b602082019050919050565b5f6020820190508181035f8301526133b68161337d565b9050919050565b5f8160011c9050919050565b5f808291508390505b6001851115613412578086048111156133ee576133ed613194565b5b60018516156133fd5780820291505b808102905061340b856133bd565b94506133d2565b94509492505050565b5f8261342a57600190506134e5565b81613437575f90506134e5565b816001811461344d576002811461345757613486565b60019150506134e5565b60ff84111561346957613468613194565b5b8360020a9150848211156134805761347f613194565b5b506134e5565b5060208310610133831016604e8410600b84101617156134bb5782820a9050838111156134b6576134b5613194565b5b6134e5565b6134c884848460016133c9565b925090508184048111156134df576134de613194565b5b81810290505b9392505050565b5f6134f682612d16565b915061350183612efc565b925061352e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848461341b565b905092915050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f613590602883612c32565b915061359b82613536565b604082019050919050565b5f6020820190508181035f8301526135bd81613584565b9050919050565b5f6135ce82612d16565b91506135d983612d16565b92508282019050808211156135f1576135f0613194565b5b92915050565b7f427579206665652065786365656473206c696d697400000000000000000000005f82015250565b5f61362b601583612c32565b9150613636826135f7565b602082019050919050565b5f6020820190508181035f8301526136588161361f565b9050919050565b7f53656c6c206665652065786365656473206c696d6974000000000000000000005f82015250565b5f613693601683612c32565b915061369e8261365f565b602082019050919050565b5f6020820190508181035f8301526136c081613687565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d205f8201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b5f613721603983612c32565b915061372c826136c7565b604082019050919050565b5f6020820190508181035f83015261374e81613715565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f6137af602583612c32565b91506137ba82613755565b604082019050919050565b5f6020820190508181035f8301526137dc816137a3565b9050919050565b7f6d61785472616e73616374696f6e203c20302e312500000000000000000000005f82015250565b5f613817601583612c32565b9150613822826137e3565b602082019050919050565b5f6020820190508181035f8301526138448161380b565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f6138a5602683612c32565b91506138b08261384b565b604082019050919050565b5f6020820190508181035f8301526138d281613899565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f613933602483612c32565b915061393e826138d9565b604082019050919050565b5f6020820190508181035f83015261396081613927565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6139c1602283612c32565b91506139cc82613967565b604082019050919050565b5f6020820190508181035f8301526139ee816139b5565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f613a4f602583612c32565b9150613a5a826139f5565b604082019050919050565b5f6020820190508181035f830152613a7c81613a43565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f613add602383612c32565b9150613ae882613a83565b604082019050919050565b5f6020820190508181035f830152613b0a81613ad1565b9050919050565b5f613b1b82612d16565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613b4d57613b4c613194565b5b600182019050919050565b5f613b6282612d16565b9150613b6d83612d16565b9250828203905081811115613b8557613b84613194565b5b92915050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f613be5602683612c32565b9150613bf082613b8b565b604082019050919050565b5f6020820190508181035f830152613c1281613bd9565b9050919050565b5f81905092915050565b50565b5f613c315f83613c19565b9150613c3c82613c23565b5f82019050919050565b5f613c5082613c26565b9150819050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f613cb4602183612c32565b9150613cbf82613c5a565b604082019050919050565b5f6020820190508181035f830152613ce181613ca8565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050613d5081612cec565b92915050565b5f60208284031215613d6b57613d6a612cb8565b5b5f613d7884828501613d42565b91505092915050565b5f819050919050565b5f613da4613d9f613d9a84613d81565b612e10565b612d16565b9050919050565b613db481613d8a565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613dec81612cdb565b82525050565b5f613dfd8383613de3565b60208301905092915050565b5f602082019050919050565b5f613e1f82613dba565b613e298185613dc4565b9350613e3483613dd4565b805f5b83811015613e64578151613e4b8882613df2565b9750613e5683613e09565b925050600181019050613e37565b5085935050505092915050565b5f60a082019050613e845f830188612e84565b613e916020830187613dab565b8181036040830152613ea38186613e15565b9050613eb26060830185612f30565b613ebf6080830184612e84565b969550505050505056fea2646970667358221220649ca6ba7562fabcafa2005254a5740d151deda11277fd4098f17afd7463b0c364736f6c63430008190033
Deployed Bytecode
0x608060405260043610610249575f3560e01c80638da5cb5b11610138578063c3f70b52116100b5578063e1bc339411610079578063e1bc33941461088e578063e2f45605146108ca578063e4748b9e146108f4578063f2fde38b1461091e578063f887ea4014610946578063f8b45b051461097057610250565b8063c3f70b52146107ac578063c81d9246146107d6578063cd73ab0214610800578063dd62ed3e14610828578063e0f3ccf51461086457610250565b8063a457c2d7116100fc578063a457c2d7146106a6578063a9059cbb146106e2578063b62496f51461071e578063bbc0c7421461075a578063c02466681461078457610250565b80638da5cb5b146105ec578063914eb66a14610616578063924de9b71461062c57806395d89b41146106545780639a7a23d61461067e57610250565b806339509351116101c65780636db794371161018a5780636db794371461050c5780636ddd17131461053457806370a082311461055e57806373a942921461059a5780637571336a146105c457610250565b8063395093511461041657806349bd5a5e146104525780634a62bb651461047c5780634fbee193146104a657806363ee4d1c146104e257610250565b8063150e31f01161020d578063150e31f0146103345780631694505e1461035c57806318160ddd1461038657806323b872dd146103b0578063313ce567146103ec57610250565b806301339c211461025457806306fdde031461026a578063095ea7b31461029457806309d6bf0a146102d05780630b006d601461030c57610250565b3661025057005b5f80fd5b34801561025f575f80fd5b5061026861099a565b005b348015610275575f80fd5b5061027e610ac0565b60405161028b9190612c98565b60405180910390f35b34801561029f575f80fd5b506102ba60048036038101906102b59190612d49565b610b50565b6040516102c79190612da1565b60405180910390f35b3480156102db575f80fd5b506102f660048036038101906102f19190612dba565b610b6d565b6040516103039190612da1565b60405180910390f35b348015610317575f80fd5b50610332600480360381019061032d9190612dba565b610cdc565b005b34801561033f575f80fd5b5061035a60048036038101906103559190612de5565b610dfe565b005b348015610367575f80fd5b50610370610f53565b60405161037d9190612e6b565b60405180910390f35b348015610391575f80fd5b5061039a610f77565b6040516103a79190612e93565b60405180910390f35b3480156103bb575f80fd5b506103d660048036038101906103d19190612eac565b610f80565b6040516103e39190612da1565b60405180910390f35b3480156103f7575f80fd5b50610400611072565b60405161040d9190612f17565b60405180910390f35b348015610421575f80fd5b5061043c60048036038101906104379190612d49565b611087565b6040516104499190612da1565b60405180910390f35b34801561045d575f80fd5b5061046661112e565b6040516104739190612f3f565b60405180910390f35b348015610487575f80fd5b50610490611152565b60405161049d9190612da1565b60405180910390f35b3480156104b1575f80fd5b506104cc60048036038101906104c79190612de5565b611164565b6040516104d99190612da1565b60405180910390f35b3480156104ed575f80fd5b506104f66111b6565b6040516105039190612e93565b60405180910390f35b348015610517575f80fd5b50610532600480360381019061052d9190612f58565b6111bc565b005b34801561053f575f80fd5b506105486112ef565b6040516105559190612da1565b60405180910390f35b348015610569575f80fd5b50610584600480360381019061057f9190612de5565b611302565b6040516105919190612e93565b60405180910390f35b3480156105a5575f80fd5b506105ae611347565b6040516105bb9190612e93565b60405180910390f35b3480156105cf575f80fd5b506105ea60048036038101906105e59190612fc0565b61134d565b005b3480156105f7575f80fd5b5061060061143c565b60405161060d9190612f3f565b60405180910390f35b348015610621575f80fd5b5061062a611465565b005b348015610637575f80fd5b50610652600480360381019061064d9190612ffe565b6115bb565b005b34801561065f575f80fd5b5061066861166f565b6040516106759190612c98565b60405180910390f35b348015610689575f80fd5b506106a4600480360381019061069f9190612fc0565b6116ff565b005b3480156106b1575f80fd5b506106cc60048036038101906106c79190612d49565b611832565b6040516106d99190612da1565b60405180910390f35b3480156106ed575f80fd5b5061070860048036038101906107039190612d49565b611918565b6040516107159190612da1565b60405180910390f35b348015610729575f80fd5b50610744600480360381019061073f9190612de5565b611935565b6040516107519190612da1565b60405180910390f35b348015610765575f80fd5b5061076e611952565b60405161077b9190612da1565b60405180910390f35b34801561078f575f80fd5b506107aa60048036038101906107a59190612fc0565b611965565b005b3480156107b7575f80fd5b506107c0611aa2565b6040516107cd9190612e93565b60405180910390f35b3480156107e1575f80fd5b506107ea611aa8565b6040516107f79190612e93565b60405180910390f35b34801561080b575f80fd5b5061082660048036038101906108219190612dba565b611aae565b005b348015610833575f80fd5b5061084e60048036038101906108499190613029565b611bd0565b60405161085b9190612e93565b60405180910390f35b34801561086f575f80fd5b50610878611c52565b6040516108859190612e93565b60405180910390f35b348015610899575f80fd5b506108b460048036038101906108af9190612de5565b611c58565b6040516108c19190612da1565b60405180910390f35b3480156108d5575f80fd5b506108de611c75565b6040516108eb9190612e93565b60405180910390f35b3480156108ff575f80fd5b50610908611c7b565b6040516109159190612e93565b60405180910390f35b348015610929575f80fd5b50610944600480360381019061093f9190612de5565b611c81565b005b348015610951575f80fd5b5061095a611e46565b6040516109679190612f3f565b60405180910390f35b34801561097b575f80fd5b50610984611e6b565b6040516109919190612e93565b60405180910390f35b6109a2611e71565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a28906130b1565b60405180910390fd5b600c60019054906101000a900460ff1615610a81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a7890613119565b60405180910390fd5b6001600c60016101000a81548160ff02191690831515021790555043600e819055506001600c60026101000a81548160ff021916908315150217905550565b606060038054610acf90613164565b80601f0160208091040260200160405190810160405280929190818152602001828054610afb90613164565b8015610b465780601f10610b1d57610100808354040283529160200191610b46565b820191905f5260205f20905b815481529060010190602001808311610b2957829003601f168201915b5050505050905090565b5f610b63610b5c611e71565b8484611e78565b6001905092915050565b5f610b76611e71565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c05576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bfc906130b1565b60405180910390fd5b620186a06001610c13610f77565b610c1d91906131c1565b610c27919061322f565b821015610c69576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c60906132cf565b60405180910390fd5b6127106064610c76610f77565b610c8091906131c1565b610c8a919061322f565b821115610ccc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cc390613337565b60405180910390fd5b81600a8190555060019050919050565b610ce4611e71565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d6a906130b1565b60405180910390fd5b6127106032610d80610f77565b610d8a91906131c1565b610d94919061322f565b811015610dd6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dcd9061339f565b60405180910390fd5b610dde611072565b600a610dea91906134ec565b81610df591906131c1565b600b8190555050565b610e06611e71565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8c906130b1565b60405180910390fd5b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f79cf35082eebbd4ba188939faabff854270bc7e19e3a42b2125005d8f5ba495460405160405180910390a38060085f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b5f600254905090565b5f610f8c84848461203b565b5f60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610fd3611e71565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015611052576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611049906135a6565b60405180910390fd5b6110668561105e611e71565b858403611e78565b60019150509392505050565b5f60055f9054906101000a900460ff16905090565b5f611124611093611e71565b848460015f6110a0611e71565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461111f91906135c4565b611e78565b6001905092915050565b7f000000000000000000000000f203c6d108210d8b4c1335ab4ec981d1b0f59d8d81565b600c5f9054906101000a900460ff1681565b5f60145f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b600e5481565b6111c4611e71565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611253576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124a906130b1565b60405180910390fd5b611388821115611298576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128f90613641565b60405180910390fd5b6113888111156112dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112d4906136a9565b60405180910390fd5b81600f81905550806010819055505050565b600c60029054906101000a900460ff1681565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b60135481565b611355611e71565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113db906130b1565b60405180910390fd5b8060155f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61146d611e71565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114f3906130b1565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6115c3611e71565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611652576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611649906130b1565b60405180910390fd5b80600c60026101000a81548160ff02191690831515021790555050565b60606004805461167e90613164565b80601f01602080910402602001604051908101604052809291908181526020018280546116aa90613164565b80156116f55780601f106116cc576101008083540402835291602001916116f5565b820191905f5260205f20905b8154815290600101906020018083116116d857829003601f168201915b5050505050905090565b611707611e71565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611796576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178d906130b1565b60405180910390fd5b7f000000000000000000000000f203c6d108210d8b4c1335ab4ec981d1b0f59d8d73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611824576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161181b90613737565b60405180910390fd5b61182e82826124ef565b5050565b5f8060015f61183f611e71565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050828110156118f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118f0906137c5565b60405180910390fd5b61190d611904611e71565b85858403611e78565b600191505092915050565b5f61192b611924611e71565b848461203b565b6001905092915050565b6016602052805f5260405f205f915054906101000a900460ff1681565b600c60019054906101000a900460ff1681565b61196d611e71565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119f3906130b1565b60405180910390fd5b8060145f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611a969190612da1565b60405180910390a25050565b60095481565b60125481565b611ab6611e71565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3c906130b1565b60405180910390fd5b612710600a611b52610f77565b611b5c91906131c1565b611b66919061322f565b811015611ba8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9f9061382d565b60405180910390fd5b611bb0611072565b600a611bbc91906134ec565b81611bc791906131c1565b60098190555050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60105481565b6015602052805f5260405f205f915054906101000a900460ff1681565b600a5481565b600f5481565b611c89611e71565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d18576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d0f906130b1565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611d86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d7d906138bb565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b5481565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611ee6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611edd90613949565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611f54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f4b906139d7565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161202e9190612e93565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036120a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120a090613a65565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612117576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161210e90613af3565b60405180910390fd5b5f810361212e5761212983835f61258d565b6124ea565b5f61213830611302565b90505f600a54821015905080801561215c5750600c60029054906101000a900460ff165b80156121755750600760149054906101000a900460ff16155b80156121c8575060165f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b801561221b575060145f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b801561226e575060145f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b801561227d5750601254601354115b156122cc576001600760146101000a81548160ff0219169083151502179055506122b16122ac83601154612802565b61281a565b5f600760146101000a81548160ff0219169083151502179055505b5f600760149054906101000a900460ff1615905060145f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168061237b575060145f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15612384575f90505b5f81156124da5760165f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156123e257505f601054115b1561241757612410612710612402601054886128ca90919063ffffffff16565b61294190919063ffffffff16565b90506124b7565b60165f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561246e57505f600f54115b156124b65761249c61271061248e600f54886128ca90919063ffffffff16565b61294190919063ffffffff16565b905060135f8154809291906124b090613b11565b91905055505b5b5f8111156124cb576124ca87308361258d565b5b80856124d79190613b58565b94505b6124e587878761258d565b505050505b505050565b8060165f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036125fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125f290613a65565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612669576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161266090613af3565b60405180910390fd5b61267483838361298a565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050818110156126f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126ee90613bfb565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461278591906135c4565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516127e99190612e93565b60405180910390a36127fc84848461298f565b50505050565b5f8183116128105782612812565b815b905092915050565b5f80820361282857506128c7565b5f82905061283581612994565b5f47905060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168160405161287e90613c46565b5f6040518083038185875af1925050503d805f81146128b8576040519150601f19603f3d011682016040523d82523d5f602084013e6128bd565b606091505b5050809350505050505b50565b5f8083036128da575f905061293b565b5f82846128e791906131c1565b90508284826128f6919061322f565b14612936576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161292d90613cca565b60405180910390fd5b809150505b92915050565b5f61298283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612bc7565b905092915050565b505050565b505050565b5f600267ffffffffffffffff8111156129b0576129af613ce8565b5b6040519080825280602002602001820160405280156129de5781602001602082028036833780820191505090505b50905030815f815181106129f5576129f4613d15565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a98573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612abc9190613d56565b81600181518110612ad057612acf613d15565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612b35307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611e78565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401612b96959493929190613e71565b5f604051808303815f87803b158015612bad575f80fd5b505af1158015612bbf573d5f803e3d5ffd5b505050505050565b5f8083118290612c0d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c049190612c98565b60405180910390fd5b505f8385612c1b919061322f565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f612c6a82612c28565b612c748185612c32565b9350612c84818560208601612c42565b612c8d81612c50565b840191505092915050565b5f6020820190508181035f830152612cb08184612c60565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612ce582612cbc565b9050919050565b612cf581612cdb565b8114612cff575f80fd5b50565b5f81359050612d1081612cec565b92915050565b5f819050919050565b612d2881612d16565b8114612d32575f80fd5b50565b5f81359050612d4381612d1f565b92915050565b5f8060408385031215612d5f57612d5e612cb8565b5b5f612d6c85828601612d02565b9250506020612d7d85828601612d35565b9150509250929050565b5f8115159050919050565b612d9b81612d87565b82525050565b5f602082019050612db45f830184612d92565b92915050565b5f60208284031215612dcf57612dce612cb8565b5b5f612ddc84828501612d35565b91505092915050565b5f60208284031215612dfa57612df9612cb8565b5b5f612e0784828501612d02565b91505092915050565b5f819050919050565b5f612e33612e2e612e2984612cbc565b612e10565b612cbc565b9050919050565b5f612e4482612e19565b9050919050565b5f612e5582612e3a565b9050919050565b612e6581612e4b565b82525050565b5f602082019050612e7e5f830184612e5c565b92915050565b612e8d81612d16565b82525050565b5f602082019050612ea65f830184612e84565b92915050565b5f805f60608486031215612ec357612ec2612cb8565b5b5f612ed086828701612d02565b9350506020612ee186828701612d02565b9250506040612ef286828701612d35565b9150509250925092565b5f60ff82169050919050565b612f1181612efc565b82525050565b5f602082019050612f2a5f830184612f08565b92915050565b612f3981612cdb565b82525050565b5f602082019050612f525f830184612f30565b92915050565b5f8060408385031215612f6e57612f6d612cb8565b5b5f612f7b85828601612d35565b9250506020612f8c85828601612d35565b9150509250929050565b612f9f81612d87565b8114612fa9575f80fd5b50565b5f81359050612fba81612f96565b92915050565b5f8060408385031215612fd657612fd5612cb8565b5b5f612fe385828601612d02565b9250506020612ff485828601612fac565b9150509250929050565b5f6020828403121561301357613012612cb8565b5b5f61302084828501612fac565b91505092915050565b5f806040838503121561303f5761303e612cb8565b5b5f61304c85828601612d02565b925050602061305d85828601612d02565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f61309b602083612c32565b91506130a682613067565b602082019050919050565b5f6020820190508181035f8301526130c88161308f565b9050919050565b7f4665756e4149206c61756e6368656400000000000000000000000000000000005f82015250565b5f613103600f83612c32565b915061310e826130cf565b602082019050919050565b5f6020820190508181035f830152613130816130f7565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061317b57607f821691505b60208210810361318e5761318d613137565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6131cb82612d16565b91506131d683612d16565b92508282026131e481612d16565b915082820484148315176131fb576131fa613194565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61323982612d16565b915061324483612d16565b92508261325457613253613202565b5b828204905092915050565b7f5377617020616d6f756e74203c20302e3030312520746f74616c20737570706c5f8201527f792e000000000000000000000000000000000000000000000000000000000000602082015250565b5f6132b9602283612c32565b91506132c48261325f565b604082019050919050565b5f6020820190508181035f8301526132e6816132ad565b9050919050565b7f5377617020616d6f756e74203e20312520746f74616c20737570706c792e00005f82015250565b5f613321601e83612c32565b915061332c826132ed565b602082019050919050565b5f6020820190508181035f83015261334e81613315565b9050919050565b7f6d617857616c6c6574203c20302e3525000000000000000000000000000000005f82015250565b5f613389601083612c32565b915061339482613355565b602082019050919050565b5f6020820190508181035f8301526133b68161337d565b9050919050565b5f8160011c9050919050565b5f808291508390505b6001851115613412578086048111156133ee576133ed613194565b5b60018516156133fd5780820291505b808102905061340b856133bd565b94506133d2565b94509492505050565b5f8261342a57600190506134e5565b81613437575f90506134e5565b816001811461344d576002811461345757613486565b60019150506134e5565b60ff84111561346957613468613194565b5b8360020a9150848211156134805761347f613194565b5b506134e5565b5060208310610133831016604e8410600b84101617156134bb5782820a9050838111156134b6576134b5613194565b5b6134e5565b6134c884848460016133c9565b925090508184048111156134df576134de613194565b5b81810290505b9392505050565b5f6134f682612d16565b915061350183612efc565b925061352e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848461341b565b905092915050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f613590602883612c32565b915061359b82613536565b604082019050919050565b5f6020820190508181035f8301526135bd81613584565b9050919050565b5f6135ce82612d16565b91506135d983612d16565b92508282019050808211156135f1576135f0613194565b5b92915050565b7f427579206665652065786365656473206c696d697400000000000000000000005f82015250565b5f61362b601583612c32565b9150613636826135f7565b602082019050919050565b5f6020820190508181035f8301526136588161361f565b9050919050565b7f53656c6c206665652065786365656473206c696d6974000000000000000000005f82015250565b5f613693601683612c32565b915061369e8261365f565b602082019050919050565b5f6020820190508181035f8301526136c081613687565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d205f8201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b5f613721603983612c32565b915061372c826136c7565b604082019050919050565b5f6020820190508181035f83015261374e81613715565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f6137af602583612c32565b91506137ba82613755565b604082019050919050565b5f6020820190508181035f8301526137dc816137a3565b9050919050565b7f6d61785472616e73616374696f6e203c20302e312500000000000000000000005f82015250565b5f613817601583612c32565b9150613822826137e3565b602082019050919050565b5f6020820190508181035f8301526138448161380b565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f6138a5602683612c32565b91506138b08261384b565b604082019050919050565b5f6020820190508181035f8301526138d281613899565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f613933602483612c32565b915061393e826138d9565b604082019050919050565b5f6020820190508181035f83015261396081613927565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6139c1602283612c32565b91506139cc82613967565b604082019050919050565b5f6020820190508181035f8301526139ee816139b5565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f613a4f602583612c32565b9150613a5a826139f5565b604082019050919050565b5f6020820190508181035f830152613a7c81613a43565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f613add602383612c32565b9150613ae882613a83565b604082019050919050565b5f6020820190508181035f830152613b0a81613ad1565b9050919050565b5f613b1b82612d16565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613b4d57613b4c613194565b5b600182019050919050565b5f613b6282612d16565b9150613b6d83612d16565b9250828203905081811115613b8557613b84613194565b5b92915050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f613be5602683612c32565b9150613bf082613b8b565b604082019050919050565b5f6020820190508181035f830152613c1281613bd9565b9050919050565b5f81905092915050565b50565b5f613c315f83613c19565b9150613c3c82613c23565b5f82019050919050565b5f613c5082613c26565b9150819050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f613cb4602183612c32565b9150613cbf82613c5a565b604082019050919050565b5f6020820190508181035f830152613ce181613ca8565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050613d5081612cec565b92915050565b5f60208284031215613d6b57613d6a612cb8565b5b5f613d7884828501613d42565b91505092915050565b5f819050919050565b5f613da4613d9f613d9a84613d81565b612e10565b612d16565b9050919050565b613db481613d8a565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613dec81612cdb565b82525050565b5f613dfd8383613de3565b60208301905092915050565b5f602082019050919050565b5f613e1f82613dba565b613e298185613dc4565b9350613e3483613dd4565b805f5b83811015613e64578151613e4b8882613df2565b9750613e5683613e09565b925050600181019050613e37565b5085935050505092915050565b5f60a082019050613e845f830188612e84565b613e916020830187613dab565b8181036040830152613ea38186613e15565b9050613eb26060830185612f30565b613ebf6080830184612e84565b969550505050505056fea2646970667358221220649ca6ba7562fabcafa2005254a5740d151deda11277fd4098f17afd7463b0c364736f6c63430008190033
Deployed Bytecode Sourcemap
22630:8512:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25116:197;;;;;;;;;;;;;:::i;:::-;;2570:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3632:210;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29292:457;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30020:240;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26188:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22706:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2898:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3850:529;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2790:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4387:297;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22764:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23059:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26365:126;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23246:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30468:266;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23139:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3014:177;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23429:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25321:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12778:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12992:145;;;;;;;;;;;;;:::i;:::-;;30356:104;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2678;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25680:304;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4692:482;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3199:216;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23590:57;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23099:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25490:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22950:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23385:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29757:255;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3423:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23312:23;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23526:57;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22986:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23283:22;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13145:281;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22809:66;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23026:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25116:197;12915:12;:10;:12::i;:::-;12905:22;;:6;;;;;;;;;;;:22;;;12897:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;25173:13:::1;;;;;;;;;;;25172:14;25164:42;;;;;;;;;;;;:::i;:::-;;;;;;;;;25233:4;25217:13;;:20;;;;;;;;;;;;;;;;;;25264:12;25248:13;:28;;;;25301:4;25287:11;;:18;;;;;;;;;;;;;;;;;;25116:197::o:0;2570:100::-;2624:13;2657:5;2650:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2570:100;:::o;3632:210::-;3751:4;3773:39;3782:12;:10;:12::i;:::-;3796:7;3805:6;3773:8;:39::i;:::-;3830:4;3823:11;;3632:210;;;;:::o;29292:457::-;29399:4;12915:12;:10;:12::i;:::-;12905:22;;:6;;;;;;;;;;;:22;;;12897:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;29477:7:::1;29472:1;29456:13;:11;:13::i;:::-;:17;;;;:::i;:::-;29455:29;;;;:::i;:::-;29443:8;:41;;29421:125;;;;;;;;;;;;:::i;:::-;;;;;;;;;29615:6;29608:3;29592:13;:11;:13::i;:::-;:19;;;;:::i;:::-;29591:30;;;;:::i;:::-;29579:8;:42;;29557:122;;;;;;;;;;;;:::i;:::-;;;;;;;;;29711:8;29690:18;:29;;;;29737:4;29730:11;;29292:457:::0;;;:::o;30020:240::-;12915:12;:10;:12::i;:::-;12905:22;;:6;;;;;;;;;;;:22;;;12897:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;30151:6:::1;30145:2;30129:13;:11;:13::i;:::-;:18;;;;:::i;:::-;30128:29;;;;:::i;:::-;30115:8;:43;;30093:109;;;;;;;;;;;;:::i;:::-;;;;;;;;;30241:10;:8;:10::i;:::-;30237:2;:14;;;;:::i;:::-;30225:8;:27;;;;:::i;:::-;30213:9;:39;;;;30020:240:::0;:::o;26188:169::-;12915:12;:10;:12::i;:::-;12905:22;;:6;;;;;;;;;;;:22;;;12897:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;26301:12:::1;;;;;;;;;;;26270:44;;26290:9;26270:44;;;;;;;;;;;;26340:9;26325:12;;:24;;;;;;;;;;;;;;;;;;26188:169:::0;:::o;22706:51::-;;;:::o;2898:108::-;2959:7;2986:12;;2979:19;;2898:108;:::o;3850:529::-;3990:4;4007:36;4017:6;4025:9;4036:6;4007:9;:36::i;:::-;4056:24;4083:11;:19;4095:6;4083:19;;;;;;;;;;;;;;;:33;4103:12;:10;:12::i;:::-;4083:33;;;;;;;;;;;;;;;;4056:60;;4169:6;4149:16;:26;;4127:116;;;;;;;;;;;;:::i;:::-;;;;;;;;;4279:57;4288:6;4296:12;:10;:12::i;:::-;4329:6;4310:16;:25;4279:8;:57::i;:::-;4367:4;4360:11;;;3850:529;;;;;:::o;2790:100::-;2848:5;2873:9;;;;;;;;;;;2866:16;;2790:100;:::o;4387:297::-;4502:4;4524:130;4547:12;:10;:12::i;:::-;4574:7;4633:10;4596:11;:25;4608:12;:10;:12::i;:::-;4596:25;;;;;;;;;;;;;;;:34;4622:7;4596:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;4524:8;:130::i;:::-;4672:4;4665:11;;4387:297;;;;:::o;22764:38::-;;;:::o;23059:33::-;;;;;;;;;;;;;:::o;26365:126::-;26431:4;26455:19;:28;26475:7;26455:28;;;;;;;;;;;;;;;;;;;;;;;;;26448:35;;26365:126;;;:::o;23246:28::-;;;;:::o;30468:266::-;12915:12;:10;:12::i;:::-;12905:22;;:6;;;;;;;;;;;:22;;;12897:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;30572:5:::1;30561:7;:16;;30553:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;30634:5;30622:8;:17;;30614:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;30689:7;30679;:17;;;;30718:8;30707;:19;;;;30468:266:::0;;:::o;23139:31::-;;;;;;;;;;;;;:::o;3014:177::-;3133:7;3165:9;:18;3175:7;3165:18;;;;;;;;;;;;;;;;3158:25;;3014:177;;;:::o;23429:29::-;;;;:::o;25321:161::-;12915:12;:10;:12::i;:::-;12905:22;;:6;;;;;;;;;;;:22;;;12897:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;25470:4:::1;25434:25;:33;25460:6;25434:33;;;;;;;;;;;;;;;;:40;;;;;;;;;;;;;;;;;;25321:161:::0;;:::o;12778:79::-;12816:7;12843:6;;;;;;;;;;;12836:13;;12778:79;:::o;12992:145::-;12915:12;:10;:12::i;:::-;12905:22;;:6;;;;;;;;;;;:22;;;12897:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13096:1:::1;13059:40;;13080:6;;;;;;;;;;;13059:40;;;;;;;;;;;;13127:1;13110:6;;:19;;;;;;;;;;;;;;;;;;12992:145::o:0;30356:104::-;12915:12;:10;:12::i;:::-;12905:22;;:6;;;;;;;;;;;:22;;;12897:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;30443:9:::1;30429:11;;:23;;;;;;;;;;;;;;;;;;30356:104:::0;:::o;2678:::-;2734:13;2767:7;2760:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2678:104;:::o;25680:304::-;12915:12;:10;:12::i;:::-;12905:22;;:6;;;;;;;;;;;:22;;;12897:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;25824:13:::1;25816:21;;:4;:21;;::::0;25794:128:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;25935:41;25964:4;25970:5;25935:28;:41::i;:::-;25680:304:::0;;:::o;4692:482::-;4812:4;4834:24;4861:11;:25;4873:12;:10;:12::i;:::-;4861:25;;;;;;;;;;;;;;;:34;4887:7;4861:34;;;;;;;;;;;;;;;;4834:61;;4948:15;4928:16;:35;;4906:122;;;;;;;;;;;;:::i;:::-;;;;;;;;;5064:67;5073:12;:10;:12::i;:::-;5087:7;5115:15;5096:16;:34;5064:8;:67::i;:::-;5162:4;5155:11;;;4692:482;;;;:::o;3199:216::-;3321:4;3343:42;3353:12;:10;:12::i;:::-;3367:9;3378:6;3343:9;:42::i;:::-;3403:4;3396:11;;3199:216;;;;:::o;23590:57::-;;;;;;;;;;;;;;;;;;;;;;:::o;23099:33::-;;;;;;;;;;;;;:::o;25490:182::-;12915:12;:10;:12::i;:::-;12905:22;;:6;;;;;;;;;;;:22;;;12897:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;25606:8:::1;25575:19;:28;25595:7;25575:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;25646:7;25630:34;;;25655:8;25630:34;;;;;;:::i;:::-;;;;;;;;25490:182:::0;;:::o;22950:29::-;;;;:::o;23385:37::-;;;;:::o;29757:255::-;12915:12;:10;:12::i;:::-;12905:22;;:6;;;;;;;;;;;:22;;;12897:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;29893:6:::1;29887:2;29871:13;:11;:13::i;:::-;:18;;;;:::i;:::-;29870:29;;;;:::i;:::-;29857:8;:43;;29835:114;;;;;;;;;;;;:::i;:::-;;;;;;;;;29993:10;:8;:10::i;:::-;29989:2;:14;;;;:::i;:::-;29977:8;:27;;;;:::i;:::-;29960:14;:44;;;;29757:255:::0;:::o;3423:201::-;3557:7;3589:11;:18;3601:5;3589:18;;;;;;;;;;;;;;;:27;3608:7;3589:27;;;;;;;;;;;;;;;;3582:34;;3423:201;;;;:::o;23312:23::-;;;;:::o;23526:57::-;;;;;;;;;;;;;;;;;;;;;;:::o;22986:33::-;;;;:::o;23283:22::-;;;;:::o;13145:281::-;12915:12;:10;:12::i;:::-;12905:22;;:6;;;;;;;;;;;:22;;;12897:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13268:1:::1;13248:22;;:8;:22;;::::0;13226:110:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;13381:8;13352:38;;13373:6;;;;;;;;;;;13352:38;;;;;;;;;;;;13410:8;13401:6;;:17;;;;;;;;;;;;;;;;;;13145:281:::0;:::o;22809:66::-;;;;;;;;;;;;;:::o;23026:24::-;;;;:::o;462:115::-;515:15;558:10;543:26;;462:115;:::o;6966:380::-;7119:1;7102:19;;:5;:19;;;7094:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7200:1;7181:21;;:7;:21;;;7173:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7284:6;7254:11;:18;7266:5;7254:18;;;;;;;;;;;;;;;:27;7273:7;7254:27;;;;;;;;;;;;;;;:36;;;;7322:7;7306:32;;7315:5;7306:32;;;7331:6;7306:32;;;;;;:::i;:::-;;;;;;;;6966:380;;;:::o;26499:1699::-;26647:1;26631:18;;:4;:18;;;26623:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;26724:1;26710:16;;:2;:16;;;26702:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;26793:1;26783:6;:11;26779:93;;26811:28;26827:4;26833:2;26837:1;26811:15;:28::i;:::-;26854:7;;26779:93;26884:28;26915:24;26933:4;26915:9;:24::i;:::-;26884:55;;26952:12;26991:18;;26967:20;:42;;26952:57;;27040:7;:35;;;;;27064:11;;;;;;;;;;;27040:35;:61;;;;;27093:8;;;;;;;;;;;27092:9;27040:61;:110;;;;;27119:25;:31;27145:4;27119:31;;;;;;;;;;;;;;;;;;;;;;;;;27118:32;27040:110;:153;;;;;27168:19;:25;27188:4;27168:25;;;;;;;;;;;;;;;;;;;;;;;;;27167:26;27040:153;:194;;;;;27211:19;:23;27231:2;27211:23;;;;;;;;;;;;;;;;;;;;;;;;;27210:24;27040:194;:242;;;;;27264:18;;27251:10;;:31;27040:242;27022:415;;;27320:4;27309:8;;:15;;;;;;;;;;;;;;;;;;27339:55;27348:45;27352:20;27374:18;;27348:3;:45::i;:::-;27339:8;:55::i;:::-;27420:5;27409:8;;:16;;;;;;;;;;;;;;;;;;27022:415;27449:12;27465:8;;;;;;;;;;;27464:9;27449:24;;27490:19;:25;27510:4;27490:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;27519:19;:23;27539:2;27519:23;;;;;;;;;;;;;;;;;;;;;;;;;27490:52;27486:100;;;27569:5;27559:15;;27486:100;27598:12;27631:7;27627:518;;;27680:25;:29;27706:2;27680:29;;;;;;;;;;;;;;;;;;;;;;;;;:45;;;;;27724:1;27713:8;;:12;27680:45;27676:320;;;27753:32;27778:6;27753:20;27764:8;;27753:6;:10;;:20;;;;:::i;:::-;:24;;:32;;;;:::i;:::-;27746:39;;27676:320;;;27844:25;:31;27870:4;27844:31;;;;;;;;;;;;;;;;;;;;;;;;;:46;;;;;27889:1;27879:7;;:11;27844:46;27840:156;;;27918:31;27942:6;27918:19;27929:7;;27918:6;:10;;:19;;;;:::i;:::-;:23;;:31;;;;:::i;:::-;27911:38;;27968:10;;:12;;;;;;;;;:::i;:::-;;;;;;27840:156;27676:320;28023:1;28016:4;:8;28012:91;;;28045:42;28061:4;28075;28082;28045:15;:42::i;:::-;28012:91;28129:4;28119:14;;;;;:::i;:::-;;;27627:518;28157:33;28173:4;28179:2;28183:6;28157:15;:33::i;:::-;26612:1586;;;;26499:1699;;;;:::o;25992:188::-;26109:5;26075:25;:31;26101:4;26075:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;26166:5;26132:40;;26160:4;26132:40;;;;;;;;;;;;25992:188;;:::o;5182:770::-;5340:1;5322:20;;:6;:20;;;5314:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;5424:1;5403:23;;:9;:23;;;5395:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;5479:47;5500:6;5508:9;5519:6;5479:20;:47::i;:::-;5539:21;5563:9;:17;5573:6;5563:17;;;;;;;;;;;;;;;;5539:41;;5630:6;5613:13;:23;;5591:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;5774:6;5758:13;:22;5738:9;:17;5748:6;5738:17;;;;;;;;;;;;;;;:42;;;;5826:6;5802:9;:20;5812:9;5802:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;5867:9;5850:35;;5859:6;5850:35;;;5878:6;5850:35;;;;;;:::i;:::-;;;;;;;;5898:46;5918:6;5926:9;5937:6;5898:19;:46::i;:::-;5303:649;5182:770;;;:::o;28206:107::-;28263:7;28295:1;28291;:5;28290:15;;28304:1;28290:15;;;28300:1;28290:15;28283:22;;28206:107;;;;:::o;28804:363::-;28857:12;28896:1;28886:6;:11;28882:50;;28914:7;;;28882:50;28944:26;28973:6;28944:35;;28992:36;29009:18;28992:16;:36::i;:::-;29041:18;29062:21;29041:42;;29118:12;;;;;;;;;;;29110:26;;29144:10;29110:49;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29096:63;;;;;28846:321;;;28804:363;;:::o;8209:250::-;8267:7;8296:1;8291;:6;8287:47;;8321:1;8314:8;;;;8287:47;8346:9;8362:1;8358;:5;;;;:::i;:::-;8346:17;;8391:1;8386;8382;:5;;;;:::i;:::-;:10;8374:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;8450:1;8443:8;;;8209:250;;;;;:::o;8467:132::-;8525:7;8552:39;8556:1;8559;8552:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;8545:46;;8467:132;;;;:::o;7354:125::-;;;;:::o;7487:124::-;;;;:::o;28321:475::-;28387:21;28425:1;28411:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28387:40;;28456:4;28438;28443:1;28438:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;28482:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;28472:4;28477:1;28472:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;28517:62;28534:4;28549:15;28567:11;28517:8;:62::i;:::-;28592:15;:66;;;28673:11;28699:1;28715:4;28742;28762:15;28592:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28376:420;28321:475;:::o;8607:312::-;8727:7;8759:1;8755;:5;8762:12;8747:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;8786:9;8802:1;8798;:5;;;;:::i;:::-;8786:17;;8910:1;8903:8;;;8607:312;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:139::-;376:6;371:3;366;360:23;417:1;408:6;403:3;399:16;392:27;287:139;;;:::o;432:102::-;473:6;524:2;520:7;515:2;508:5;504:14;500:28;490:38;;432:102;;;:::o;540:377::-;628:3;656:39;689:5;656:39;:::i;:::-;711:71;775:6;770:3;711:71;:::i;:::-;704:78;;791:65;849:6;844:3;837:4;830:5;826:16;791:65;:::i;:::-;881:29;903:6;881:29;:::i;:::-;876:3;872:39;865:46;;632:285;540:377;;;;:::o;923:313::-;1036:4;1074:2;1063:9;1059:18;1051:26;;1123:9;1117:4;1113:20;1109:1;1098:9;1094:17;1087:47;1151:78;1224:4;1215:6;1151:78;:::i;:::-;1143:86;;923:313;;;;:::o;1323:117::-;1432:1;1429;1422:12;1569:126;1606:7;1646:42;1639:5;1635:54;1624:65;;1569:126;;;:::o;1701:96::-;1738:7;1767:24;1785:5;1767:24;:::i;:::-;1756:35;;1701:96;;;:::o;1803:122::-;1876:24;1894:5;1876:24;:::i;:::-;1869:5;1866:35;1856:63;;1915:1;1912;1905:12;1856:63;1803:122;:::o;1931:139::-;1977:5;2015:6;2002:20;1993:29;;2031:33;2058:5;2031:33;:::i;:::-;1931:139;;;;:::o;2076:77::-;2113:7;2142:5;2131:16;;2076:77;;;:::o;2159:122::-;2232:24;2250:5;2232:24;:::i;:::-;2225:5;2222:35;2212:63;;2271:1;2268;2261:12;2212:63;2159:122;:::o;2287:139::-;2333:5;2371:6;2358:20;2349:29;;2387:33;2414:5;2387:33;:::i;:::-;2287:139;;;;:::o;2432:474::-;2500:6;2508;2557:2;2545:9;2536:7;2532:23;2528:32;2525:119;;;2563:79;;:::i;:::-;2525:119;2683:1;2708:53;2753:7;2744:6;2733:9;2729:22;2708:53;:::i;:::-;2698:63;;2654:117;2810:2;2836:53;2881:7;2872:6;2861:9;2857:22;2836:53;:::i;:::-;2826:63;;2781:118;2432:474;;;;;:::o;2912:90::-;2946:7;2989:5;2982:13;2975:21;2964:32;;2912:90;;;:::o;3008:109::-;3089:21;3104:5;3089:21;:::i;:::-;3084:3;3077:34;3008:109;;:::o;3123:210::-;3210:4;3248:2;3237:9;3233:18;3225:26;;3261:65;3323:1;3312:9;3308:17;3299:6;3261:65;:::i;:::-;3123:210;;;;:::o;3339:329::-;3398:6;3447:2;3435:9;3426:7;3422:23;3418:32;3415:119;;;3453:79;;:::i;:::-;3415:119;3573:1;3598:53;3643:7;3634:6;3623:9;3619:22;3598:53;:::i;:::-;3588:63;;3544:117;3339:329;;;;:::o;3674:::-;3733:6;3782:2;3770:9;3761:7;3757:23;3753:32;3750:119;;;3788:79;;:::i;:::-;3750:119;3908:1;3933:53;3978:7;3969:6;3958:9;3954:22;3933:53;:::i;:::-;3923:63;;3879:117;3674:329;;;;:::o;4009:60::-;4037:3;4058:5;4051:12;;4009:60;;;:::o;4075:142::-;4125:9;4158:53;4176:34;4185:24;4203:5;4185:24;:::i;:::-;4176:34;:::i;:::-;4158:53;:::i;:::-;4145:66;;4075:142;;;:::o;4223:126::-;4273:9;4306:37;4337:5;4306:37;:::i;:::-;4293:50;;4223:126;;;:::o;4355:153::-;4432:9;4465:37;4496:5;4465:37;:::i;:::-;4452:50;;4355:153;;;:::o;4514:185::-;4628:64;4686:5;4628:64;:::i;:::-;4623:3;4616:77;4514:185;;:::o;4705:276::-;4825:4;4863:2;4852:9;4848:18;4840:26;;4876:98;4971:1;4960:9;4956:17;4947:6;4876:98;:::i;:::-;4705:276;;;;:::o;4987:118::-;5074:24;5092:5;5074:24;:::i;:::-;5069:3;5062:37;4987:118;;:::o;5111:222::-;5204:4;5242:2;5231:9;5227:18;5219:26;;5255:71;5323:1;5312:9;5308:17;5299:6;5255:71;:::i;:::-;5111:222;;;;:::o;5339:619::-;5416:6;5424;5432;5481:2;5469:9;5460:7;5456:23;5452:32;5449:119;;;5487:79;;:::i;:::-;5449:119;5607:1;5632:53;5677:7;5668:6;5657:9;5653:22;5632:53;:::i;:::-;5622:63;;5578:117;5734:2;5760:53;5805:7;5796:6;5785:9;5781:22;5760:53;:::i;:::-;5750:63;;5705:118;5862:2;5888:53;5933:7;5924:6;5913:9;5909:22;5888:53;:::i;:::-;5878:63;;5833:118;5339:619;;;;;:::o;5964:86::-;5999:7;6039:4;6032:5;6028:16;6017:27;;5964:86;;;:::o;6056:112::-;6139:22;6155:5;6139:22;:::i;:::-;6134:3;6127:35;6056:112;;:::o;6174:214::-;6263:4;6301:2;6290:9;6286:18;6278:26;;6314:67;6378:1;6367:9;6363:17;6354:6;6314:67;:::i;:::-;6174:214;;;;:::o;6394:118::-;6481:24;6499:5;6481:24;:::i;:::-;6476:3;6469:37;6394:118;;:::o;6518:222::-;6611:4;6649:2;6638:9;6634:18;6626:26;;6662:71;6730:1;6719:9;6715:17;6706:6;6662:71;:::i;:::-;6518:222;;;;:::o;6746:474::-;6814:6;6822;6871:2;6859:9;6850:7;6846:23;6842:32;6839:119;;;6877:79;;:::i;:::-;6839:119;6997:1;7022:53;7067:7;7058:6;7047:9;7043:22;7022:53;:::i;:::-;7012:63;;6968:117;7124:2;7150:53;7195:7;7186:6;7175:9;7171:22;7150:53;:::i;:::-;7140:63;;7095:118;6746:474;;;;;:::o;7226:116::-;7296:21;7311:5;7296:21;:::i;:::-;7289:5;7286:32;7276:60;;7332:1;7329;7322:12;7276:60;7226:116;:::o;7348:133::-;7391:5;7429:6;7416:20;7407:29;;7445:30;7469:5;7445:30;:::i;:::-;7348:133;;;;:::o;7487:468::-;7552:6;7560;7609:2;7597:9;7588:7;7584:23;7580:32;7577:119;;;7615:79;;:::i;:::-;7577:119;7735:1;7760:53;7805:7;7796:6;7785:9;7781:22;7760:53;:::i;:::-;7750:63;;7706:117;7862:2;7888:50;7930:7;7921:6;7910:9;7906:22;7888:50;:::i;:::-;7878:60;;7833:115;7487:468;;;;;:::o;7961:323::-;8017:6;8066:2;8054:9;8045:7;8041:23;8037:32;8034:119;;;8072:79;;:::i;:::-;8034:119;8192:1;8217:50;8259:7;8250:6;8239:9;8235:22;8217:50;:::i;:::-;8207:60;;8163:114;7961:323;;;;:::o;8290:474::-;8358:6;8366;8415:2;8403:9;8394:7;8390:23;8386:32;8383:119;;;8421:79;;:::i;:::-;8383:119;8541:1;8566:53;8611:7;8602:6;8591:9;8587:22;8566:53;:::i;:::-;8556:63;;8512:117;8668:2;8694:53;8739:7;8730:6;8719:9;8715:22;8694:53;:::i;:::-;8684:63;;8639:118;8290:474;;;;;:::o;8770:182::-;8910:34;8906:1;8898:6;8894:14;8887:58;8770:182;:::o;8958:366::-;9100:3;9121:67;9185:2;9180:3;9121:67;:::i;:::-;9114:74;;9197:93;9286:3;9197:93;:::i;:::-;9315:2;9310:3;9306:12;9299:19;;8958:366;;;:::o;9330:419::-;9496:4;9534:2;9523:9;9519:18;9511:26;;9583:9;9577:4;9573:20;9569:1;9558:9;9554:17;9547:47;9611:131;9737:4;9611:131;:::i;:::-;9603:139;;9330:419;;;:::o;9755:165::-;9895:17;9891:1;9883:6;9879:14;9872:41;9755:165;:::o;9926:366::-;10068:3;10089:67;10153:2;10148:3;10089:67;:::i;:::-;10082:74;;10165:93;10254:3;10165:93;:::i;:::-;10283:2;10278:3;10274:12;10267:19;;9926:366;;;:::o;10298:419::-;10464:4;10502:2;10491:9;10487:18;10479:26;;10551:9;10545:4;10541:20;10537:1;10526:9;10522:17;10515:47;10579:131;10705:4;10579:131;:::i;:::-;10571:139;;10298:419;;;:::o;10723:180::-;10771:77;10768:1;10761:88;10868:4;10865:1;10858:15;10892:4;10889:1;10882:15;10909:320;10953:6;10990:1;10984:4;10980:12;10970:22;;11037:1;11031:4;11027:12;11058:18;11048:81;;11114:4;11106:6;11102:17;11092:27;;11048:81;11176:2;11168:6;11165:14;11145:18;11142:38;11139:84;;11195:18;;:::i;:::-;11139:84;10960:269;10909:320;;;:::o;11235:180::-;11283:77;11280:1;11273:88;11380:4;11377:1;11370:15;11404:4;11401:1;11394:15;11421:410;11461:7;11484:20;11502:1;11484:20;:::i;:::-;11479:25;;11518:20;11536:1;11518:20;:::i;:::-;11513:25;;11573:1;11570;11566:9;11595:30;11613:11;11595:30;:::i;:::-;11584:41;;11774:1;11765:7;11761:15;11758:1;11755:22;11735:1;11728:9;11708:83;11685:139;;11804:18;;:::i;:::-;11685:139;11469:362;11421:410;;;;:::o;11837:180::-;11885:77;11882:1;11875:88;11982:4;11979:1;11972:15;12006:4;12003:1;11996:15;12023:185;12063:1;12080:20;12098:1;12080:20;:::i;:::-;12075:25;;12114:20;12132:1;12114:20;:::i;:::-;12109:25;;12153:1;12143:35;;12158:18;;:::i;:::-;12143:35;12200:1;12197;12193:9;12188:14;;12023:185;;;;:::o;12214:221::-;12354:34;12350:1;12342:6;12338:14;12331:58;12423:4;12418:2;12410:6;12406:15;12399:29;12214:221;:::o;12441:366::-;12583:3;12604:67;12668:2;12663:3;12604:67;:::i;:::-;12597:74;;12680:93;12769:3;12680:93;:::i;:::-;12798:2;12793:3;12789:12;12782:19;;12441:366;;;:::o;12813:419::-;12979:4;13017:2;13006:9;13002:18;12994:26;;13066:9;13060:4;13056:20;13052:1;13041:9;13037:17;13030:47;13094:131;13220:4;13094:131;:::i;:::-;13086:139;;12813:419;;;:::o;13238:180::-;13378:32;13374:1;13366:6;13362:14;13355:56;13238:180;:::o;13424:366::-;13566:3;13587:67;13651:2;13646:3;13587:67;:::i;:::-;13580:74;;13663:93;13752:3;13663:93;:::i;:::-;13781:2;13776:3;13772:12;13765:19;;13424:366;;;:::o;13796:419::-;13962:4;14000:2;13989:9;13985:18;13977:26;;14049:9;14043:4;14039:20;14035:1;14024:9;14020:17;14013:47;14077:131;14203:4;14077:131;:::i;:::-;14069:139;;13796:419;;;:::o;14221:166::-;14361:18;14357:1;14349:6;14345:14;14338:42;14221:166;:::o;14393:366::-;14535:3;14556:67;14620:2;14615:3;14556:67;:::i;:::-;14549:74;;14632:93;14721:3;14632:93;:::i;:::-;14750:2;14745:3;14741:12;14734:19;;14393:366;;;:::o;14765:419::-;14931:4;14969:2;14958:9;14954:18;14946:26;;15018:9;15012:4;15008:20;15004:1;14993:9;14989:17;14982:47;15046:131;15172:4;15046:131;:::i;:::-;15038:139;;14765:419;;;:::o;15190:102::-;15232:8;15279:5;15276:1;15272:13;15251:34;;15190:102;;;:::o;15298:848::-;15359:5;15366:4;15390:6;15381:15;;15414:5;15405:14;;15428:712;15449:1;15439:8;15436:15;15428:712;;;15544:4;15539:3;15535:14;15529:4;15526:24;15523:50;;;15553:18;;:::i;:::-;15523:50;15603:1;15593:8;15589:16;15586:451;;;16018:4;16011:5;16007:16;15998:25;;15586:451;16068:4;16062;16058:15;16050:23;;16098:32;16121:8;16098:32;:::i;:::-;16086:44;;15428:712;;;15298:848;;;;;;;:::o;16152:1073::-;16206:5;16397:8;16387:40;;16418:1;16409:10;;16420:5;;16387:40;16446:4;16436:36;;16463:1;16454:10;;16465:5;;16436:36;16532:4;16580:1;16575:27;;;;16616:1;16611:191;;;;16525:277;;16575:27;16593:1;16584:10;;16595:5;;;16611:191;16656:3;16646:8;16643:17;16640:43;;;16663:18;;:::i;:::-;16640:43;16712:8;16709:1;16705:16;16696:25;;16747:3;16740:5;16737:14;16734:40;;;16754:18;;:::i;:::-;16734:40;16787:5;;;16525:277;;16911:2;16901:8;16898:16;16892:3;16886:4;16883:13;16879:36;16861:2;16851:8;16848:16;16843:2;16837:4;16834:12;16830:35;16814:111;16811:246;;;16967:8;16961:4;16957:19;16948:28;;17002:3;16995:5;16992:14;16989:40;;;17009:18;;:::i;:::-;16989:40;17042:5;;16811:246;17082:42;17120:3;17110:8;17104:4;17101:1;17082:42;:::i;:::-;17067:57;;;;17156:4;17151:3;17147:14;17140:5;17137:25;17134:51;;;17165:18;;:::i;:::-;17134:51;17214:4;17207:5;17203:16;17194:25;;16152:1073;;;;;;:::o;17231:281::-;17289:5;17313:23;17331:4;17313:23;:::i;:::-;17305:31;;17357:25;17373:8;17357:25;:::i;:::-;17345:37;;17401:104;17438:66;17428:8;17422:4;17401:104;:::i;:::-;17392:113;;17231:281;;;;:::o;17518:227::-;17658:34;17654:1;17646:6;17642:14;17635:58;17727:10;17722:2;17714:6;17710:15;17703:35;17518:227;:::o;17751:366::-;17893:3;17914:67;17978:2;17973:3;17914:67;:::i;:::-;17907:74;;17990:93;18079:3;17990:93;:::i;:::-;18108:2;18103:3;18099:12;18092:19;;17751:366;;;:::o;18123:419::-;18289:4;18327:2;18316:9;18312:18;18304:26;;18376:9;18370:4;18366:20;18362:1;18351:9;18347:17;18340:47;18404:131;18530:4;18404:131;:::i;:::-;18396:139;;18123:419;;;:::o;18548:191::-;18588:3;18607:20;18625:1;18607:20;:::i;:::-;18602:25;;18641:20;18659:1;18641:20;:::i;:::-;18636:25;;18684:1;18681;18677:9;18670:16;;18705:3;18702:1;18699:10;18696:36;;;18712:18;;:::i;:::-;18696:36;18548:191;;;;:::o;18745:171::-;18885:23;18881:1;18873:6;18869:14;18862:47;18745:171;:::o;18922:366::-;19064:3;19085:67;19149:2;19144:3;19085:67;:::i;:::-;19078:74;;19161:93;19250:3;19161:93;:::i;:::-;19279:2;19274:3;19270:12;19263:19;;18922:366;;;:::o;19294:419::-;19460:4;19498:2;19487:9;19483:18;19475:26;;19547:9;19541:4;19537:20;19533:1;19522:9;19518:17;19511:47;19575:131;19701:4;19575:131;:::i;:::-;19567:139;;19294:419;;;:::o;19719:172::-;19859:24;19855:1;19847:6;19843:14;19836:48;19719:172;:::o;19897:366::-;20039:3;20060:67;20124:2;20119:3;20060:67;:::i;:::-;20053:74;;20136:93;20225:3;20136:93;:::i;:::-;20254:2;20249:3;20245:12;20238:19;;19897:366;;;:::o;20269:419::-;20435:4;20473:2;20462:9;20458:18;20450:26;;20522:9;20516:4;20512:20;20508:1;20497:9;20493:17;20486:47;20550:131;20676:4;20550:131;:::i;:::-;20542:139;;20269:419;;;:::o;20694:244::-;20834:34;20830:1;20822:6;20818:14;20811:58;20903:27;20898:2;20890:6;20886:15;20879:52;20694:244;:::o;20944:366::-;21086:3;21107:67;21171:2;21166:3;21107:67;:::i;:::-;21100:74;;21183:93;21272:3;21183:93;:::i;:::-;21301:2;21296:3;21292:12;21285:19;;20944:366;;;:::o;21316:419::-;21482:4;21520:2;21509:9;21505:18;21497:26;;21569:9;21563:4;21559:20;21555:1;21544:9;21540:17;21533:47;21597:131;21723:4;21597:131;:::i;:::-;21589:139;;21316:419;;;:::o;21741:224::-;21881:34;21877:1;21869:6;21865:14;21858:58;21950:7;21945:2;21937:6;21933:15;21926:32;21741:224;:::o;21971:366::-;22113:3;22134:67;22198:2;22193:3;22134:67;:::i;:::-;22127:74;;22210:93;22299:3;22210:93;:::i;:::-;22328:2;22323:3;22319:12;22312:19;;21971:366;;;:::o;22343:419::-;22509:4;22547:2;22536:9;22532:18;22524:26;;22596:9;22590:4;22586:20;22582:1;22571:9;22567:17;22560:47;22624:131;22750:4;22624:131;:::i;:::-;22616:139;;22343:419;;;:::o;22768:171::-;22908:23;22904:1;22896:6;22892:14;22885:47;22768:171;:::o;22945:366::-;23087:3;23108:67;23172:2;23167:3;23108:67;:::i;:::-;23101:74;;23184:93;23273:3;23184:93;:::i;:::-;23302:2;23297:3;23293:12;23286:19;;22945:366;;;:::o;23317:419::-;23483:4;23521:2;23510:9;23506:18;23498:26;;23570:9;23564:4;23560:20;23556:1;23545:9;23541:17;23534:47;23598:131;23724:4;23598:131;:::i;:::-;23590:139;;23317:419;;;:::o;23742:225::-;23882:34;23878:1;23870:6;23866:14;23859:58;23951:8;23946:2;23938:6;23934:15;23927:33;23742:225;:::o;23973:366::-;24115:3;24136:67;24200:2;24195:3;24136:67;:::i;:::-;24129:74;;24212:93;24301:3;24212:93;:::i;:::-;24330:2;24325:3;24321:12;24314:19;;23973:366;;;:::o;24345:419::-;24511:4;24549:2;24538:9;24534:18;24526:26;;24598:9;24592:4;24588:20;24584:1;24573:9;24569:17;24562:47;24626:131;24752:4;24626:131;:::i;:::-;24618:139;;24345:419;;;:::o;24770:223::-;24910:34;24906:1;24898:6;24894:14;24887:58;24979:6;24974:2;24966:6;24962:15;24955:31;24770:223;:::o;24999:366::-;25141:3;25162:67;25226:2;25221:3;25162:67;:::i;:::-;25155:74;;25238:93;25327:3;25238:93;:::i;:::-;25356:2;25351:3;25347:12;25340:19;;24999:366;;;:::o;25371:419::-;25537:4;25575:2;25564:9;25560:18;25552:26;;25624:9;25618:4;25614:20;25610:1;25599:9;25595:17;25588:47;25652:131;25778:4;25652:131;:::i;:::-;25644:139;;25371:419;;;:::o;25796:221::-;25936:34;25932:1;25924:6;25920:14;25913:58;26005:4;26000:2;25992:6;25988:15;25981:29;25796:221;:::o;26023:366::-;26165:3;26186:67;26250:2;26245:3;26186:67;:::i;:::-;26179:74;;26262:93;26351:3;26262:93;:::i;:::-;26380:2;26375:3;26371:12;26364:19;;26023:366;;;:::o;26395:419::-;26561:4;26599:2;26588:9;26584:18;26576:26;;26648:9;26642:4;26638:20;26634:1;26623:9;26619:17;26612:47;26676:131;26802:4;26676:131;:::i;:::-;26668:139;;26395:419;;;:::o;26820:224::-;26960:34;26956:1;26948:6;26944:14;26937:58;27029:7;27024:2;27016:6;27012:15;27005:32;26820:224;:::o;27050:366::-;27192:3;27213:67;27277:2;27272:3;27213:67;:::i;:::-;27206:74;;27289:93;27378:3;27289:93;:::i;:::-;27407:2;27402:3;27398:12;27391:19;;27050:366;;;:::o;27422:419::-;27588:4;27626:2;27615:9;27611:18;27603:26;;27675:9;27669:4;27665:20;27661:1;27650:9;27646:17;27639:47;27703:131;27829:4;27703:131;:::i;:::-;27695:139;;27422:419;;;:::o;27847:222::-;27987:34;27983:1;27975:6;27971:14;27964:58;28056:5;28051:2;28043:6;28039:15;28032:30;27847:222;:::o;28075:366::-;28217:3;28238:67;28302:2;28297:3;28238:67;:::i;:::-;28231:74;;28314:93;28403:3;28314:93;:::i;:::-;28432:2;28427:3;28423:12;28416:19;;28075:366;;;:::o;28447:419::-;28613:4;28651:2;28640:9;28636:18;28628:26;;28700:9;28694:4;28690:20;28686:1;28675:9;28671:17;28664:47;28728:131;28854:4;28728:131;:::i;:::-;28720:139;;28447:419;;;:::o;28872:233::-;28911:3;28934:24;28952:5;28934:24;:::i;:::-;28925:33;;28980:66;28973:5;28970:77;28967:103;;29050:18;;:::i;:::-;28967:103;29097:1;29090:5;29086:13;29079:20;;28872:233;;;:::o;29111:194::-;29151:4;29171:20;29189:1;29171:20;:::i;:::-;29166:25;;29205:20;29223:1;29205:20;:::i;:::-;29200:25;;29249:1;29246;29242:9;29234:17;;29273:1;29267:4;29264:11;29261:37;;;29278:18;;:::i;:::-;29261:37;29111:194;;;;:::o;29311:225::-;29451:34;29447:1;29439:6;29435:14;29428:58;29520:8;29515:2;29507:6;29503:15;29496:33;29311:225;:::o;29542:366::-;29684:3;29705:67;29769:2;29764:3;29705:67;:::i;:::-;29698:74;;29781:93;29870:3;29781:93;:::i;:::-;29899:2;29894:3;29890:12;29883:19;;29542:366;;;:::o;29914:419::-;30080:4;30118:2;30107:9;30103:18;30095:26;;30167:9;30161:4;30157:20;30153:1;30142:9;30138:17;30131:47;30195:131;30321:4;30195:131;:::i;:::-;30187:139;;29914:419;;;:::o;30339:147::-;30440:11;30477:3;30462:18;;30339:147;;;;:::o;30492:114::-;;:::o;30612:398::-;30771:3;30792:83;30873:1;30868:3;30792:83;:::i;:::-;30785:90;;30884:93;30973:3;30884:93;:::i;:::-;31002:1;30997:3;30993:11;30986:18;;30612:398;;;:::o;31016:379::-;31200:3;31222:147;31365:3;31222:147;:::i;:::-;31215:154;;31386:3;31379:10;;31016:379;;;:::o;31401:220::-;31541:34;31537:1;31529:6;31525:14;31518:58;31610:3;31605:2;31597:6;31593:15;31586:28;31401:220;:::o;31627:366::-;31769:3;31790:67;31854:2;31849:3;31790:67;:::i;:::-;31783:74;;31866:93;31955:3;31866:93;:::i;:::-;31984:2;31979:3;31975:12;31968:19;;31627:366;;;:::o;31999:419::-;32165:4;32203:2;32192:9;32188:18;32180:26;;32252:9;32246:4;32242:20;32238:1;32227:9;32223:17;32216:47;32280:131;32406:4;32280:131;:::i;:::-;32272:139;;31999:419;;;:::o;32424:180::-;32472:77;32469:1;32462:88;32569:4;32566:1;32559:15;32593:4;32590:1;32583:15;32610:180;32658:77;32655:1;32648:88;32755:4;32752:1;32745:15;32779:4;32776:1;32769:15;32796:143;32853:5;32884:6;32878:13;32869:22;;32900:33;32927:5;32900:33;:::i;:::-;32796:143;;;;:::o;32945:351::-;33015:6;33064:2;33052:9;33043:7;33039:23;33035:32;33032:119;;;33070:79;;:::i;:::-;33032:119;33190:1;33215:64;33271:7;33262:6;33251:9;33247:22;33215:64;:::i;:::-;33205:74;;33161:128;32945:351;;;;:::o;33302:85::-;33347:7;33376:5;33365:16;;33302:85;;;:::o;33393:158::-;33451:9;33484:61;33502:42;33511:32;33537:5;33511:32;:::i;:::-;33502:42;:::i;:::-;33484:61;:::i;:::-;33471:74;;33393:158;;;:::o;33557:147::-;33652:45;33691:5;33652:45;:::i;:::-;33647:3;33640:58;33557:147;;:::o;33710:114::-;33777:6;33811:5;33805:12;33795:22;;33710:114;;;:::o;33830:184::-;33929:11;33963:6;33958:3;33951:19;34003:4;33998:3;33994:14;33979:29;;33830:184;;;;:::o;34020:132::-;34087:4;34110:3;34102:11;;34140:4;34135:3;34131:14;34123:22;;34020:132;;;:::o;34158:108::-;34235:24;34253:5;34235:24;:::i;:::-;34230:3;34223:37;34158:108;;:::o;34272:179::-;34341:10;34362:46;34404:3;34396:6;34362:46;:::i;:::-;34440:4;34435:3;34431:14;34417:28;;34272:179;;;;:::o;34457:113::-;34527:4;34559;34554:3;34550:14;34542:22;;34457:113;;;:::o;34606:732::-;34725:3;34754:54;34802:5;34754:54;:::i;:::-;34824:86;34903:6;34898:3;34824:86;:::i;:::-;34817:93;;34934:56;34984:5;34934:56;:::i;:::-;35013:7;35044:1;35029:284;35054:6;35051:1;35048:13;35029:284;;;35130:6;35124:13;35157:63;35216:3;35201:13;35157:63;:::i;:::-;35150:70;;35243:60;35296:6;35243:60;:::i;:::-;35233:70;;35089:224;35076:1;35073;35069:9;35064:14;;35029:284;;;35033:14;35329:3;35322:10;;34730:608;;;34606:732;;;;:::o;35344:831::-;35607:4;35645:3;35634:9;35630:19;35622:27;;35659:71;35727:1;35716:9;35712:17;35703:6;35659:71;:::i;:::-;35740:80;35816:2;35805:9;35801:18;35792:6;35740:80;:::i;:::-;35867:9;35861:4;35857:20;35852:2;35841:9;35837:18;35830:48;35895:108;35998:4;35989:6;35895:108;:::i;:::-;35887:116;;36013:72;36081:2;36070:9;36066:18;36057:6;36013:72;:::i;:::-;36095:73;36163:3;36152:9;36148:19;36139:6;36095:73;:::i;:::-;35344:831;;;;;;;;:::o
Swarm Source
ipfs://649ca6ba7562fabcafa2005254a5740d151deda11277fd4098f17afd7463b0c3
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in ETH
0
Multichain Portfolio | 35 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.