Source Code
More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 93 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Approve | 15412067 | 1293 days ago | IN | 0 ETH | 0.00038978 | ||||
| Approve | 15411684 | 1293 days ago | IN | 0 ETH | 0.00047732 | ||||
| Approve | 15404704 | 1294 days ago | IN | 0 ETH | 0.00043586 | ||||
| Update Sell Fees | 15404702 | 1294 days ago | IN | 0 ETH | 0.00029279 | ||||
| Approve | 15404702 | 1294 days ago | IN | 0 ETH | 0.00042753 | ||||
| Update Buy Fees | 15404698 | 1294 days ago | IN | 0 ETH | 0.00022403 | ||||
| Approve | 15404682 | 1294 days ago | IN | 0 ETH | 0.00080654 | ||||
| Approve | 15404682 | 1294 days ago | IN | 0 ETH | 0.00085377 | ||||
| Update Sell Fees | 15404677 | 1294 days ago | IN | 0 ETH | 0.00039458 | ||||
| Approve | 15404672 | 1294 days ago | IN | 0 ETH | 0.00035803 | ||||
| Approve | 15404671 | 1294 days ago | IN | 0 ETH | 0.00054565 | ||||
| Remove Limits | 15404670 | 1294 days ago | IN | 0 ETH | 0.00032804 | ||||
| Update Sell Fees | 15404670 | 1294 days ago | IN | 0 ETH | 0.00045045 | ||||
| Approve | 15404666 | 1294 days ago | IN | 0 ETH | 0.00069235 | ||||
| Approve | 15404666 | 1294 days ago | IN | 0 ETH | 0.00283398 | ||||
| Approve | 15404665 | 1294 days ago | IN | 0 ETH | 0.00070984 | ||||
| Approve | 15404665 | 1294 days ago | IN | 0 ETH | 0.0010877 | ||||
| Approve | 15404665 | 1294 days ago | IN | 0 ETH | 0.00283398 | ||||
| Approve | 15404664 | 1294 days ago | IN | 0 ETH | 0.00044428 | ||||
| Approve | 15404664 | 1294 days ago | IN | 0 ETH | 0.00044428 | ||||
| Approve | 15404663 | 1294 days ago | IN | 0 ETH | 0.00042644 | ||||
| Update Sell Fees | 15404663 | 1294 days ago | IN | 0 ETH | 0.0004553 | ||||
| Approve | 15404663 | 1294 days ago | IN | 0 ETH | 0.00283398 | ||||
| Approve | 15404658 | 1294 days ago | IN | 0 ETH | 0.00048105 | ||||
| Approve | 15404658 | 1294 days ago | IN | 0 ETH | 0.00048105 |
Latest 25 internal transactions (View All)
Advanced mode:
| Parent Transaction Hash | Method | Block |
From
|
|
To
|
||
|---|---|---|---|---|---|---|---|
| Transfer | 15404704 | 1294 days ago | 0.03994696 ETH | ||||
| Transfer | 15404704 | 1294 days ago | 0.03994696 ETH | ||||
| Transfer | 15404698 | 1294 days ago | 0.04058288 ETH | ||||
| Transfer | 15404698 | 1294 days ago | 0.04058288 ETH | ||||
| Transfer | 15404694 | 1294 days ago | 0.04476098 ETH | ||||
| Transfer | 15404694 | 1294 days ago | 0.04476098 ETH | ||||
| Transfer | 15404677 | 1294 days ago | 0.00668394 ETH | ||||
| Transfer | 15404677 | 1294 days ago | 0.00668394 ETH | ||||
| Transfer | 15404671 | 1294 days ago | 0.01885284 ETH | ||||
| Transfer | 15404671 | 1294 days ago | 0.01885284 ETH | ||||
| Transfer | 15404667 | 1294 days ago | 0.01494225 ETH | ||||
| Transfer | 15404667 | 1294 days ago | 0.01494225 ETH | ||||
| Transfer | 15404666 | 1294 days ago | 0.01494225 ETH | ||||
| Transfer | 15404666 | 1294 days ago | 0.01494225 ETH | ||||
| Transfer | 15404665 | 1294 days ago | 0.01431795 ETH | ||||
| Transfer | 15404665 | 1294 days ago | 0.01431795 ETH | ||||
| Transfer | 15404664 | 1294 days ago | 0.0407074 ETH | ||||
| Transfer | 15404664 | 1294 days ago | 0.0407074 ETH | ||||
| Transfer | 15404664 | 1294 days ago | 0.0407074 ETH | ||||
| Transfer | 15404664 | 1294 days ago | 0.0407074 ETH | ||||
| Transfer | 15404663 | 1294 days ago | 0.00770748 ETH | ||||
| Transfer | 15404663 | 1294 days ago | 0.00770748 ETH | ||||
| Transfer | 15404663 | 1294 days ago | 0.01024433 ETH | ||||
| Transfer | 15404663 | 1294 days ago | 0.01024433 ETH | ||||
| Transfer | 15404663 | 1294 days ago | 0.01206604 ETH |
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
NOBLE
Compiler Version
v0.8.15+commit.e14f2714
Contract Source Code (Solidity)
/**
*Submitted for verification at Etherscan.io on 2022-08-24
*/
/*
who controls the issuance of money controls the government
*/
// SPDX-License-Identifier: MIT
pragma solidity 0.8.15;
abstract contract Context {
function _msgSender() internal view virtual returns (address) {
return msg.sender;
}
function _msgData() internal view virtual returns (bytes calldata) {
this;
return msg.data;
}
}
interface IUniswapV2Pair {
event Approval(address indexed owner, address indexed spender, uint value);
event Transfer(address indexed from, address indexed to, uint value);
function name() external pure returns (string memory);
function symbol() external pure returns (string memory);
function decimals() external pure returns (uint8);
function totalSupply() external view returns (uint);
function balanceOf(address owner) external view returns (uint);
function allowance(address owner, address spender) external view returns (uint);
function approve(address spender, uint value) external returns (bool);
function transfer(address to, uint value) external returns (bool);
function transferFrom(address from, address to, uint value) external returns (bool);
function DOMAIN_SEPARATOR() external view returns (bytes32);
function PERMIT_TYPEHASH() external pure returns (bytes32);
function nonces(address owner) external view returns (uint);
function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;
event Mint(address indexed sender, uint amount0, uint amount1);
event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);
event Swap(
address indexed sender,
uint amount0In,
uint amount1In,
uint amount0Out,
uint amount1Out,
address indexed to
);
event Sync(uint112 reserve0, uint112 reserve1);
function MINIMUM_LIQUIDITY() external pure returns (uint);
function factory() external view returns (address);
function token0() external view returns (address);
function token1() external view returns (address);
function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
function price0CumulativeLast() external view returns (uint);
function price1CumulativeLast() external view returns (uint);
function kLast() external view returns (uint);
function mint(address to) external returns (uint liquidity);
function burn(address to) external returns (uint amount0, uint amount1);
function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
function skim(address to) external;
function sync() external;
function initialize(address, address) external;
}
interface IUniswapV2Factory {
event PairCreated(address indexed token0, address indexed token1, address pair, uint);
function feeTo() external view returns (address);
function feeToSetter() external view returns (address);
function getPair(address tokenA, address tokenB) external view returns (address pair);
function allPairs(uint) external view returns (address pair);
function allPairsLength() external view returns (uint);
function createPair(address tokenA, address tokenB) external returns (address pair);
function setFeeTo(address) external;
function setFeeToSetter(address) external;
}
interface IERC20 {
function totalSupply() external view returns (uint256);
function balanceOf(address account) external view returns (uint256);
function transfer(address recipient, uint256 amount) external returns (bool);
function allowance(address owner, address spender) external view returns (uint256);
function approve(address spender, uint256 amount) external returns (bool);
function transferFrom(
address sender,
address recipient,
uint256 amount
) external returns (bool);
event Transfer(address indexed from, address indexed to, uint256 value);
event Approval(address indexed owner, address indexed spender, uint256 value);
}
interface IERC20Metadata is IERC20 {
function name() external view returns (string memory);
function symbol() external view returns (string memory);
function decimals() external view returns (uint8);
}
contract ERC20 is Context, IERC20, IERC20Metadata {
using SafeMath for uint256;
mapping(address => uint256) private _balances;
mapping(address => mapping(address => uint256)) private _allowances;
uint256 private _totalSupply;
string private _name;
string private _symbol;
constructor(string memory name_, string memory symbol_) {
_name = name_;
_symbol = symbol_;
}
function name() public view virtual override returns (string memory) {
return _name;
}
function symbol() public view virtual override returns (string memory) {
return _symbol;
}
function decimals() public view virtual override returns (uint8) {
return 18;
}
function totalSupply() public view virtual override returns (uint256) {
return _totalSupply;
}
function balanceOf(address account) public view virtual override returns (uint256) {
return _balances[account];
}
function transfer(address recipient, uint256 amount) public virtual override returns (bool) {
_transfer(_msgSender(), recipient, amount);
return true;
}
function allowance(address owner, address spender) public view virtual override returns (uint256) {
return _allowances[owner][spender];
}
function approve(address spender, uint256 amount) public virtual override returns (bool) {
_approve(_msgSender(), spender, amount);
return true;
}
function transferFrom(
address sender,
address recipient,
uint256 amount
) public virtual override returns (bool) {
_transfer(sender, recipient, amount);
_approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
return true;
}
function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
_approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));
return true;
}
function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
_approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
return true;
}
function _transfer(
address sender,
address recipient,
uint256 amount
) internal virtual {
require(sender != address(0), "ERC20: transfer from the zero address");
require(recipient != address(0), "ERC20: transfer to the zero address");
_beforeTokenTransfer(sender, recipient, amount);
_balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance");
_balances[recipient] = _balances[recipient].add(amount);
emit Transfer(sender, recipient, amount);
}
function _mint(address account, uint256 amount) internal virtual {
require(account != address(0), "ERC20: mint to the zero address");
_beforeTokenTransfer(address(0), account, amount);
_totalSupply = _totalSupply.add(amount);
_balances[account] = _balances[account].add(amount);
emit Transfer(address(0), account, amount);
}
function _burn(address account, uint256 amount) internal virtual {
require(account != address(0), "ERC20: burn from the zero address");
_beforeTokenTransfer(account, address(0), amount);
_balances[account] = _balances[account].sub(amount, "ERC20: burn amount exceeds balance");
_totalSupply = _totalSupply.sub(amount);
emit Transfer(account, address(0), amount);
}
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 {}
}
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;
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;
}
}
contract Ownable is Context {
address private _owner;
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
constructor () {
address msgSender = _msgSender();
_owner = msgSender;
emit OwnershipTransferred(address(0), msgSender);
}
function owner() public view returns (address) {
return _owner;
}
modifier onlyOwner() {
require(_owner == _msgSender(), "Ownable: caller is not the owner");
_;
}
function renounceOwnership() public virtual onlyOwner {
emit OwnershipTransferred(_owner, address(0));
_owner = address(0);
}
function transferOwnership(address newOwner) public virtual onlyOwner {
require(newOwner != address(0), "Ownable: new owner is the zero address");
emit OwnershipTransferred(_owner, newOwner);
_owner = newOwner;
}
}
library SafeMathInt {
int256 private constant MIN_INT256 = int256(1) << 255;
int256 private constant MAX_INT256 = ~(int256(1) << 255);
function mul(int256 a, int256 b) internal pure returns (int256) {int256 c = a * b;require(c != MIN_INT256 || (a & MIN_INT256) != (b & MIN_INT256));require((b == 0) || (c / b == a));return c;}
function div(int256 a, int256 b) internal pure returns (int256) {require(b != -1 || a != MIN_INT256);return a / b;}
function sub(int256 a, int256 b) internal pure returns (int256) {int256 c = a - b; require((b >= 0 && c <= a) || (b < 0 && c > a));return c;}
function add(int256 a, int256 b) internal pure returns (int256) {int256 c = a + b;require((b >= 0 && c >= a) || (b < 0 && c < a));return c;}
function abs(int256 a) internal pure returns (int256) {require(a != MIN_INT256);return a < 0 ? -a : a;}
function toUint256Safe(int256 a) internal pure returns (uint256) {require(a >= 0); return uint256(a);}
}
library SafeMathUint {
function toInt256Safe(uint256 a) internal pure returns (int256) {
int256 b = int256(a);
require(b >= 0);
return b;
}
}
interface IUniswapV2Router01 {
function factory() external pure returns (address);
function WETH() external pure returns (address);
function addLiquidity(
address tokenA,
address tokenB,
uint amountADesired,
uint amountBDesired,
uint amountAMin,
uint amountBMin,
address to,
uint deadline
) external returns (uint amountA, uint amountB, uint liquidity);
function addLiquidityETH(
address token,
uint amountTokenDesired,
uint amountTokenMin,
uint amountETHMin,
address to,
uint deadline
) external payable returns (uint amountToken, uint amountETH, uint liquidity);
function removeLiquidity(
address tokenA,
address tokenB,
uint liquidity,
uint amountAMin,
uint amountBMin,
address to,
uint deadline
) external returns (uint amountA, uint amountB);
function removeLiquidityETH(
address token,
uint liquidity,
uint amountTokenMin,
uint amountETHMin,
address to,
uint deadline
) external returns (uint amountToken, uint amountETH);
function removeLiquidityWithPermit(
address tokenA,
address tokenB,
uint liquidity,
uint amountAMin,
uint amountBMin,
address to,
uint deadline,
bool approveMax, uint8 v, bytes32 r, bytes32 s
) external returns (uint amountA, uint amountB);
function removeLiquidityETHWithPermit(
address token,
uint liquidity,
uint amountTokenMin,
uint amountETHMin,
address to,
uint deadline,
bool approveMax, uint8 v, bytes32 r, bytes32 s
) external returns (uint amountToken, uint amountETH);
function swapExactTokensForTokens(
uint amountIn,
uint amountOutMin,
address[] calldata path,
address to,
uint deadline
) external returns (uint[] memory amounts);
function swapTokensForExactTokens(
uint amountOut,
uint amountInMax,
address[] calldata path,
address to,
uint deadline
) external returns (uint[] memory amounts);
function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
external
payable
returns (uint[] memory amounts);
function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
external
returns (uint[] memory amounts);
function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
external
returns (uint[] memory amounts);
function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
external
payable
returns (uint[] memory amounts);
function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}
interface IUniswapV2Router02 is IUniswapV2Router01 {
function removeLiquidityETHSupportingFeeOnTransferTokens(
address token,
uint liquidity,
uint amountTokenMin,
uint amountETHMin,
address to,
uint deadline
) external returns (uint amountETH);
function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
address token,
uint liquidity,
uint amountTokenMin,
uint amountETHMin,
address to,
uint deadline,
bool approveMax, uint8 v, bytes32 r, bytes32 s
) external returns (uint amountETH);
function swapExactTokensForTokensSupportingFeeOnTransferTokens(
uint amountIn,
uint amountOutMin,
address[] calldata path,
address to,
uint deadline
) external;
function swapExactETHForTokensSupportingFeeOnTransferTokens(
uint amountOutMin,
address[] calldata path,
address to,
uint deadline
) external payable;
function swapExactTokensForETHSupportingFeeOnTransferTokens(
uint amountIn,
uint amountOutMin,
address[] calldata path,
address to,
uint deadline
) external;
}
contract NOBLE is ERC20, Ownable {
using SafeMath for uint256;
IUniswapV2Router02 public immutable uniswapV2Router;
address public immutable uniswapV2Pair;
address public constant deadAddress = address(0xdead);
bool private swapping;
address public marketingWallet;
address public tokenDevelopmentAddress;
uint256 public maxTransactionAmount;
uint256 public swapTokensAtAmount;
uint256 public maxWallet;
bool public limitsInEffect = true;
bool public tradingActive = false;
bool public swapEnabled = false;
mapping(address => uint256) private _holderLastTransferTimestamp;
bool public transferDelayEnabled = true;
uint256 public buyTotalFees;
uint256 public buyMarketingFee;
uint256 public buyLiquidityFee;
uint256 public buyDevelopmentFee;
uint256 public sellTotalFees;
uint256 public sellMarketingFee;
uint256 public sellLiquidityFee;
uint256 public sellDevelopmentFee;
uint256 public tokensForMarketing;
uint256 public tokensForLiquidity;
uint256 public tokensForDevelopment;
mapping (address => bool) private _isExcludedFromFees;
mapping (address => bool) public _isExcludedMaxTransactionAmount;
mapping (address => bool) public automatedMarketMakerPairs;
event UpdateUniswapV2Router(address indexed newAddress, address indexed oldAddress);
event ExcludeFromFees(address indexed account, bool isExcluded);
event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);
event marketingWalletUpdated(address indexed newWallet, address indexed oldWallet);
event DevelopmentWalletUpdated(address indexed newWallet, address indexed oldWallet);
event SwapAndLiquify(
uint256 tokensSwapped,
uint256 ethReceived,
uint256 tokensIntoLiquidity
);
event BuyBackTriggered(uint256 amount);
event OwnerForcedSwapBack(uint256 timestamp);
constructor() ERC20("NOBLE", "NOBLE") {
IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
excludeFromMaxTransaction(address(_uniswapV2Router), true);
uniswapV2Router = _uniswapV2Router;
uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());
excludeFromMaxTransaction(address(uniswapV2Pair), true);
_setAutomatedMarketMakerPair(address(uniswapV2Pair), true);
uint256 _buyMarketingFee = 2;
uint256 _buyLiquidityFee = 0;
uint256 _buyDevelopmentFee = 0;
uint256 _sellMarketingFee = 2;
uint256 _sellLiquidityFee = 0;
uint256 _sellDevelopmentFee = 0;
uint256 totalSupply = 1 * 1e8 * 1e18;
maxWallet = totalSupply * 1 / 100; // 3% Max wallet
maxTransactionAmount = totalSupply * 1 / 100; // 2% maxTransactionAmountTxn
swapTokensAtAmount = totalSupply * 15 / 10000; // 0.15% swap wallet
buyMarketingFee = _buyMarketingFee;
buyLiquidityFee = _buyLiquidityFee;
buyDevelopmentFee = _buyDevelopmentFee;
buyTotalFees = buyMarketingFee + buyLiquidityFee + buyDevelopmentFee;
sellMarketingFee = _sellMarketingFee;
sellLiquidityFee = _sellLiquidityFee;
sellDevelopmentFee = _sellDevelopmentFee;
sellTotalFees = sellMarketingFee + sellLiquidityFee + sellDevelopmentFee;
marketingWallet = address(msg.sender);
tokenDevelopmentAddress = address(msg.sender);
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 enableTrading() external onlyOwner {
tradingActive = true;
swapEnabled = true;
}
function removeLimits() external onlyOwner returns (bool){
limitsInEffect = false;
transferDelayEnabled = false;
return true;
}
function disableTransferDelay() external onlyOwner returns (bool){
transferDelayEnabled = false;
return true;
}
function excludeFromMaxTransaction(address updAds, bool isEx) public onlyOwner {
_isExcludedMaxTransactionAmount[updAds] = isEx;
}
function updateBuyFees(uint256 _marketingFee, uint256 _liquidityFee, uint256 _DevelopmentFee) external onlyOwner {//TG
buyMarketingFee = _marketingFee;
buyLiquidityFee = _liquidityFee;
buyDevelopmentFee = _DevelopmentFee;
buyTotalFees = buyMarketingFee + buyLiquidityFee + buyDevelopmentFee;
require(buyTotalFees <= 6, "Must keep fees at 6% or less");
}
function updateSellFees(uint256 _marketingFee, uint256 _liquidityFee, uint256 _DevelopmentFee) external onlyOwner {
sellMarketingFee = _marketingFee;
sellLiquidityFee = _liquidityFee;
sellDevelopmentFee = _DevelopmentFee;
sellTotalFees = sellMarketingFee + sellLiquidityFee + sellDevelopmentFee;
require(sellTotalFees <= 100, "Must keep fees at 6% or less");
}
function excludeFromFees(address account, bool excluded) public onlyOwner {
_isExcludedFromFees[account] = excluded;
emit ExcludeFromFees(account, excluded);
}
function setAutomatedMarketMakerPair(address pair, bool value) external 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 isExcludedFromFees(address account) external view returns(bool) {
return _isExcludedFromFees[account];
}
function _transfer(
address from,
address to,
uint256 amount
) internal override {
require(from != address(0), "ERC20: transfer from the zero address");
require(to != address(0), "ERC20: transfer to the zero address");
if(amount == 0) {
super._transfer(from, to, 0);
return;
}
if(limitsInEffect){
if (
from != owner() &&
to != owner() &&
to != address(0) &&
to != address(0xdead) &&
!swapping
){
if(!tradingActive){
require(_isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading is not active.");
}
if (transferDelayEnabled){
if (to != owner() && to != address(uniswapV2Router) && to != address(uniswapV2Pair)){
require(_holderLastTransferTimestamp[tx.origin] < block.number, "_transfer:: Transfer Delay enabled. Only one purchase per block allowed.");
_holderLastTransferTimestamp[tx.origin] = block.number;
}
}
//when buy
if (automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to]) {
require(amount + balanceOf(to) <= maxWallet, "Unable to exceed Max Wallet");
}
//when sell
else if (automatedMarketMakerPairs[to] && !_isExcludedMaxTransactionAmount[from]) {
require(amount <= maxTransactionAmount, "Sell transfer amount exceeds the maxTransactionAmount.");
}
else if(!_isExcludedMaxTransactionAmount[to]) {
require(amount + balanceOf(to) <= maxWallet, "Unable to exceed Max Wallet");
}
}
}
uint256 contractTokenBalance = balanceOf(address(this));
bool canSwap = contractTokenBalance >= swapTokensAtAmount;
if(
canSwap &&
swapEnabled &&
!swapping &&
!automatedMarketMakerPairs[from] &&
!_isExcludedFromFees[from] &&
!_isExcludedFromFees[to]
) {
swapping = true;
swapBack();
swapping = false;
}
bool takeFee = !swapping;
if(_isExcludedFromFees[from] || _isExcludedFromFees[to]) {
takeFee = false;
}
uint256 fees = 0;
if(takeFee){
if (automatedMarketMakerPairs[to] && sellTotalFees > 0){
fees = amount.mul(sellTotalFees).div(100);
tokensForLiquidity += fees * sellLiquidityFee / sellTotalFees;
tokensForDevelopment += fees * sellDevelopmentFee / sellTotalFees;
tokensForMarketing += fees * sellMarketingFee / sellTotalFees;
}
else if(automatedMarketMakerPairs[from] && buyTotalFees > 0) {
fees = amount.mul(buyTotalFees).div(100);
tokensForLiquidity += fees * buyLiquidityFee / buyTotalFees;
tokensForDevelopment += fees * buyDevelopmentFee / buyTotalFees;
tokensForMarketing += fees * buyMarketingFee / buyTotalFees;
}
if(fees > 0){
super._transfer(from, address(this), fees);
}
amount -= fees;
}
super._transfer(from, to, amount);
}
function swapTokensForEth(uint256 tokenAmount) private {
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 addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
_approve(address(this), address(uniswapV2Router), tokenAmount);
uniswapV2Router.addLiquidityETH{value: ethAmount}(
address(this),
tokenAmount,
0,
0,
owner(),
block.timestamp
);
}
function swapBack() private {
uint256 contractBalance = balanceOf(address(this));
uint256 totalTokensToSwap = tokensForLiquidity + tokensForMarketing + tokensForDevelopment;
if(contractBalance == 0 || totalTokensToSwap == 0) {return;}
if(contractBalance >= swapTokensAtAmount * 10){
contractBalance = swapTokensAtAmount * 10;
}
uint256 liquidityTokens = contractBalance * tokensForLiquidity / totalTokensToSwap / 2;
uint256 amountToSwapForETH = contractBalance.sub(liquidityTokens);
uint256 initialETHBalance = address(this).balance;
swapTokensForEth(amountToSwapForETH);
uint256 ethBalance = address(this).balance.sub(initialETHBalance);
uint256 ethForMarketing = ethBalance.mul(tokensForMarketing).div(totalTokensToSwap);
uint256 ethForDevelopment = ethBalance.mul(tokensForDevelopment).div(totalTokensToSwap);
uint256 ethForLiquidity = ethBalance - ethForMarketing - ethForDevelopment;
tokensForLiquidity = 0;
tokensForMarketing = 0;
tokensForDevelopment = 0;
(bool success,) = address(tokenDevelopmentAddress).call{value: ethForDevelopment}("");
if(liquidityTokens > 0 && ethForLiquidity > 0){
addLiquidity(liquidityTokens, ethForLiquidity);
emit SwapAndLiquify(amountToSwapForETH, ethForLiquidity, tokensForLiquidity);
}
(success,) = address(marketingWallet).call{value: address(this).balance}("");
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
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":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"BuyBackTriggered","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"DevelopmentWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"OwnerForcedSwapBack","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"marketingWalletUpdated","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyDevelopmentFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"disableTransferDelay","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellDevelopmentFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"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":"tokenDevelopmentAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForDevelopment","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_DevelopmentFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_DevelopmentFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]Contract Creation Code
60c06040526001600b60006101000a81548160ff0219169083151502179055506000600b60016101000a81548160ff0219169083151502179055506000600b60026101000a81548160ff0219169083151502179055506001600d60006101000a81548160ff0219169083151502179055503480156200007d57600080fd5b506040518060400160405280600581526020017f4e4f424c450000000000000000000000000000000000000000000000000000008152506040518060400160405280600581526020017f4e4f424c450000000000000000000000000000000000000000000000000000008152508160039081620000fb919062000dca565b5080600490816200010d919062000dca565b5050506000620001226200061d60201b60201c565b905080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506000737a250d5630b4cf539739df2c5dacb4c659f2488d9050620001ed8160016200062560201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200026d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000293919062000f1b565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000321919062000f1b565b6040518363ffffffff1660e01b81526004016200034092919062000f5e565b6020604051808303816000875af115801562000360573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000386919062000f1b565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1681525050620003ce60a05160016200062560201b60201c565b620003e360a05160016200072260201b60201c565b60006002905060008060006002905060008060006a52b7d2dcc80cd2e40000009050606460018262000416919062000fba565b6200042291906200104a565b600a81905550606460018262000439919062000fba565b6200044591906200104a565b600881905550612710600f826200045d919062000fba565b6200046991906200104a565b60098190555086600f819055508560108190555084601181905550601154601054600f5462000499919062001082565b620004a5919062001082565b600e81905550836013819055508260148190555081601581905550601554601454601354620004d5919062001082565b620004e1919062001082565b60128190555033600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200058b6200057d620007c360201b60201c565b6001620007ed60201b60201c565b6200059e306001620007ed60201b60201c565b620005b361dead6001620007ed60201b60201c565b620005d5620005c7620007c360201b60201c565b60016200062560201b60201c565b620005e83060016200062560201b60201c565b620005fd61dead60016200062560201b60201c565b6200060f33826200093a60201b60201c565b5050505050505050620012ae565b600033905090565b620006356200061d60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614620006c7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620006be9062001140565b60405180910390fd5b80601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b80601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b620007fd6200061d60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146200088f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008869062001140565b60405180910390fd5b80601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516200092e91906200117f565b60405180910390a25050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620009ac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009a390620011ec565b60405180910390fd5b620009c06000838362000ae860201b60201c565b620009dc8160025462000aed60201b62001cdf1790919060201c565b60028190555062000a3a816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205462000aed60201b62001cdf1790919060201c565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000adc91906200121f565b60405180910390a35050565b505050565b600080828462000afe919062001082565b90508381101562000b46576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000b3d906200128c565b60405180910390fd5b8091505092915050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000bd257607f821691505b60208210810362000be85762000be762000b8a565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000c527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000c13565b62000c5e868362000c13565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000cab62000ca562000c9f8462000c76565b62000c80565b62000c76565b9050919050565b6000819050919050565b62000cc78362000c8a565b62000cdf62000cd68262000cb2565b84845462000c20565b825550505050565b600090565b62000cf662000ce7565b62000d0381848462000cbc565b505050565b5b8181101562000d2b5762000d1f60008262000cec565b60018101905062000d09565b5050565b601f82111562000d7a5762000d448162000bee565b62000d4f8462000c03565b8101602085101562000d5f578190505b62000d7762000d6e8562000c03565b83018262000d08565b50505b505050565b600082821c905092915050565b600062000d9f6000198460080262000d7f565b1980831691505092915050565b600062000dba838362000d8c565b9150826002028217905092915050565b62000dd58262000b50565b67ffffffffffffffff81111562000df15762000df062000b5b565b5b62000dfd825462000bb9565b62000e0a82828562000d2f565b600060209050601f83116001811462000e42576000841562000e2d578287015190505b62000e39858262000dac565b86555062000ea9565b601f19841662000e528662000bee565b60005b8281101562000e7c5784890151825560018201915060208501945060208101905062000e55565b8683101562000e9c578489015162000e98601f89168262000d8c565b8355505b6001600288020188555050505b505050505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000ee38262000eb6565b9050919050565b62000ef58162000ed6565b811462000f0157600080fd5b50565b60008151905062000f158162000eea565b92915050565b60006020828403121562000f345762000f3362000eb1565b5b600062000f448482850162000f04565b91505092915050565b62000f588162000ed6565b82525050565b600060408201905062000f75600083018562000f4d565b62000f84602083018462000f4d565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000fc78262000c76565b915062000fd48362000c76565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562001010576200100f62000f8b565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620010578262000c76565b9150620010648362000c76565b9250826200107757620010766200101b565b5b828204905092915050565b60006200108f8262000c76565b91506200109c8362000c76565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115620010d457620010d362000f8b565b5b828201905092915050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600062001128602083620010df565b91506200113582620010f0565b602082019050919050565b600060208201905081810360008301526200115b8162001119565b9050919050565b60008115159050919050565b620011798162001162565b82525050565b60006020820190506200119660008301846200116e565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000620011d4601f83620010df565b9150620011e1826200119c565b602082019050919050565b600060208201905081810360008301526200120781620011c5565b9050919050565b620012198162000c76565b82525050565b60006020820190506200123660008301846200120e565b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600062001274601b83620010df565b915062001281826200123c565b602082019050919050565b60006020820190508181036000830152620012a78162001265565b9050919050565b60805160a0516147d76200130c60003960008181610de00152818161155c01526122c3015260008181610c050152818161226b0152818161338e0152818161346f0152818161349601528181613532015261355901526147d76000f3fe6080604052600436106102975760003560e01c80638a8c523c1161015a578063c876d0b9116100c1578063e884f2601161007a578063e884f26014610a33578063ef8700e514610a5e578063f11a24d314610a89578063f2fde38b14610ab4578063f637434214610add578063f8b45b0514610b085761029e565b8063c876d0b91461091f578063c8c8ebe41461094a578063d85ba06314610975578063da641921146109a0578063dd62ed3e146109cb578063e2f4560514610a085761029e565b8063a9059cbb11610113578063a9059cbb146107fd578063b20414111461083a578063b62496f514610865578063bbc0c742146108a2578063c0246668146108cd578063c17b5b8c146108f65761029e565b80638a8c523c146106ff5780638da5cb5b14610716578063921369131461074157806395d89b411461076c5780639a7a23d614610797578063a457c2d7146107c05761029e565b806349bd5a5e116101fe578063715018a6116101b7578063715018a614610615578063751039fc1461062c5780637571336a1461065757806375f0a874146106805780637bce5a04146106ab5780638095d564146106d65761029e565b806349bd5a5e146104ef5780634a62bb651461051a5780634fbee193146105455780636a486a8e146105825780636ddd1713146105ad57806370a08231146105d85761029e565b80631a8145bb116102505780631a8145bb146103c95780631f3fed8f146103f457806323b872dd1461041f57806327c8f8351461045c578063313ce5671461048757806339509351146104b25761029e565b806306fdde03146102a3578063095ea7b3146102ce57806310d5de531461030b5780631694505e1461034857806318160ddd1461037357806318a94cf11461039e5761029e565b3661029e57005b600080fd5b3480156102af57600080fd5b506102b8610b33565b6040516102c59190613709565b60405180910390f35b3480156102da57600080fd5b506102f560048036038101906102f091906137c4565b610bc5565b604051610302919061381f565b60405180910390f35b34801561031757600080fd5b50610332600480360381019061032d919061383a565b610be3565b60405161033f919061381f565b60405180910390f35b34801561035457600080fd5b5061035d610c03565b60405161036a91906138c6565b60405180910390f35b34801561037f57600080fd5b50610388610c27565b60405161039591906138f0565b60405180910390f35b3480156103aa57600080fd5b506103b3610c31565b6040516103c091906138f0565b60405180910390f35b3480156103d557600080fd5b506103de610c37565b6040516103eb91906138f0565b60405180910390f35b34801561040057600080fd5b50610409610c3d565b60405161041691906138f0565b60405180910390f35b34801561042b57600080fd5b506104466004803603810190610441919061390b565b610c43565b604051610453919061381f565b60405180910390f35b34801561046857600080fd5b50610471610d1c565b60405161047e919061396d565b60405180910390f35b34801561049357600080fd5b5061049c610d22565b6040516104a991906139a4565b60405180910390f35b3480156104be57600080fd5b506104d960048036038101906104d491906137c4565b610d2b565b6040516104e6919061381f565b60405180910390f35b3480156104fb57600080fd5b50610504610dde565b604051610511919061396d565b60405180910390f35b34801561052657600080fd5b5061052f610e02565b60405161053c919061381f565b60405180910390f35b34801561055157600080fd5b5061056c6004803603810190610567919061383a565b610e15565b604051610579919061381f565b60405180910390f35b34801561058e57600080fd5b50610597610e6b565b6040516105a491906138f0565b60405180910390f35b3480156105b957600080fd5b506105c2610e71565b6040516105cf919061381f565b60405180910390f35b3480156105e457600080fd5b506105ff60048036038101906105fa919061383a565b610e84565b60405161060c91906138f0565b60405180910390f35b34801561062157600080fd5b5061062a610ecc565b005b34801561063857600080fd5b50610641611024565b60405161064e919061381f565b60405180910390f35b34801561066357600080fd5b5061067e600480360381019061067991906139eb565b6110fa565b005b34801561068c57600080fd5b506106956111ec565b6040516106a2919061396d565b60405180910390f35b3480156106b757600080fd5b506106c0611212565b6040516106cd91906138f0565b60405180910390f35b3480156106e257600080fd5b506106fd60048036038101906106f89190613a2b565b611218565b005b34801561070b57600080fd5b50610714611332565b005b34801561072257600080fd5b5061072b611401565b604051610738919061396d565b60405180910390f35b34801561074d57600080fd5b5061075661142b565b60405161076391906138f0565b60405180910390f35b34801561077857600080fd5b50610781611431565b60405161078e9190613709565b60405180910390f35b3480156107a357600080fd5b506107be60048036038101906107b991906139eb565b6114c3565b005b3480156107cc57600080fd5b506107e760048036038101906107e291906137c4565b6115f6565b6040516107f4919061381f565b60405180910390f35b34801561080957600080fd5b50610824600480360381019061081f91906137c4565b6116c3565b604051610831919061381f565b60405180910390f35b34801561084657600080fd5b5061084f6116e1565b60405161085c91906138f0565b60405180910390f35b34801561087157600080fd5b5061088c6004803603810190610887919061383a565b6116e7565b604051610899919061381f565b60405180910390f35b3480156108ae57600080fd5b506108b7611707565b6040516108c4919061381f565b60405180910390f35b3480156108d957600080fd5b506108f460048036038101906108ef91906139eb565b61171a565b005b34801561090257600080fd5b5061091d60048036038101906109189190613a2b565b61185a565b005b34801561092b57600080fd5b50610934611974565b604051610941919061381f565b60405180910390f35b34801561095657600080fd5b5061095f611987565b60405161096c91906138f0565b60405180910390f35b34801561098157600080fd5b5061098a61198d565b60405161099791906138f0565b60405180910390f35b3480156109ac57600080fd5b506109b5611993565b6040516109c2919061396d565b60405180910390f35b3480156109d757600080fd5b506109f260048036038101906109ed9190613a7e565b6119b9565b6040516109ff91906138f0565b60405180910390f35b348015610a1457600080fd5b50610a1d611a40565b604051610a2a91906138f0565b60405180910390f35b348015610a3f57600080fd5b50610a48611a46565b604051610a55919061381f565b60405180910390f35b348015610a6a57600080fd5b50610a73611b01565b604051610a8091906138f0565b60405180910390f35b348015610a9557600080fd5b50610a9e611b07565b604051610aab91906138f0565b60405180910390f35b348015610ac057600080fd5b50610adb6004803603810190610ad6919061383a565b611b0d565b005b348015610ae957600080fd5b50610af2611cd3565b604051610aff91906138f0565b60405180910390f35b348015610b1457600080fd5b50610b1d611cd9565b604051610b2a91906138f0565b60405180910390f35b606060038054610b4290613aed565b80601f0160208091040260200160405190810160405280929190818152602001828054610b6e90613aed565b8015610bbb5780601f10610b9057610100808354040283529160200191610bbb565b820191906000526020600020905b815481529060010190602001808311610b9e57829003601f168201915b5050505050905090565b6000610bd9610bd2611d3d565b8484611d45565b6001905092915050565b601a6020528060005260406000206000915054906101000a900460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600254905090565b60155481565b60175481565b60165481565b6000610c50848484611f0e565b610d1184610c5c611d3d565b610d0c8560405180606001604052806028815260200161475560289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610cc2611d3d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b609092919063ffffffff16565b611d45565b600190509392505050565b61dead81565b60006012905090565b6000610dd4610d38611d3d565b84610dcf8560016000610d49611d3d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611cdf90919063ffffffff16565b611d45565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600b60009054906101000a900460ff1681565b6000601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60125481565b600b60029054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610ed4611d3d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5a90613b6a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600061102e611d3d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110b490613b6a565b60405180910390fd5b6000600b60006101000a81548160ff0219169083151502179055506000600d60006101000a81548160ff0219169083151502179055506001905090565b611102611d3d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611191576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118890613b6a565b60405180910390fd5b80601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600f5481565b611220611d3d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112a690613b6a565b60405180910390fd5b82600f819055508160108190555080601181905550601154601054600f546112d79190613bb9565b6112e19190613bb9565b600e819055506006600e54111561132d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132490613c5b565b60405180910390fd5b505050565b61133a611d3d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113c090613b6a565b60405180910390fd5b6001600b60016101000a81548160ff0219169083151502179055506001600b60026101000a81548160ff021916908315150217905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60135481565b60606004805461144090613aed565b80601f016020809104026020016040519081016040528092919081815260200182805461146c90613aed565b80156114b95780601f1061148e576101008083540402835291602001916114b9565b820191906000526020600020905b81548152906001019060200180831161149c57829003601f168201915b5050505050905090565b6114cb611d3d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461155a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155190613b6a565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036115e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115df90613ced565b60405180910390fd5b6115f28282612bc4565b5050565b60006116b9611603611d3d565b846116b48560405180606001604052806025815260200161477d602591396001600061162d611d3d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b609092919063ffffffff16565b611d45565b6001905092915050565b60006116d76116d0611d3d565b8484611f0e565b6001905092915050565b60115481565b601b6020528060005260406000206000915054906101000a900460ff1681565b600b60019054906101000a900460ff1681565b611722611d3d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117a890613b6a565b60405180910390fd5b80601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405161184e919061381f565b60405180910390a25050565b611862611d3d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118e890613b6a565b60405180910390fd5b8260138190555081601481905550806015819055506015546014546013546119199190613bb9565b6119239190613bb9565b6012819055506064601254111561196f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161196690613c5b565b60405180910390fd5b505050565b600d60009054906101000a900460ff1681565b60085481565b600e5481565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60095481565b6000611a50611d3d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611adf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ad690613b6a565b60405180910390fd5b6000600d60006101000a81548160ff0219169083151502179055506001905090565b60185481565b60105481565b611b15611d3d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ba4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9b90613b6a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611c13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c0a90613d7f565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60145481565b600a5481565b6000808284611cee9190613bb9565b905083811015611d33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d2a90613deb565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611db4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dab90613e7d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611e23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e1a90613f0f565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611f0191906138f0565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611f7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f7490613fa1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611fec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fe390614033565b60405180910390fd5b600081036120055761200083836000612c65565b612b5b565b600b60009054906101000a900460ff161561268357612022611401565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156120905750612060611401565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156120c95750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612103575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561211c5750600560149054906101000a900460ff16155b1561268257600b60019054906101000a900460ff1661221657601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806121d65750601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612215576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161220c9061409f565b60405180910390fd5b5b600d60009054906101000a900460ff16156123de57612233611401565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156122ba57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561231257507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156123dd5743600c60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410612398576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161238f90614157565b60405180910390fd5b43600c60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156124815750601a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156124e357600a5461249283610e84565b8261249d9190613bb9565b11156124de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124d5906141c3565b60405180910390fd5b612681565b601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156125865750601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156125d5576008548111156125d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125c790614255565b60405180910390fd5b612680565b601a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661267f57600a5461263283610e84565b8261263d9190613bb9565b111561267e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612675906141c3565b60405180910390fd5b5b5b5b5b5b600061268e30610e84565b9050600060095482101590508080156126b35750600b60029054906101000a900460ff165b80156126cc5750600560149054906101000a900460ff16155b80156127225750601b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156127785750601960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156127ce5750601960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612812576001600560146101000a81548160ff0219169083151502179055506127f6612ef8565b6000600560146101000a81548160ff0219169083151502179055505b6000600560149054906101000a900460ff16159050601960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806128c85750601960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156128d257600090505b60008115612b4b57601b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561293557506000601254115b15612a02576129626064612954601254886131dc90919063ffffffff16565b61325690919063ffffffff16565b9050601254601454826129759190614275565b61297f91906142fe565b601760008282546129909190613bb9565b92505081905550601254601554826129a89190614275565b6129b291906142fe565b601860008282546129c39190613bb9565b92505081905550601254601354826129db9190614275565b6129e591906142fe565b601660008282546129f69190613bb9565b92505081905550612b27565b601b60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612a5d57506000600e54115b15612b2657612a8a6064612a7c600e54886131dc90919063ffffffff16565b61325690919063ffffffff16565b9050600e5460105482612a9d9190614275565b612aa791906142fe565b60176000828254612ab89190613bb9565b92505081905550600e5460115482612ad09190614275565b612ada91906142fe565b60186000828254612aeb9190613bb9565b92505081905550600e54600f5482612b039190614275565b612b0d91906142fe565b60166000828254612b1e9190613bb9565b925050819055505b5b6000811115612b3c57612b3b873083612c65565b5b8085612b48919061432f565b94505b612b56878787612c65565b505050505b505050565b6000838311158290612ba8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b9f9190613709565b60405180910390fd5b5060008385612bb7919061432f565b9050809150509392505050565b80601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612cd4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ccb90613fa1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612d43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d3a90614033565b60405180910390fd5b612d4e8383836132a0565b612db98160405180606001604052806026815260200161472f602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b609092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612e4c816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611cdf90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612eeb91906138f0565b60405180910390a3505050565b6000612f0330610e84565b90506000601854601654601754612f1a9190613bb9565b612f249190613bb9565b90506000821480612f355750600081145b15612f415750506131da565b600a600954612f509190614275565b8210612f6857600a600954612f659190614275565b91505b600060028260175485612f7b9190614275565b612f8591906142fe565b612f8f91906142fe565b90506000612fa682856132a590919063ffffffff16565b90506000479050612fb6826132ef565b6000612fcb82476132a590919063ffffffff16565b90506000612ff686612fe8601654856131dc90919063ffffffff16565b61325690919063ffffffff16565b9050600061302187613013601854866131dc90919063ffffffff16565b61325690919063ffffffff16565b90506000818385613032919061432f565b61303c919061432f565b90506000601781905550600060168190555060006018819055506000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168360405161309e90614394565b60006040518083038185875af1925050503d80600081146130db576040519150601f19603f3d011682016040523d82523d6000602084013e6130e0565b606091505b505090506000881180156130f45750600082115b1561314157613103888361352c565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618783601754604051613138939291906143a9565b60405180910390a15b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff164760405161318790614394565b60006040518083038185875af1925050503d80600081146131c4576040519150601f19603f3d011682016040523d82523d6000602084013e6131c9565b606091505b505080915050505050505050505050505b565b60008083036131ee5760009050613250565b600082846131fc9190614275565b905082848261320b91906142fe565b1461324b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161324290614452565b60405180910390fd5b809150505b92915050565b600061329883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061360d565b905092915050565b505050565b60006132e783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612b60565b905092915050565b6000600267ffffffffffffffff81111561330c5761330b614472565b5b60405190808252806020026020018201604052801561333a5781602001602082028036833780820191505090505b5090503081600081518110613352576133516144a1565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156133f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061341b91906144e5565b8160018151811061342f5761342e6144a1565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613494307f000000000000000000000000000000000000000000000000000000000000000084611d45565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016134f695949392919061460b565b600060405180830381600087803b15801561351057600080fd5b505af1158015613524573d6000803e3d6000fd5b505050505050565b613557307f000000000000000000000000000000000000000000000000000000000000000084611d45565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d7198230856000806135a1611401565b426040518863ffffffff1660e01b81526004016135c396959493929190614665565b60606040518083038185885af11580156135e1573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061360691906146db565b5050505050565b60008083118290613654576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161364b9190613709565b60405180910390fd5b506000838561366391906142fe565b9050809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156136aa57808201518184015260208101905061368f565b838111156136b9576000848401525b50505050565b6000601f19601f8301169050919050565b60006136db82613670565b6136e5818561367b565b93506136f581856020860161368c565b6136fe816136bf565b840191505092915050565b6000602082019050818103600083015261372381846136d0565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061375b82613730565b9050919050565b61376b81613750565b811461377657600080fd5b50565b60008135905061378881613762565b92915050565b6000819050919050565b6137a18161378e565b81146137ac57600080fd5b50565b6000813590506137be81613798565b92915050565b600080604083850312156137db576137da61372b565b5b60006137e985828601613779565b92505060206137fa858286016137af565b9150509250929050565b60008115159050919050565b61381981613804565b82525050565b60006020820190506138346000830184613810565b92915050565b6000602082840312156138505761384f61372b565b5b600061385e84828501613779565b91505092915050565b6000819050919050565b600061388c61388761388284613730565b613867565b613730565b9050919050565b600061389e82613871565b9050919050565b60006138b082613893565b9050919050565b6138c0816138a5565b82525050565b60006020820190506138db60008301846138b7565b92915050565b6138ea8161378e565b82525050565b600060208201905061390560008301846138e1565b92915050565b6000806000606084860312156139245761392361372b565b5b600061393286828701613779565b935050602061394386828701613779565b9250506040613954868287016137af565b9150509250925092565b61396781613750565b82525050565b6000602082019050613982600083018461395e565b92915050565b600060ff82169050919050565b61399e81613988565b82525050565b60006020820190506139b96000830184613995565b92915050565b6139c881613804565b81146139d357600080fd5b50565b6000813590506139e5816139bf565b92915050565b60008060408385031215613a0257613a0161372b565b5b6000613a1085828601613779565b9250506020613a21858286016139d6565b9150509250929050565b600080600060608486031215613a4457613a4361372b565b5b6000613a52868287016137af565b9350506020613a63868287016137af565b9250506040613a74868287016137af565b9150509250925092565b60008060408385031215613a9557613a9461372b565b5b6000613aa385828601613779565b9250506020613ab485828601613779565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680613b0557607f821691505b602082108103613b1857613b17613abe565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613b5460208361367b565b9150613b5f82613b1e565b602082019050919050565b60006020820190508181036000830152613b8381613b47565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613bc48261378e565b9150613bcf8361378e565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613c0457613c03613b8a565b5b828201905092915050565b7f4d757374206b6565702066656573206174203625206f72206c65737300000000600082015250565b6000613c45601c8361367b565b9150613c5082613c0f565b602082019050919050565b60006020820190508181036000830152613c7481613c38565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b6000613cd760398361367b565b9150613ce282613c7b565b604082019050919050565b60006020820190508181036000830152613d0681613cca565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613d6960268361367b565b9150613d7482613d0d565b604082019050919050565b60006020820190508181036000830152613d9881613d5c565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613dd5601b8361367b565b9150613de082613d9f565b602082019050919050565b60006020820190508181036000830152613e0481613dc8565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613e6760248361367b565b9150613e7282613e0b565b604082019050919050565b60006020820190508181036000830152613e9681613e5a565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613ef960228361367b565b9150613f0482613e9d565b604082019050919050565b60006020820190508181036000830152613f2881613eec565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613f8b60258361367b565b9150613f9682613f2f565b604082019050919050565b60006020820190508181036000830152613fba81613f7e565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061401d60238361367b565b915061402882613fc1565b604082019050919050565b6000602082019050818103600083015261404c81614010565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b600061408960168361367b565b915061409482614053565b602082019050919050565b600060208201905081810360008301526140b88161407c565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b600061414160498361367b565b915061414c826140bf565b606082019050919050565b6000602082019050818103600083015261417081614134565b9050919050565b7f556e61626c6520746f20657863656564204d61782057616c6c65740000000000600082015250565b60006141ad601b8361367b565b91506141b882614177565b602082019050919050565b600060208201905081810360008301526141dc816141a0565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b600061423f60368361367b565b915061424a826141e3565b604082019050919050565b6000602082019050818103600083015261426e81614232565b9050919050565b60006142808261378e565b915061428b8361378e565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156142c4576142c3613b8a565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006143098261378e565b91506143148361378e565b925082614324576143236142cf565b5b828204905092915050565b600061433a8261378e565b91506143458361378e565b92508282101561435857614357613b8a565b5b828203905092915050565b600081905092915050565b50565b600061437e600083614363565b91506143898261436e565b600082019050919050565b600061439f82614371565b9150819050919050565b60006060820190506143be60008301866138e1565b6143cb60208301856138e1565b6143d860408301846138e1565b949350505050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b600061443c60218361367b565b9150614447826143e0565b604082019050919050565b6000602082019050818103600083015261446b8161442f565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000815190506144df81613762565b92915050565b6000602082840312156144fb576144fa61372b565b5b6000614509848285016144d0565b91505092915050565b6000819050919050565b600061453761453261452d84614512565b613867565b61378e565b9050919050565b6145478161451c565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61458281613750565b82525050565b60006145948383614579565b60208301905092915050565b6000602082019050919050565b60006145b88261454d565b6145c28185614558565b93506145cd83614569565b8060005b838110156145fe5781516145e58882614588565b97506145f0836145a0565b9250506001810190506145d1565b5085935050505092915050565b600060a08201905061462060008301886138e1565b61462d602083018761453e565b818103604083015261463f81866145ad565b905061464e606083018561395e565b61465b60808301846138e1565b9695505050505050565b600060c08201905061467a600083018961395e565b61468760208301886138e1565b614694604083018761453e565b6146a1606083018661453e565b6146ae608083018561395e565b6146bb60a08301846138e1565b979650505050505050565b6000815190506146d581613798565b92915050565b6000806000606084860312156146f4576146f361372b565b5b6000614702868287016146c6565b9350506020614713868287016146c6565b9250506040614724868287016146c6565b915050925092509256fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220b8f7e48642a921e9775be1f0da2f5e4e480530fe486bb775dea9687863f9847064736f6c634300080f0033
Deployed Bytecode
0x6080604052600436106102975760003560e01c80638a8c523c1161015a578063c876d0b9116100c1578063e884f2601161007a578063e884f26014610a33578063ef8700e514610a5e578063f11a24d314610a89578063f2fde38b14610ab4578063f637434214610add578063f8b45b0514610b085761029e565b8063c876d0b91461091f578063c8c8ebe41461094a578063d85ba06314610975578063da641921146109a0578063dd62ed3e146109cb578063e2f4560514610a085761029e565b8063a9059cbb11610113578063a9059cbb146107fd578063b20414111461083a578063b62496f514610865578063bbc0c742146108a2578063c0246668146108cd578063c17b5b8c146108f65761029e565b80638a8c523c146106ff5780638da5cb5b14610716578063921369131461074157806395d89b411461076c5780639a7a23d614610797578063a457c2d7146107c05761029e565b806349bd5a5e116101fe578063715018a6116101b7578063715018a614610615578063751039fc1461062c5780637571336a1461065757806375f0a874146106805780637bce5a04146106ab5780638095d564146106d65761029e565b806349bd5a5e146104ef5780634a62bb651461051a5780634fbee193146105455780636a486a8e146105825780636ddd1713146105ad57806370a08231146105d85761029e565b80631a8145bb116102505780631a8145bb146103c95780631f3fed8f146103f457806323b872dd1461041f57806327c8f8351461045c578063313ce5671461048757806339509351146104b25761029e565b806306fdde03146102a3578063095ea7b3146102ce57806310d5de531461030b5780631694505e1461034857806318160ddd1461037357806318a94cf11461039e5761029e565b3661029e57005b600080fd5b3480156102af57600080fd5b506102b8610b33565b6040516102c59190613709565b60405180910390f35b3480156102da57600080fd5b506102f560048036038101906102f091906137c4565b610bc5565b604051610302919061381f565b60405180910390f35b34801561031757600080fd5b50610332600480360381019061032d919061383a565b610be3565b60405161033f919061381f565b60405180910390f35b34801561035457600080fd5b5061035d610c03565b60405161036a91906138c6565b60405180910390f35b34801561037f57600080fd5b50610388610c27565b60405161039591906138f0565b60405180910390f35b3480156103aa57600080fd5b506103b3610c31565b6040516103c091906138f0565b60405180910390f35b3480156103d557600080fd5b506103de610c37565b6040516103eb91906138f0565b60405180910390f35b34801561040057600080fd5b50610409610c3d565b60405161041691906138f0565b60405180910390f35b34801561042b57600080fd5b506104466004803603810190610441919061390b565b610c43565b604051610453919061381f565b60405180910390f35b34801561046857600080fd5b50610471610d1c565b60405161047e919061396d565b60405180910390f35b34801561049357600080fd5b5061049c610d22565b6040516104a991906139a4565b60405180910390f35b3480156104be57600080fd5b506104d960048036038101906104d491906137c4565b610d2b565b6040516104e6919061381f565b60405180910390f35b3480156104fb57600080fd5b50610504610dde565b604051610511919061396d565b60405180910390f35b34801561052657600080fd5b5061052f610e02565b60405161053c919061381f565b60405180910390f35b34801561055157600080fd5b5061056c6004803603810190610567919061383a565b610e15565b604051610579919061381f565b60405180910390f35b34801561058e57600080fd5b50610597610e6b565b6040516105a491906138f0565b60405180910390f35b3480156105b957600080fd5b506105c2610e71565b6040516105cf919061381f565b60405180910390f35b3480156105e457600080fd5b506105ff60048036038101906105fa919061383a565b610e84565b60405161060c91906138f0565b60405180910390f35b34801561062157600080fd5b5061062a610ecc565b005b34801561063857600080fd5b50610641611024565b60405161064e919061381f565b60405180910390f35b34801561066357600080fd5b5061067e600480360381019061067991906139eb565b6110fa565b005b34801561068c57600080fd5b506106956111ec565b6040516106a2919061396d565b60405180910390f35b3480156106b757600080fd5b506106c0611212565b6040516106cd91906138f0565b60405180910390f35b3480156106e257600080fd5b506106fd60048036038101906106f89190613a2b565b611218565b005b34801561070b57600080fd5b50610714611332565b005b34801561072257600080fd5b5061072b611401565b604051610738919061396d565b60405180910390f35b34801561074d57600080fd5b5061075661142b565b60405161076391906138f0565b60405180910390f35b34801561077857600080fd5b50610781611431565b60405161078e9190613709565b60405180910390f35b3480156107a357600080fd5b506107be60048036038101906107b991906139eb565b6114c3565b005b3480156107cc57600080fd5b506107e760048036038101906107e291906137c4565b6115f6565b6040516107f4919061381f565b60405180910390f35b34801561080957600080fd5b50610824600480360381019061081f91906137c4565b6116c3565b604051610831919061381f565b60405180910390f35b34801561084657600080fd5b5061084f6116e1565b60405161085c91906138f0565b60405180910390f35b34801561087157600080fd5b5061088c6004803603810190610887919061383a565b6116e7565b604051610899919061381f565b60405180910390f35b3480156108ae57600080fd5b506108b7611707565b6040516108c4919061381f565b60405180910390f35b3480156108d957600080fd5b506108f460048036038101906108ef91906139eb565b61171a565b005b34801561090257600080fd5b5061091d60048036038101906109189190613a2b565b61185a565b005b34801561092b57600080fd5b50610934611974565b604051610941919061381f565b60405180910390f35b34801561095657600080fd5b5061095f611987565b60405161096c91906138f0565b60405180910390f35b34801561098157600080fd5b5061098a61198d565b60405161099791906138f0565b60405180910390f35b3480156109ac57600080fd5b506109b5611993565b6040516109c2919061396d565b60405180910390f35b3480156109d757600080fd5b506109f260048036038101906109ed9190613a7e565b6119b9565b6040516109ff91906138f0565b60405180910390f35b348015610a1457600080fd5b50610a1d611a40565b604051610a2a91906138f0565b60405180910390f35b348015610a3f57600080fd5b50610a48611a46565b604051610a55919061381f565b60405180910390f35b348015610a6a57600080fd5b50610a73611b01565b604051610a8091906138f0565b60405180910390f35b348015610a9557600080fd5b50610a9e611b07565b604051610aab91906138f0565b60405180910390f35b348015610ac057600080fd5b50610adb6004803603810190610ad6919061383a565b611b0d565b005b348015610ae957600080fd5b50610af2611cd3565b604051610aff91906138f0565b60405180910390f35b348015610b1457600080fd5b50610b1d611cd9565b604051610b2a91906138f0565b60405180910390f35b606060038054610b4290613aed565b80601f0160208091040260200160405190810160405280929190818152602001828054610b6e90613aed565b8015610bbb5780601f10610b9057610100808354040283529160200191610bbb565b820191906000526020600020905b815481529060010190602001808311610b9e57829003601f168201915b5050505050905090565b6000610bd9610bd2611d3d565b8484611d45565b6001905092915050565b601a6020528060005260406000206000915054906101000a900460ff1681565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600254905090565b60155481565b60175481565b60165481565b6000610c50848484611f0e565b610d1184610c5c611d3d565b610d0c8560405180606001604052806028815260200161475560289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610cc2611d3d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b609092919063ffffffff16565b611d45565b600190509392505050565b61dead81565b60006012905090565b6000610dd4610d38611d3d565b84610dcf8560016000610d49611d3d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611cdf90919063ffffffff16565b611d45565b6001905092915050565b7f000000000000000000000000e05b58e38638ca3e99868ffeb729c99a053553bc81565b600b60009054906101000a900460ff1681565b6000601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60125481565b600b60029054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610ed4611d3d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5a90613b6a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600061102e611d3d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110b490613b6a565b60405180910390fd5b6000600b60006101000a81548160ff0219169083151502179055506000600d60006101000a81548160ff0219169083151502179055506001905090565b611102611d3d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611191576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118890613b6a565b60405180910390fd5b80601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600f5481565b611220611d3d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112a690613b6a565b60405180910390fd5b82600f819055508160108190555080601181905550601154601054600f546112d79190613bb9565b6112e19190613bb9565b600e819055506006600e54111561132d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132490613c5b565b60405180910390fd5b505050565b61133a611d3d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113c090613b6a565b60405180910390fd5b6001600b60016101000a81548160ff0219169083151502179055506001600b60026101000a81548160ff021916908315150217905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60135481565b60606004805461144090613aed565b80601f016020809104026020016040519081016040528092919081815260200182805461146c90613aed565b80156114b95780601f1061148e576101008083540402835291602001916114b9565b820191906000526020600020905b81548152906001019060200180831161149c57829003601f168201915b5050505050905090565b6114cb611d3d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461155a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155190613b6a565b60405180910390fd5b7f000000000000000000000000e05b58e38638ca3e99868ffeb729c99a053553bc73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036115e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115df90613ced565b60405180910390fd5b6115f28282612bc4565b5050565b60006116b9611603611d3d565b846116b48560405180606001604052806025815260200161477d602591396001600061162d611d3d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b609092919063ffffffff16565b611d45565b6001905092915050565b60006116d76116d0611d3d565b8484611f0e565b6001905092915050565b60115481565b601b6020528060005260406000206000915054906101000a900460ff1681565b600b60019054906101000a900460ff1681565b611722611d3d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117a890613b6a565b60405180910390fd5b80601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405161184e919061381f565b60405180910390a25050565b611862611d3d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118e890613b6a565b60405180910390fd5b8260138190555081601481905550806015819055506015546014546013546119199190613bb9565b6119239190613bb9565b6012819055506064601254111561196f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161196690613c5b565b60405180910390fd5b505050565b600d60009054906101000a900460ff1681565b60085481565b600e5481565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60095481565b6000611a50611d3d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611adf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ad690613b6a565b60405180910390fd5b6000600d60006101000a81548160ff0219169083151502179055506001905090565b60185481565b60105481565b611b15611d3d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ba4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9b90613b6a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611c13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c0a90613d7f565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60145481565b600a5481565b6000808284611cee9190613bb9565b905083811015611d33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d2a90613deb565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611db4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dab90613e7d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611e23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e1a90613f0f565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611f0191906138f0565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611f7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f7490613fa1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611fec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fe390614033565b60405180910390fd5b600081036120055761200083836000612c65565b612b5b565b600b60009054906101000a900460ff161561268357612022611401565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156120905750612060611401565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156120c95750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612103575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561211c5750600560149054906101000a900460ff16155b1561268257600b60019054906101000a900460ff1661221657601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806121d65750601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612215576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161220c9061409f565b60405180910390fd5b5b600d60009054906101000a900460ff16156123de57612233611401565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156122ba57507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561231257507f000000000000000000000000e05b58e38638ca3e99868ffeb729c99a053553bc73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156123dd5743600c60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410612398576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161238f90614157565b60405180910390fd5b43600c60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156124815750601a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156124e357600a5461249283610e84565b8261249d9190613bb9565b11156124de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124d5906141c3565b60405180910390fd5b612681565b601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156125865750601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156125d5576008548111156125d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125c790614255565b60405180910390fd5b612680565b601a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661267f57600a5461263283610e84565b8261263d9190613bb9565b111561267e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612675906141c3565b60405180910390fd5b5b5b5b5b5b600061268e30610e84565b9050600060095482101590508080156126b35750600b60029054906101000a900460ff165b80156126cc5750600560149054906101000a900460ff16155b80156127225750601b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156127785750601960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156127ce5750601960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612812576001600560146101000a81548160ff0219169083151502179055506127f6612ef8565b6000600560146101000a81548160ff0219169083151502179055505b6000600560149054906101000a900460ff16159050601960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806128c85750601960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156128d257600090505b60008115612b4b57601b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561293557506000601254115b15612a02576129626064612954601254886131dc90919063ffffffff16565b61325690919063ffffffff16565b9050601254601454826129759190614275565b61297f91906142fe565b601760008282546129909190613bb9565b92505081905550601254601554826129a89190614275565b6129b291906142fe565b601860008282546129c39190613bb9565b92505081905550601254601354826129db9190614275565b6129e591906142fe565b601660008282546129f69190613bb9565b92505081905550612b27565b601b60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612a5d57506000600e54115b15612b2657612a8a6064612a7c600e54886131dc90919063ffffffff16565b61325690919063ffffffff16565b9050600e5460105482612a9d9190614275565b612aa791906142fe565b60176000828254612ab89190613bb9565b92505081905550600e5460115482612ad09190614275565b612ada91906142fe565b60186000828254612aeb9190613bb9565b92505081905550600e54600f5482612b039190614275565b612b0d91906142fe565b60166000828254612b1e9190613bb9565b925050819055505b5b6000811115612b3c57612b3b873083612c65565b5b8085612b48919061432f565b94505b612b56878787612c65565b505050505b505050565b6000838311158290612ba8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b9f9190613709565b60405180910390fd5b5060008385612bb7919061432f565b9050809150509392505050565b80601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612cd4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ccb90613fa1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612d43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d3a90614033565b60405180910390fd5b612d4e8383836132a0565b612db98160405180606001604052806026815260200161472f602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b609092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612e4c816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611cdf90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612eeb91906138f0565b60405180910390a3505050565b6000612f0330610e84565b90506000601854601654601754612f1a9190613bb9565b612f249190613bb9565b90506000821480612f355750600081145b15612f415750506131da565b600a600954612f509190614275565b8210612f6857600a600954612f659190614275565b91505b600060028260175485612f7b9190614275565b612f8591906142fe565b612f8f91906142fe565b90506000612fa682856132a590919063ffffffff16565b90506000479050612fb6826132ef565b6000612fcb82476132a590919063ffffffff16565b90506000612ff686612fe8601654856131dc90919063ffffffff16565b61325690919063ffffffff16565b9050600061302187613013601854866131dc90919063ffffffff16565b61325690919063ffffffff16565b90506000818385613032919061432f565b61303c919061432f565b90506000601781905550600060168190555060006018819055506000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168360405161309e90614394565b60006040518083038185875af1925050503d80600081146130db576040519150601f19603f3d011682016040523d82523d6000602084013e6130e0565b606091505b505090506000881180156130f45750600082115b1561314157613103888361352c565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618783601754604051613138939291906143a9565b60405180910390a15b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff164760405161318790614394565b60006040518083038185875af1925050503d80600081146131c4576040519150601f19603f3d011682016040523d82523d6000602084013e6131c9565b606091505b505080915050505050505050505050505b565b60008083036131ee5760009050613250565b600082846131fc9190614275565b905082848261320b91906142fe565b1461324b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161324290614452565b60405180910390fd5b809150505b92915050565b600061329883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061360d565b905092915050565b505050565b60006132e783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612b60565b905092915050565b6000600267ffffffffffffffff81111561330c5761330b614472565b5b60405190808252806020026020018201604052801561333a5781602001602082028036833780820191505090505b5090503081600081518110613352576133516144a1565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156133f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061341b91906144e5565b8160018151811061342f5761342e6144a1565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613494307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611d45565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016134f695949392919061460b565b600060405180830381600087803b15801561351057600080fd5b505af1158015613524573d6000803e3d6000fd5b505050505050565b613557307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611d45565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d7198230856000806135a1611401565b426040518863ffffffff1660e01b81526004016135c396959493929190614665565b60606040518083038185885af11580156135e1573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061360691906146db565b5050505050565b60008083118290613654576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161364b9190613709565b60405180910390fd5b506000838561366391906142fe565b9050809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156136aa57808201518184015260208101905061368f565b838111156136b9576000848401525b50505050565b6000601f19601f8301169050919050565b60006136db82613670565b6136e5818561367b565b93506136f581856020860161368c565b6136fe816136bf565b840191505092915050565b6000602082019050818103600083015261372381846136d0565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061375b82613730565b9050919050565b61376b81613750565b811461377657600080fd5b50565b60008135905061378881613762565b92915050565b6000819050919050565b6137a18161378e565b81146137ac57600080fd5b50565b6000813590506137be81613798565b92915050565b600080604083850312156137db576137da61372b565b5b60006137e985828601613779565b92505060206137fa858286016137af565b9150509250929050565b60008115159050919050565b61381981613804565b82525050565b60006020820190506138346000830184613810565b92915050565b6000602082840312156138505761384f61372b565b5b600061385e84828501613779565b91505092915050565b6000819050919050565b600061388c61388761388284613730565b613867565b613730565b9050919050565b600061389e82613871565b9050919050565b60006138b082613893565b9050919050565b6138c0816138a5565b82525050565b60006020820190506138db60008301846138b7565b92915050565b6138ea8161378e565b82525050565b600060208201905061390560008301846138e1565b92915050565b6000806000606084860312156139245761392361372b565b5b600061393286828701613779565b935050602061394386828701613779565b9250506040613954868287016137af565b9150509250925092565b61396781613750565b82525050565b6000602082019050613982600083018461395e565b92915050565b600060ff82169050919050565b61399e81613988565b82525050565b60006020820190506139b96000830184613995565b92915050565b6139c881613804565b81146139d357600080fd5b50565b6000813590506139e5816139bf565b92915050565b60008060408385031215613a0257613a0161372b565b5b6000613a1085828601613779565b9250506020613a21858286016139d6565b9150509250929050565b600080600060608486031215613a4457613a4361372b565b5b6000613a52868287016137af565b9350506020613a63868287016137af565b9250506040613a74868287016137af565b9150509250925092565b60008060408385031215613a9557613a9461372b565b5b6000613aa385828601613779565b9250506020613ab485828601613779565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680613b0557607f821691505b602082108103613b1857613b17613abe565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613b5460208361367b565b9150613b5f82613b1e565b602082019050919050565b60006020820190508181036000830152613b8381613b47565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613bc48261378e565b9150613bcf8361378e565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613c0457613c03613b8a565b5b828201905092915050565b7f4d757374206b6565702066656573206174203625206f72206c65737300000000600082015250565b6000613c45601c8361367b565b9150613c5082613c0f565b602082019050919050565b60006020820190508181036000830152613c7481613c38565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b6000613cd760398361367b565b9150613ce282613c7b565b604082019050919050565b60006020820190508181036000830152613d0681613cca565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613d6960268361367b565b9150613d7482613d0d565b604082019050919050565b60006020820190508181036000830152613d9881613d5c565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613dd5601b8361367b565b9150613de082613d9f565b602082019050919050565b60006020820190508181036000830152613e0481613dc8565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613e6760248361367b565b9150613e7282613e0b565b604082019050919050565b60006020820190508181036000830152613e9681613e5a565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613ef960228361367b565b9150613f0482613e9d565b604082019050919050565b60006020820190508181036000830152613f2881613eec565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613f8b60258361367b565b9150613f9682613f2f565b604082019050919050565b60006020820190508181036000830152613fba81613f7e565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061401d60238361367b565b915061402882613fc1565b604082019050919050565b6000602082019050818103600083015261404c81614010565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b600061408960168361367b565b915061409482614053565b602082019050919050565b600060208201905081810360008301526140b88161407c565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b600061414160498361367b565b915061414c826140bf565b606082019050919050565b6000602082019050818103600083015261417081614134565b9050919050565b7f556e61626c6520746f20657863656564204d61782057616c6c65740000000000600082015250565b60006141ad601b8361367b565b91506141b882614177565b602082019050919050565b600060208201905081810360008301526141dc816141a0565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b600061423f60368361367b565b915061424a826141e3565b604082019050919050565b6000602082019050818103600083015261426e81614232565b9050919050565b60006142808261378e565b915061428b8361378e565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156142c4576142c3613b8a565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006143098261378e565b91506143148361378e565b925082614324576143236142cf565b5b828204905092915050565b600061433a8261378e565b91506143458361378e565b92508282101561435857614357613b8a565b5b828203905092915050565b600081905092915050565b50565b600061437e600083614363565b91506143898261436e565b600082019050919050565b600061439f82614371565b9150819050919050565b60006060820190506143be60008301866138e1565b6143cb60208301856138e1565b6143d860408301846138e1565b949350505050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b600061443c60218361367b565b9150614447826143e0565b604082019050919050565b6000602082019050818103600083015261446b8161442f565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000815190506144df81613762565b92915050565b6000602082840312156144fb576144fa61372b565b5b6000614509848285016144d0565b91505092915050565b6000819050919050565b600061453761453261452d84614512565b613867565b61378e565b9050919050565b6145478161451c565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61458281613750565b82525050565b60006145948383614579565b60208301905092915050565b6000602082019050919050565b60006145b88261454d565b6145c28185614558565b93506145cd83614569565b8060005b838110156145fe5781516145e58882614588565b97506145f0836145a0565b9250506001810190506145d1565b5085935050505092915050565b600060a08201905061462060008301886138e1565b61462d602083018761453e565b818103604083015261463f81866145ad565b905061464e606083018561395e565b61465b60808301846138e1565b9695505050505050565b600060c08201905061467a600083018961395e565b61468760208301886138e1565b614694604083018761453e565b6146a1606083018661453e565b6146ae608083018561395e565b6146bb60a08301846138e1565b979650505050505050565b6000815190506146d581613798565b92915050565b6000806000606084860312156146f4576146f361372b565b5b6000614702868287016146c6565b9350506020614713868287016146c6565b9250506040614724868287016146c6565b915050925092509256fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220b8f7e48642a921e9775be1f0da2f5e4e480530fe486bb775dea9687863f9847064736f6c634300080f0033
Deployed Bytecode Sourcemap
17317:12541:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5040:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5954:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18519:64;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17392:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5361:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18293:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18375;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18335;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6131:355;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17495:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5260:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6494:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17450:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17790:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23457:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18182:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17870:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5477:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10887:148;;;;;;;;;;;;;:::i;:::-;;21510:159;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21823:144;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17587:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18067;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21979:404;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21390:112;;;;;;;;;;;;;:::i;:::-;;10673:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18217:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5148:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23003:246;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6720:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5612:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18141:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18590:58;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17830:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22813:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22395:410;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17985:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17675:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18033:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17624:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5795:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17717:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21677:134;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18415:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18104:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11043:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18255:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17757:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5040:100;5094:13;5127:5;5120:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5040:100;:::o;5954:169::-;6037:4;6054:39;6063:12;:10;:12::i;:::-;6077:7;6086:6;6054:8;:39::i;:::-;6111:4;6104:11;;5954:169;;;;:::o;18519:64::-;;;;;;;;;;;;;;;;;;;;;;:::o;17392:51::-;;;:::o;5361:108::-;5422:7;5449:12;;5442:19;;5361:108;:::o;18293:33::-;;;;:::o;18375:::-;;;;:::o;18335:::-;;;;:::o;6131:355::-;6271:4;6288:36;6298:6;6306:9;6317:6;6288:9;:36::i;:::-;6335:121;6344:6;6352:12;:10;:12::i;:::-;6366:89;6404:6;6366:89;;;;;;;;;;;;;;;;;:11;:19;6378:6;6366:19;;;;;;;;;;;;;;;:33;6386:12;:10;:12::i;:::-;6366:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;6335:8;:121::i;:::-;6474:4;6467:11;;6131:355;;;;;:::o;17495:53::-;17541:6;17495:53;:::o;5260:93::-;5318:5;5343:2;5336:9;;5260:93;:::o;6494:218::-;6582:4;6599:83;6608:12;:10;:12::i;:::-;6622:7;6631:50;6670:10;6631:11;:25;6643:12;:10;:12::i;:::-;6631:25;;;;;;;;;;;;;;;:34;6657:7;6631:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;6599:8;:83::i;:::-;6700:4;6693:11;;6494:218;;;;:::o;17450:38::-;;;:::o;17790:33::-;;;;;;;;;;;;;:::o;23457:127::-;23524:4;23548:19;:28;23568:7;23548:28;;;;;;;;;;;;;;;;;;;;;;;;;23541:35;;23457:127;;;:::o;18182:28::-;;;;:::o;17870:31::-;;;;;;;;;;;;;:::o;5477:127::-;5551:7;5578:9;:18;5588:7;5578:18;;;;;;;;;;;;;;;;5571:25;;5477:127;;;:::o;10887:148::-;10810:12;:10;:12::i;:::-;10800:22;;:6;;;;;;;;;;;:22;;;10792:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10994:1:::1;10957:40;;10978:6;;;;;;;;;;;10957:40;;;;;;;;;;;;11025:1;11008:6;;:19;;;;;;;;;;;;;;;;;;10887:148::o:0;21510:159::-;21562:4;10810:12;:10;:12::i;:::-;10800:22;;:6;;;;;;;;;;;:22;;;10792:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21595:5:::1;21578:14;;:22;;;;;;;;;;;;;;;;;;21634:5;21611:20;;:28;;;;;;;;;;;;;;;;;;21657:4;21650:11;;21510:159:::0;:::o;21823:144::-;10810:12;:10;:12::i;:::-;10800:22;;:6;;;;;;;;;;;:22;;;10792:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21955:4:::1;21913:31;:39;21945:6;21913:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;21823:144:::0;;:::o;17587:30::-;;;;;;;;;;;;;:::o;18067:::-;;;;:::o;21979:404::-;10810:12;:10;:12::i;:::-;10800:22;;:6;;;;;;;;;;;:22;;;10792:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22126:13:::1;22108:15;:31;;;;22168:13;22150:15;:31;;;;22212:15;22192:17;:35;;;;22289:17;;22271:15;;22253;;:33;;;;:::i;:::-;:53;;;;:::i;:::-;22238:12;:68;;;;22341:1;22325:12;;:17;;22317:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;21979:404:::0;;;:::o;21390:112::-;10810:12;:10;:12::i;:::-;10800:22;;:6;;;;;;;;;;;:22;;;10792:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21461:4:::1;21445:13;;:20;;;;;;;;;;;;;;;;;;21490:4;21476:11;;:18;;;;;;;;;;;;;;;;;;21390:112::o:0;10673:79::-;10711:7;10738:6;;;;;;;;;;;10731:13;;10673:79;:::o;18217:31::-;;;;:::o;5148:104::-;5204:13;5237:7;5230:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5148:104;:::o;23003:246::-;10810:12;:10;:12::i;:::-;10800:22;;:6;;;;;;;;;;;:22;;;10792:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23112:13:::1;23104:21;;:4;:21;;::::0;23096:91:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;23200:41;23229:4;23235:5;23200:28;:41::i;:::-;23003:246:::0;;:::o;6720:269::-;6813:4;6830:129;6839:12;:10;:12::i;:::-;6853:7;6862:96;6901:15;6862:96;;;;;;;;;;;;;;;;;:11;:25;6874:12;:10;:12::i;:::-;6862:25;;;;;;;;;;;;;;;:34;6888:7;6862:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;6830:8;:129::i;:::-;6977:4;6970:11;;6720:269;;;;:::o;5612:175::-;5698:4;5715:42;5725:12;:10;:12::i;:::-;5739:9;5750:6;5715:9;:42::i;:::-;5775:4;5768:11;;5612:175;;;;:::o;18141:32::-;;;;:::o;18590:58::-;;;;;;;;;;;;;;;;;;;;;;:::o;17830:33::-;;;;;;;;;;;;;:::o;22813:182::-;10810:12;:10;:12::i;:::-;10800:22;;:6;;;;;;;;;;;:22;;;10792:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22929:8:::1;22898:19;:28;22918:7;22898:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;22969:7;22953:34;;;22978:8;22953:34;;;;;;:::i;:::-;;;;;;;;22813:182:::0;;:::o;22395:410::-;10810:12;:10;:12::i;:::-;10800:22;;:6;;;;;;;;;;;:22;;;10792:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22539:13:::1;22520:16;:32;;;;22582:13;22563:16;:32;;;;22627:15;22606:18;:36;;;;22707:18;;22688:16;;22669;;:35;;;;:::i;:::-;:56;;;;:::i;:::-;22653:13;:72;;;;22761:3;22744:13;;:20;;22736:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;22395:410:::0;;;:::o;17985:39::-;;;;;;;;;;;;;:::o;17675:35::-;;;;:::o;18033:27::-;;;;:::o;17624:38::-;;;;;;;;;;;;;:::o;5795:151::-;5884:7;5911:11;:18;5923:5;5911:18;;;;;;;;;;;;;;;:27;5930:7;5911:27;;;;;;;;;;;;;;;;5904:34;;5795:151;;;;:::o;17717:33::-;;;;:::o;21677:134::-;21737:4;10810:12;:10;:12::i;:::-;10800:22;;:6;;;;;;;;;;;:22;;;10792:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21776:5:::1;21753:20;;:28;;;;;;;;;;;;;;;;;;21799:4;21792:11;;21677:134:::0;:::o;18415:35::-;;;;:::o;18104:30::-;;;;:::o;11043:244::-;10810:12;:10;:12::i;:::-;10800:22;;:6;;;;;;;;;;;:22;;;10792:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11152:1:::1;11132:22;;:8;:22;;::::0;11124:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;11242:8;11213:38;;11234:6;;;;;;;;;;;11213:38;;;;;;;;;;;;11271:8;11262:6;;:17;;;;;;;;;;;;;;;;;;11043:244:::0;:::o;18255:31::-;;;;:::o;17757:24::-;;;;:::o;8922:179::-;8980:7;9000:9;9016:1;9012;:5;;;;:::i;:::-;9000:17;;9041:1;9036;:6;;9028:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;9092:1;9085:8;;;8922:179;;;;:::o;311:98::-;364:7;391:10;384:17;;311:98;:::o;8378:378::-;8531:1;8514:19;;:5;:19;;;8506:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8612:1;8593:21;;:7;:21;;;8585:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8694:6;8664:11;:18;8676:5;8664:18;;;;;;;;;;;;;;;:27;8683:7;8664:27;;;;;;;;;;;;;;;:36;;;;8732:7;8716:32;;8725:5;8716:32;;;8741:6;8716:32;;;;;;:::i;:::-;;;;;;;;8378:378;;;:::o;23596:3714::-;23744:1;23728:18;;:4;:18;;;23720:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23821:1;23807:16;;:2;:16;;;23799:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;23898:1;23888:6;:11;23885:92;;23916:28;23932:4;23938:2;23942:1;23916:15;:28::i;:::-;23959:7;;23885:92;24000:14;;;;;;;;;;;23997:1579;;;24060:7;:5;:7::i;:::-;24052:15;;:4;:15;;;;:50;;;;;24095:7;:5;:7::i;:::-;24089:13;;:2;:13;;;;24052:50;:88;;;;;24138:1;24124:16;;:2;:16;;;;24052:88;:130;;;;;24175:6;24161:21;;:2;:21;;;;24052:130;:160;;;;;24204:8;;;;;;;;;;;24203:9;24052:160;24030:1535;;;24251:13;;;;;;;;;;;24247:148;;24296:19;:25;24316:4;24296:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;24325:19;:23;24345:2;24325:23;;;;;;;;;;;;;;;;;;;;;;;;;24296:52;24288:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;24247:148;24419:20;;;;;;;;;;;24415:423;;;24473:7;:5;:7::i;:::-;24467:13;;:2;:13;;;;:47;;;;;24498:15;24484:30;;:2;:30;;;;24467:47;:79;;;;;24532:13;24518:28;;:2;:28;;;;24467:79;24463:356;;;24624:12;24582:28;:39;24611:9;24582:39;;;;;;;;;;;;;;;;:54;24574:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;24783:12;24741:28;:39;24770:9;24741:39;;;;;;;;;;;;;;;:54;;;;24463:356;24415:423;24907:25;:31;24933:4;24907:31;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;24943:31;:35;24975:2;24943:35;;;;;;;;;;;;;;;;;;;;;;;;;24942:36;24907:71;24903:647;;;25037:9;;25020:13;25030:2;25020:9;:13::i;:::-;25011:6;:22;;;;:::i;:::-;:35;;25003:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;24903:647;;;25155:25;:29;25181:2;25155:29;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;25189:31;:37;25221:4;25189:37;;;;;;;;;;;;;;;;;;;;;;;;;25188:38;25155:71;25151:399;;;25269:20;;25259:6;:30;;25251:97;;;;;;;;;;;;:::i;:::-;;;;;;;;;25151:399;;;25395:31;:35;25427:2;25395:35;;;;;;;;;;;;;;;;;;;;;;;;;25391:159;;25489:9;;25472:13;25482:2;25472:9;:13::i;:::-;25463:6;:22;;;;:::i;:::-;:35;;25455:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;25391:159;25151:399;24903:647;24030:1535;23997:1579;25590:28;25621:24;25639:4;25621:9;:24::i;:::-;25590:55;;25666:12;25705:18;;25681:20;:42;;25666:57;;25754:7;:35;;;;;25778:11;;;;;;;;;;;25754:35;:61;;;;;25807:8;;;;;;;;;;;25806:9;25754:61;:110;;;;;25833:25;:31;25859:4;25833:31;;;;;;;;;;;;;;;;;;;;;;;;;25832:32;25754:110;:153;;;;;25882:19;:25;25902:4;25882:25;;;;;;;;;;;;;;;;;;;;;;;;;25881:26;25754:153;:194;;;;;25925:19;:23;25945:2;25925:23;;;;;;;;;;;;;;;;;;;;;;;;;25924:24;25754:194;25736:338;;;25986:4;25975:8;;:15;;;;;;;;;;;;;;;;;;26019:10;:8;:10::i;:::-;26057:5;26046:8;;:16;;;;;;;;;;;;;;;;;;25736:338;26094:12;26110:8;;;;;;;;;;;26109:9;26094:24;;26134:19;:25;26154:4;26134:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;26163:19;:23;26183:2;26163:23;;;;;;;;;;;;;;;;;;;;;;;;;26134:52;26131:99;;;26213:5;26203:15;;26131:99;26250:12;26280:7;26277:980;;;26321:25;:29;26347:2;26321:29;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;26370:1;26354:13;;:17;26321:50;26317:771;;;26398:34;26428:3;26398:25;26409:13;;26398:6;:10;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;26391:41;;26499:13;;26480:16;;26473:4;:23;;;;:::i;:::-;:39;;;;:::i;:::-;26451:18;;:61;;;;;;;:::i;:::-;;;;;;;;26583:13;;26562:18;;26555:4;:25;;;;:::i;:::-;:41;;;;:::i;:::-;26531:20;;:65;;;;;;;:::i;:::-;;;;;;;;26663:13;;26644:16;;26637:4;:23;;;;:::i;:::-;:39;;;;:::i;:::-;26615:18;;:61;;;;;;;:::i;:::-;;;;;;;;26317:771;;;26728:25;:31;26754:4;26728:31;;;;;;;;;;;;;;;;;;;;;;;;;:51;;;;;26778:1;26763:12;;:16;26728:51;26725:363;;;26804:33;26833:3;26804:24;26815:12;;26804:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;26797:40;;26900:12;;26882:15;;26875:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;26853:18;;:59;;;;;;;:::i;:::-;;;;;;;;26982:12;;26962:17;;26955:4;:24;;;;:::i;:::-;:39;;;;:::i;:::-;26931:20;;:63;;;;;;;:::i;:::-;;;;;;;;27060:12;;27042:15;;27035:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;27013:18;;:59;;;;;;;:::i;:::-;;;;;;;;26725:363;26317:771;27126:1;27119:4;:8;27116:93;;;27151:42;27167:4;27181;27188;27151:15;:42::i;:::-;27116:93;27241:4;27231:14;;;;;:::i;:::-;;;26277:980;27269:33;27285:4;27291:2;27295:6;27269:15;:33::i;:::-;23709:3601;;;;23596:3714;;;;:::o;9253:190::-;9339:7;9372:1;9367;:6;;9375:12;9359:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;9399:9;9415:1;9411;:5;;;;:::i;:::-;9399:17;;9434:1;9427:8;;;9253:190;;;;;:::o;23261:188::-;23378:5;23344:25;:31;23370:4;23344:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;23435:5;23401:40;;23429:4;23401:40;;;;;;;;;;;;23261:188;;:::o;6997:569::-;7155:1;7137:20;;:6;:20;;;7129:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;7239:1;7218:23;;:9;:23;;;7210:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;7292:47;7313:6;7321:9;7332:6;7292:20;:47::i;:::-;7370:71;7392:6;7370:71;;;;;;;;;;;;;;;;;:9;:17;7380:6;7370:17;;;;;;;;;;;;;;;;:21;;:71;;;;;:::i;:::-;7350:9;:17;7360:6;7350:17;;;;;;;;;;;;;;;:91;;;;7475:32;7500:6;7475:9;:20;7485:9;7475:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;7452:9;:20;7462:9;7452:20;;;;;;;;;;;;;;;:55;;;;7540:9;7523:35;;7532:6;7523:35;;;7551:6;7523:35;;;;;;:::i;:::-;;;;;;;;6997:569;;;:::o;28192:1663::-;28231:23;28257:24;28275:4;28257:9;:24::i;:::-;28231:50;;28292:25;28362:20;;28341:18;;28320;;:39;;;;:::i;:::-;:62;;;;:::i;:::-;28292:90;;28425:1;28406:15;:20;:46;;;;28451:1;28430:17;:22;28406:46;28403:60;;;28455:7;;;;28403:60;28518:2;28497:18;;:23;;;;:::i;:::-;28478:15;:42;28475:114;;28575:2;28554:18;;:23;;;;:::i;:::-;28536:41;;28475:114;28609:23;28694:1;28674:17;28653:18;;28635:15;:36;;;;:::i;:::-;:56;;;;:::i;:::-;:60;;;;:::i;:::-;28609:86;;28706:26;28735:36;28755:15;28735;:19;;:36;;;;:::i;:::-;28706:65;;28792:25;28820:21;28792:49;;28854:36;28871:18;28854:16;:36::i;:::-;28912:18;28933:44;28959:17;28933:21;:25;;:44;;;;:::i;:::-;28912:65;;28998:23;29024:57;29063:17;29024:34;29039:18;;29024:10;:14;;:34;;;;:::i;:::-;:38;;:57;;;;:::i;:::-;28998:83;;29092:25;29120:59;29161:17;29120:36;29135:20;;29120:10;:14;;:36;;;;:::i;:::-;:40;;:59;;;;:::i;:::-;29092:87;;29210:23;29267:17;29249:15;29236:10;:28;;;;:::i;:::-;:48;;;;:::i;:::-;29210:74;;29336:1;29315:18;:22;;;;29369:1;29348:18;:22;;;;29404:1;29381:20;:24;;;;29429:12;29454:23;;;;;;;;;;;29446:37;;29491:17;29446:67;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29428:85;;;29555:1;29537:15;:19;:42;;;;;29578:1;29560:15;:19;29537:42;29534:210;;;29595:46;29608:15;29625;29595:12;:46::i;:::-;29661:71;29676:18;29696:15;29713:18;;29661:71;;;;;;;;:::i;:::-;;;;;;;;29534:210;29785:15;;;;;;;;;;;29777:29;;29814:21;29777:63;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29764:76;;;;;28220:1635;;;;;;;;;;28192:1663;:::o;9451:246::-;9509:7;9538:1;9533;:6;9529:47;;9563:1;9556:8;;;;9529:47;9586:9;9602:1;9598;:5;;;;:::i;:::-;9586:17;;9631:1;9626;9622;:5;;;;:::i;:::-;:10;9614:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;9688:1;9681:8;;;9451:246;;;;;:::o;9705:132::-;9763:7;9790:39;9794:1;9797;9790:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;9783:46;;9705:132;;;;:::o;8764:125::-;;;;:::o;9109:136::-;9167:7;9194:43;9198:1;9201;9194:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;9187:50;;9109:136;;;;:::o;27318:488::-;27386:21;27424:1;27410:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27386:40;;27455:4;27437;27442:1;27437:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;27481:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27471:4;27476:1;27471:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;27516:62;27533:4;27548:15;27566:11;27516:8;:62::i;:::-;27591:15;:66;;;27672:11;27698:1;27715:4;27742;27762:15;27591:197;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27373:433;27318:488;:::o;27818:366::-;27901:62;27918:4;27933:15;27951:11;27901:8;:62::i;:::-;27976:15;:31;;;28015:9;28048:4;28068:11;28094:1;28111;28128:7;:5;:7::i;:::-;28150:15;27976:200;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;27818:366;;:::o;9845:189::-;9931:7;9963:1;9959;:5;9966:12;9951:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;9990:9;10006:1;10002;:5;;;;:::i;:::-;9990:17;;10025:1;10018:8;;;9845:189;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:307::-;355:1;365:113;379:6;376:1;373:13;365:113;;;464:1;459:3;455:11;449:18;445:1;440:3;436:11;429:39;401:2;398:1;394:10;389:15;;365:113;;;496:6;493:1;490:13;487:101;;;576:1;567:6;562:3;558:16;551:27;487:101;336:258;287:307;;;:::o;600:102::-;641:6;692:2;688:7;683:2;676:5;672:14;668:28;658:38;;600:102;;;:::o;708:364::-;796:3;824:39;857:5;824:39;:::i;:::-;879:71;943:6;938:3;879:71;:::i;:::-;872:78;;959:52;1004:6;999:3;992:4;985:5;981:16;959:52;:::i;:::-;1036:29;1058:6;1036:29;:::i;:::-;1031:3;1027:39;1020:46;;800:272;708:364;;;;:::o;1078:313::-;1191:4;1229:2;1218:9;1214:18;1206:26;;1278:9;1272:4;1268:20;1264:1;1253:9;1249:17;1242:47;1306:78;1379:4;1370:6;1306:78;:::i;:::-;1298:86;;1078:313;;;;:::o;1478:117::-;1587:1;1584;1577:12;1724:126;1761:7;1801:42;1794:5;1790:54;1779:65;;1724:126;;;:::o;1856:96::-;1893:7;1922:24;1940:5;1922:24;:::i;:::-;1911:35;;1856:96;;;:::o;1958:122::-;2031:24;2049:5;2031:24;:::i;:::-;2024:5;2021:35;2011:63;;2070:1;2067;2060:12;2011:63;1958:122;:::o;2086:139::-;2132:5;2170:6;2157:20;2148:29;;2186:33;2213:5;2186:33;:::i;:::-;2086:139;;;;:::o;2231:77::-;2268:7;2297:5;2286:16;;2231:77;;;:::o;2314:122::-;2387:24;2405:5;2387:24;:::i;:::-;2380:5;2377:35;2367:63;;2426:1;2423;2416:12;2367:63;2314:122;:::o;2442:139::-;2488:5;2526:6;2513:20;2504:29;;2542:33;2569:5;2542:33;:::i;:::-;2442:139;;;;:::o;2587:474::-;2655:6;2663;2712:2;2700:9;2691:7;2687:23;2683:32;2680:119;;;2718:79;;:::i;:::-;2680:119;2838:1;2863:53;2908:7;2899:6;2888:9;2884:22;2863:53;:::i;:::-;2853:63;;2809:117;2965:2;2991:53;3036:7;3027:6;3016:9;3012:22;2991:53;:::i;:::-;2981:63;;2936:118;2587:474;;;;;:::o;3067:90::-;3101:7;3144:5;3137:13;3130:21;3119:32;;3067:90;;;:::o;3163:109::-;3244:21;3259:5;3244:21;:::i;:::-;3239:3;3232:34;3163:109;;:::o;3278:210::-;3365:4;3403:2;3392:9;3388:18;3380:26;;3416:65;3478:1;3467:9;3463:17;3454:6;3416:65;:::i;:::-;3278:210;;;;:::o;3494:329::-;3553:6;3602:2;3590:9;3581:7;3577:23;3573:32;3570:119;;;3608:79;;:::i;:::-;3570:119;3728:1;3753:53;3798:7;3789:6;3778:9;3774:22;3753:53;:::i;:::-;3743:63;;3699:117;3494:329;;;;:::o;3829:60::-;3857:3;3878:5;3871:12;;3829:60;;;:::o;3895:142::-;3945:9;3978:53;3996:34;4005:24;4023:5;4005:24;:::i;:::-;3996:34;:::i;:::-;3978:53;:::i;:::-;3965:66;;3895:142;;;:::o;4043:126::-;4093:9;4126:37;4157:5;4126:37;:::i;:::-;4113:50;;4043:126;;;:::o;4175:153::-;4252:9;4285:37;4316:5;4285:37;:::i;:::-;4272:50;;4175:153;;;:::o;4334:185::-;4448:64;4506:5;4448:64;:::i;:::-;4443:3;4436:77;4334:185;;:::o;4525:276::-;4645:4;4683:2;4672:9;4668:18;4660:26;;4696:98;4791:1;4780:9;4776:17;4767:6;4696:98;:::i;:::-;4525:276;;;;:::o;4807:118::-;4894:24;4912:5;4894:24;:::i;:::-;4889:3;4882:37;4807:118;;:::o;4931:222::-;5024:4;5062:2;5051:9;5047:18;5039:26;;5075:71;5143:1;5132:9;5128:17;5119:6;5075:71;:::i;:::-;4931:222;;;;:::o;5159:619::-;5236:6;5244;5252;5301:2;5289:9;5280:7;5276:23;5272:32;5269:119;;;5307:79;;:::i;:::-;5269:119;5427:1;5452:53;5497:7;5488:6;5477:9;5473:22;5452:53;:::i;:::-;5442:63;;5398:117;5554:2;5580:53;5625:7;5616:6;5605:9;5601:22;5580:53;:::i;:::-;5570:63;;5525:118;5682:2;5708:53;5753:7;5744:6;5733:9;5729:22;5708:53;:::i;:::-;5698:63;;5653:118;5159:619;;;;;:::o;5784:118::-;5871:24;5889:5;5871:24;:::i;:::-;5866:3;5859:37;5784:118;;:::o;5908:222::-;6001:4;6039:2;6028:9;6024:18;6016:26;;6052:71;6120:1;6109:9;6105:17;6096:6;6052:71;:::i;:::-;5908:222;;;;:::o;6136:86::-;6171:7;6211:4;6204:5;6200:16;6189:27;;6136:86;;;:::o;6228:112::-;6311:22;6327:5;6311:22;:::i;:::-;6306:3;6299:35;6228:112;;:::o;6346:214::-;6435:4;6473:2;6462:9;6458:18;6450:26;;6486:67;6550:1;6539:9;6535:17;6526:6;6486:67;:::i;:::-;6346:214;;;;:::o;6566:116::-;6636:21;6651:5;6636:21;:::i;:::-;6629:5;6626:32;6616:60;;6672:1;6669;6662:12;6616:60;6566:116;:::o;6688:133::-;6731:5;6769:6;6756:20;6747:29;;6785:30;6809:5;6785:30;:::i;:::-;6688:133;;;;:::o;6827:468::-;6892:6;6900;6949:2;6937:9;6928:7;6924:23;6920:32;6917:119;;;6955:79;;:::i;:::-;6917:119;7075:1;7100:53;7145:7;7136:6;7125:9;7121:22;7100:53;:::i;:::-;7090:63;;7046:117;7202:2;7228:50;7270:7;7261:6;7250:9;7246:22;7228:50;:::i;:::-;7218:60;;7173:115;6827:468;;;;;:::o;7301:619::-;7378:6;7386;7394;7443:2;7431:9;7422:7;7418:23;7414:32;7411:119;;;7449:79;;:::i;:::-;7411:119;7569:1;7594:53;7639:7;7630:6;7619:9;7615:22;7594:53;:::i;:::-;7584:63;;7540:117;7696:2;7722:53;7767:7;7758:6;7747:9;7743:22;7722:53;:::i;:::-;7712:63;;7667:118;7824:2;7850:53;7895:7;7886:6;7875:9;7871:22;7850:53;:::i;:::-;7840:63;;7795:118;7301:619;;;;;:::o;7926:474::-;7994:6;8002;8051:2;8039:9;8030:7;8026:23;8022:32;8019:119;;;8057:79;;:::i;:::-;8019:119;8177:1;8202:53;8247:7;8238:6;8227:9;8223:22;8202:53;:::i;:::-;8192:63;;8148:117;8304:2;8330:53;8375:7;8366:6;8355:9;8351:22;8330:53;:::i;:::-;8320:63;;8275:118;7926:474;;;;;:::o;8406:180::-;8454:77;8451:1;8444:88;8551:4;8548:1;8541:15;8575:4;8572:1;8565:15;8592:320;8636:6;8673:1;8667:4;8663:12;8653:22;;8720:1;8714:4;8710:12;8741:18;8731:81;;8797:4;8789:6;8785:17;8775:27;;8731:81;8859:2;8851:6;8848:14;8828:18;8825:38;8822:84;;8878:18;;:::i;:::-;8822:84;8643:269;8592:320;;;:::o;8918:182::-;9058:34;9054:1;9046:6;9042:14;9035:58;8918:182;:::o;9106:366::-;9248:3;9269:67;9333:2;9328:3;9269:67;:::i;:::-;9262:74;;9345:93;9434:3;9345:93;:::i;:::-;9463:2;9458:3;9454:12;9447:19;;9106:366;;;:::o;9478:419::-;9644:4;9682:2;9671:9;9667:18;9659:26;;9731:9;9725:4;9721:20;9717:1;9706:9;9702:17;9695:47;9759:131;9885:4;9759:131;:::i;:::-;9751:139;;9478:419;;;:::o;9903:180::-;9951:77;9948:1;9941:88;10048:4;10045:1;10038:15;10072:4;10069:1;10062:15;10089:305;10129:3;10148:20;10166:1;10148:20;:::i;:::-;10143:25;;10182:20;10200:1;10182:20;:::i;:::-;10177:25;;10336:1;10268:66;10264:74;10261:1;10258:81;10255:107;;;10342:18;;:::i;:::-;10255:107;10386:1;10383;10379:9;10372:16;;10089:305;;;;:::o;10400:178::-;10540:30;10536:1;10528:6;10524:14;10517:54;10400:178;:::o;10584:366::-;10726:3;10747:67;10811:2;10806:3;10747:67;:::i;:::-;10740:74;;10823:93;10912:3;10823:93;:::i;:::-;10941:2;10936:3;10932:12;10925:19;;10584:366;;;:::o;10956:419::-;11122:4;11160:2;11149:9;11145:18;11137:26;;11209:9;11203:4;11199:20;11195:1;11184:9;11180:17;11173:47;11237:131;11363:4;11237:131;:::i;:::-;11229:139;;10956:419;;;:::o;11381:244::-;11521:34;11517:1;11509:6;11505:14;11498:58;11590:27;11585:2;11577:6;11573:15;11566:52;11381:244;:::o;11631:366::-;11773:3;11794:67;11858:2;11853:3;11794:67;:::i;:::-;11787:74;;11870:93;11959:3;11870:93;:::i;:::-;11988:2;11983:3;11979:12;11972:19;;11631:366;;;:::o;12003:419::-;12169:4;12207:2;12196:9;12192:18;12184:26;;12256:9;12250:4;12246:20;12242:1;12231:9;12227:17;12220:47;12284:131;12410:4;12284:131;:::i;:::-;12276:139;;12003:419;;;:::o;12428:225::-;12568:34;12564:1;12556:6;12552:14;12545:58;12637:8;12632:2;12624:6;12620:15;12613:33;12428:225;:::o;12659:366::-;12801:3;12822:67;12886:2;12881:3;12822:67;:::i;:::-;12815:74;;12898:93;12987:3;12898:93;:::i;:::-;13016:2;13011:3;13007:12;13000:19;;12659:366;;;:::o;13031:419::-;13197:4;13235:2;13224:9;13220:18;13212:26;;13284:9;13278:4;13274:20;13270:1;13259:9;13255:17;13248:47;13312:131;13438:4;13312:131;:::i;:::-;13304:139;;13031:419;;;:::o;13456:177::-;13596:29;13592:1;13584:6;13580:14;13573:53;13456:177;:::o;13639:366::-;13781:3;13802:67;13866:2;13861:3;13802:67;:::i;:::-;13795:74;;13878:93;13967:3;13878:93;:::i;:::-;13996:2;13991:3;13987:12;13980:19;;13639:366;;;:::o;14011:419::-;14177:4;14215:2;14204:9;14200:18;14192:26;;14264:9;14258:4;14254:20;14250:1;14239:9;14235:17;14228:47;14292:131;14418:4;14292:131;:::i;:::-;14284:139;;14011:419;;;:::o;14436:223::-;14576:34;14572:1;14564:6;14560:14;14553:58;14645:6;14640:2;14632:6;14628:15;14621:31;14436:223;:::o;14665:366::-;14807:3;14828:67;14892:2;14887:3;14828:67;:::i;:::-;14821:74;;14904:93;14993:3;14904:93;:::i;:::-;15022:2;15017:3;15013:12;15006:19;;14665:366;;;:::o;15037:419::-;15203:4;15241:2;15230:9;15226:18;15218:26;;15290:9;15284:4;15280:20;15276:1;15265:9;15261:17;15254:47;15318:131;15444:4;15318:131;:::i;:::-;15310:139;;15037:419;;;:::o;15462:221::-;15602:34;15598:1;15590:6;15586:14;15579:58;15671:4;15666:2;15658:6;15654:15;15647:29;15462:221;:::o;15689:366::-;15831:3;15852:67;15916:2;15911:3;15852:67;:::i;:::-;15845:74;;15928:93;16017:3;15928:93;:::i;:::-;16046:2;16041:3;16037:12;16030:19;;15689:366;;;:::o;16061:419::-;16227:4;16265:2;16254:9;16250:18;16242:26;;16314:9;16308:4;16304:20;16300:1;16289:9;16285:17;16278:47;16342:131;16468:4;16342:131;:::i;:::-;16334:139;;16061:419;;;:::o;16486:224::-;16626:34;16622:1;16614:6;16610:14;16603:58;16695:7;16690:2;16682:6;16678:15;16671:32;16486:224;:::o;16716:366::-;16858:3;16879:67;16943:2;16938:3;16879:67;:::i;:::-;16872:74;;16955:93;17044:3;16955:93;:::i;:::-;17073:2;17068:3;17064:12;17057:19;;16716:366;;;:::o;17088:419::-;17254:4;17292:2;17281:9;17277:18;17269:26;;17341:9;17335:4;17331:20;17327:1;17316:9;17312:17;17305:47;17369:131;17495:4;17369:131;:::i;:::-;17361:139;;17088:419;;;:::o;17513:222::-;17653:34;17649:1;17641:6;17637:14;17630:58;17722:5;17717:2;17709:6;17705:15;17698:30;17513:222;:::o;17741:366::-;17883:3;17904:67;17968:2;17963:3;17904:67;:::i;:::-;17897:74;;17980:93;18069:3;17980:93;:::i;:::-;18098:2;18093:3;18089:12;18082:19;;17741:366;;;:::o;18113:419::-;18279:4;18317:2;18306:9;18302:18;18294:26;;18366:9;18360:4;18356:20;18352:1;18341:9;18337:17;18330:47;18394:131;18520:4;18394:131;:::i;:::-;18386:139;;18113:419;;;:::o;18538:172::-;18678:24;18674:1;18666:6;18662:14;18655:48;18538:172;:::o;18716:366::-;18858:3;18879:67;18943:2;18938:3;18879:67;:::i;:::-;18872:74;;18955:93;19044:3;18955:93;:::i;:::-;19073:2;19068:3;19064:12;19057:19;;18716:366;;;:::o;19088:419::-;19254:4;19292:2;19281:9;19277:18;19269:26;;19341:9;19335:4;19331:20;19327:1;19316:9;19312:17;19305:47;19369:131;19495:4;19369:131;:::i;:::-;19361:139;;19088:419;;;:::o;19513:297::-;19653:34;19649:1;19641:6;19637:14;19630:58;19722:34;19717:2;19709:6;19705:15;19698:59;19791:11;19786:2;19778:6;19774:15;19767:36;19513:297;:::o;19816:366::-;19958:3;19979:67;20043:2;20038:3;19979:67;:::i;:::-;19972:74;;20055:93;20144:3;20055:93;:::i;:::-;20173:2;20168:3;20164:12;20157:19;;19816:366;;;:::o;20188:419::-;20354:4;20392:2;20381:9;20377:18;20369:26;;20441:9;20435:4;20431:20;20427:1;20416:9;20412:17;20405:47;20469:131;20595:4;20469:131;:::i;:::-;20461:139;;20188:419;;;:::o;20613:177::-;20753:29;20749:1;20741:6;20737:14;20730:53;20613:177;:::o;20796:366::-;20938:3;20959:67;21023:2;21018:3;20959:67;:::i;:::-;20952:74;;21035:93;21124:3;21035:93;:::i;:::-;21153:2;21148:3;21144:12;21137:19;;20796:366;;;:::o;21168:419::-;21334:4;21372:2;21361:9;21357:18;21349:26;;21421:9;21415:4;21411:20;21407:1;21396:9;21392:17;21385:47;21449:131;21575:4;21449:131;:::i;:::-;21441:139;;21168:419;;;:::o;21593:241::-;21733:34;21729:1;21721:6;21717:14;21710:58;21802:24;21797:2;21789:6;21785:15;21778:49;21593:241;:::o;21840:366::-;21982:3;22003:67;22067:2;22062:3;22003:67;:::i;:::-;21996:74;;22079:93;22168:3;22079:93;:::i;:::-;22197:2;22192:3;22188:12;22181:19;;21840:366;;;:::o;22212:419::-;22378:4;22416:2;22405:9;22401:18;22393:26;;22465:9;22459:4;22455:20;22451:1;22440:9;22436:17;22429:47;22493:131;22619:4;22493:131;:::i;:::-;22485:139;;22212:419;;;:::o;22637:348::-;22677:7;22700:20;22718:1;22700:20;:::i;:::-;22695:25;;22734:20;22752:1;22734:20;:::i;:::-;22729:25;;22922:1;22854:66;22850:74;22847:1;22844:81;22839:1;22832:9;22825:17;22821:105;22818:131;;;22929:18;;:::i;:::-;22818:131;22977:1;22974;22970:9;22959:20;;22637:348;;;;:::o;22991:180::-;23039:77;23036:1;23029:88;23136:4;23133:1;23126:15;23160:4;23157:1;23150:15;23177:185;23217:1;23234:20;23252:1;23234:20;:::i;:::-;23229:25;;23268:20;23286:1;23268:20;:::i;:::-;23263:25;;23307:1;23297:35;;23312:18;;:::i;:::-;23297:35;23354:1;23351;23347:9;23342:14;;23177:185;;;;:::o;23368:191::-;23408:4;23428:20;23446:1;23428:20;:::i;:::-;23423:25;;23462:20;23480:1;23462:20;:::i;:::-;23457:25;;23501:1;23498;23495:8;23492:34;;;23506:18;;:::i;:::-;23492:34;23551:1;23548;23544:9;23536:17;;23368:191;;;;:::o;23565:147::-;23666:11;23703:3;23688:18;;23565:147;;;;:::o;23718:114::-;;:::o;23838:398::-;23997:3;24018:83;24099:1;24094:3;24018:83;:::i;:::-;24011:90;;24110:93;24199:3;24110:93;:::i;:::-;24228:1;24223:3;24219:11;24212:18;;23838:398;;;:::o;24242:379::-;24426:3;24448:147;24591:3;24448:147;:::i;:::-;24441:154;;24612:3;24605:10;;24242:379;;;:::o;24627:442::-;24776:4;24814:2;24803:9;24799:18;24791:26;;24827:71;24895:1;24884:9;24880:17;24871:6;24827:71;:::i;:::-;24908:72;24976:2;24965:9;24961:18;24952:6;24908:72;:::i;:::-;24990;25058:2;25047:9;25043:18;25034:6;24990:72;:::i;:::-;24627:442;;;;;;:::o;25075:220::-;25215:34;25211:1;25203:6;25199:14;25192:58;25284:3;25279:2;25271:6;25267:15;25260:28;25075:220;:::o;25301:366::-;25443:3;25464:67;25528:2;25523:3;25464:67;:::i;:::-;25457:74;;25540:93;25629:3;25540:93;:::i;:::-;25658:2;25653:3;25649:12;25642:19;;25301:366;;;:::o;25673:419::-;25839:4;25877:2;25866:9;25862:18;25854:26;;25926:9;25920:4;25916:20;25912:1;25901:9;25897:17;25890:47;25954:131;26080:4;25954:131;:::i;:::-;25946:139;;25673:419;;;:::o;26098:180::-;26146:77;26143:1;26136:88;26243:4;26240:1;26233:15;26267:4;26264:1;26257:15;26284:180;26332:77;26329:1;26322:88;26429:4;26426:1;26419:15;26453:4;26450:1;26443:15;26470:143;26527:5;26558:6;26552:13;26543:22;;26574:33;26601:5;26574:33;:::i;:::-;26470:143;;;;:::o;26619:351::-;26689:6;26738:2;26726:9;26717:7;26713:23;26709:32;26706:119;;;26744:79;;:::i;:::-;26706:119;26864:1;26889:64;26945:7;26936:6;26925:9;26921:22;26889:64;:::i;:::-;26879:74;;26835:128;26619:351;;;;:::o;26976:85::-;27021:7;27050:5;27039:16;;26976:85;;;:::o;27067:158::-;27125:9;27158:61;27176:42;27185:32;27211:5;27185:32;:::i;:::-;27176:42;:::i;:::-;27158:61;:::i;:::-;27145:74;;27067:158;;;:::o;27231:147::-;27326:45;27365:5;27326:45;:::i;:::-;27321:3;27314:58;27231:147;;:::o;27384:114::-;27451:6;27485:5;27479:12;27469:22;;27384:114;;;:::o;27504:184::-;27603:11;27637:6;27632:3;27625:19;27677:4;27672:3;27668:14;27653:29;;27504:184;;;;:::o;27694:132::-;27761:4;27784:3;27776:11;;27814:4;27809:3;27805:14;27797:22;;27694:132;;;:::o;27832:108::-;27909:24;27927:5;27909:24;:::i;:::-;27904:3;27897:37;27832:108;;:::o;27946:179::-;28015:10;28036:46;28078:3;28070:6;28036:46;:::i;:::-;28114:4;28109:3;28105:14;28091:28;;27946:179;;;;:::o;28131:113::-;28201:4;28233;28228:3;28224:14;28216:22;;28131:113;;;:::o;28280:732::-;28399:3;28428:54;28476:5;28428:54;:::i;:::-;28498:86;28577:6;28572:3;28498:86;:::i;:::-;28491:93;;28608:56;28658:5;28608:56;:::i;:::-;28687:7;28718:1;28703:284;28728:6;28725:1;28722:13;28703:284;;;28804:6;28798:13;28831:63;28890:3;28875:13;28831:63;:::i;:::-;28824:70;;28917:60;28970:6;28917:60;:::i;:::-;28907:70;;28763:224;28750:1;28747;28743:9;28738:14;;28703:284;;;28707:14;29003:3;28996:10;;28404:608;;;28280:732;;;;:::o;29018:831::-;29281:4;29319:3;29308:9;29304:19;29296:27;;29333:71;29401:1;29390:9;29386:17;29377:6;29333:71;:::i;:::-;29414:80;29490:2;29479:9;29475:18;29466:6;29414:80;:::i;:::-;29541:9;29535:4;29531:20;29526:2;29515:9;29511:18;29504:48;29569:108;29672:4;29663:6;29569:108;:::i;:::-;29561:116;;29687:72;29755:2;29744:9;29740:18;29731:6;29687:72;:::i;:::-;29769:73;29837:3;29826:9;29822:19;29813:6;29769:73;:::i;:::-;29018:831;;;;;;;;:::o;29855:807::-;30104:4;30142:3;30131:9;30127:19;30119:27;;30156:71;30224:1;30213:9;30209:17;30200:6;30156:71;:::i;:::-;30237:72;30305:2;30294:9;30290:18;30281:6;30237:72;:::i;:::-;30319:80;30395:2;30384:9;30380:18;30371:6;30319:80;:::i;:::-;30409;30485:2;30474:9;30470:18;30461:6;30409:80;:::i;:::-;30499:73;30567:3;30556:9;30552:19;30543:6;30499:73;:::i;:::-;30582;30650:3;30639:9;30635:19;30626:6;30582:73;:::i;:::-;29855:807;;;;;;;;;:::o;30668:143::-;30725:5;30756:6;30750:13;30741:22;;30772:33;30799:5;30772:33;:::i;:::-;30668:143;;;;:::o;30817:663::-;30905:6;30913;30921;30970:2;30958:9;30949:7;30945:23;30941:32;30938:119;;;30976:79;;:::i;:::-;30938:119;31096:1;31121:64;31177:7;31168:6;31157:9;31153:22;31121:64;:::i;:::-;31111:74;;31067:128;31234:2;31260:64;31316:7;31307:6;31296:9;31292:22;31260:64;:::i;:::-;31250:74;;31205:129;31373:2;31399:64;31455:7;31446:6;31435:9;31431:22;31399:64;:::i;:::-;31389:74;;31344:129;30817:663;;;;;:::o
Swarm Source
ipfs://b8f7e48642a921e9775be1f0da2f5e4e480530fe486bb775dea9687863f98470
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in ETH
0
Multichain Portfolio | 33 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ 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.