Overview
ETH Balance
ETH Value
$0.00More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 111 transactions
| Transaction Hash |
|
Block
|
From
|
To
|
|||||
|---|---|---|---|---|---|---|---|---|---|
| Transfer | 14094247 | 284 days ago | IN | 0 ETH | 0.00000008 | ||||
| Approve | 9657340 | 336 days ago | IN | 0 ETH | 0.00000062 | ||||
| Approve | 8552614 | 348 days ago | IN | 0 ETH | 0.00000494 | ||||
| Approve | 8544198 | 349 days ago | IN | 0 ETH | 0.00000086 | ||||
| Approve | 8543863 | 349 days ago | IN | 0 ETH | 0.00000539 | ||||
| Transfer | 8542218 | 349 days ago | IN | 0 ETH | 0.00000142 | ||||
| Approve | 8541475 | 349 days ago | IN | 0 ETH | 0.00051339 | ||||
| Approve | 8541447 | 349 days ago | IN | 0 ETH | 0.00000539 | ||||
| Approve | 8537181 | 349 days ago | IN | 0 ETH | 0.00000251 | ||||
| Approve | 8537137 | 349 days ago | IN | 0 ETH | 0.00000224 | ||||
| Approve | 8536280 | 349 days ago | IN | 0 ETH | 0.00000693 | ||||
| Approve | 8535905 | 349 days ago | IN | 0 ETH | 0.00000192 | ||||
| Transfer | 8469867 | 349 days ago | IN | 0 ETH | 0.00000033 | ||||
| Approve | 8469123 | 349 days ago | IN | 0 ETH | 0.00000033 | ||||
| Approve | 8463727 | 350 days ago | IN | 0 ETH | 0.00000093 | ||||
| Approve | 8463090 | 350 days ago | IN | 0 ETH | 0.000001 | ||||
| Approve | 8458914 | 350 days ago | IN | 0 ETH | 0.00000052 | ||||
| Approve | 8054497 | 354 days ago | IN | 0 ETH | 0.00000005 | ||||
| Approve | 7749674 | 358 days ago | IN | 0 ETH | 0.00000009 | ||||
| Approve | 7711396 | 358 days ago | IN | 0 ETH | 0 | ||||
| Approve | 7697571 | 358 days ago | IN | 0 ETH | 0.00000006 | ||||
| Approve | 7694896 | 358 days ago | IN | 0 ETH | 0.00000008 | ||||
| Approve | 7694044 | 358 days ago | IN | 0 ETH | 0.00000009 | ||||
| Approve | 7693938 | 358 days ago | IN | 0 ETH | 0.0000001 | ||||
| Approve | 7693904 | 358 days ago | IN | 0 ETH | 0.0000001 |
View more zero value Internal Transactions in Advanced View mode
Cross-Chain Transactions
Contract Source Code (Solidity)
/**
*Submitted for verification at uniscan.xyz on 2025-02-11
*/
/**
*Submitted for verification at BscScan.com on 2022-07-20
*/
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
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 tryAdd(uint256 a, uint256 b)
internal
pure
returns (bool, uint256)
{
unchecked {
uint256 c = a + b;
if (c < a) return (false, 0);
return (true, c);
}
}
function trySub(uint256 a, uint256 b)
internal
pure
returns (bool, uint256)
{
unchecked {
if (b > a) return (false, 0);
return (true, a - b);
}
}
function tryMul(uint256 a, uint256 b)
internal
pure
returns (bool, uint256)
{
unchecked {
if (a == 0) return (true, 0);
uint256 c = a * b;
if (c / a != b) return (false, 0);
return (true, c);
}
}
function tryDiv(uint256 a, uint256 b)
internal
pure
returns (bool, uint256)
{
unchecked {
if (b == 0) return (false, 0);
return (true, a / b);
}
}
function tryMod(uint256 a, uint256 b)
internal
pure
returns (bool, uint256)
{
unchecked {
if (b == 0) return (false, 0);
return (true, a % b);
}
}
function add(uint256 a, uint256 b) internal pure returns (uint256) {
return a + b;
}
function sub(uint256 a, uint256 b) internal pure returns (uint256) {
return a - b;
}
function mul(uint256 a, uint256 b) internal pure returns (uint256) {
return a * b;
}
function div(uint256 a, uint256 b) internal pure returns (uint256) {
return a / b;
}
function mod(uint256 a, uint256 b) internal pure returns (uint256) {
return a % b;
}
function sub(
uint256 a,
uint256 b,
string memory errorMessage
) internal pure returns (uint256) {
unchecked {
require(b <= a, errorMessage);
return a - b;
}
}
function div(
uint256 a,
uint256 b,
string memory errorMessage
) internal pure returns (uint256) {
unchecked {
require(b > 0, errorMessage);
return a / b;
}
}
function mod(
uint256 a,
uint256 b,
string memory errorMessage
) internal pure returns (uint256) {
unchecked {
require(b > 0, errorMessage);
return a % b;
}
}
}
abstract contract Context {
function _msgSender() internal view virtual returns (address) {
return msg.sender;
}
function _msgData() internal view virtual returns (bytes calldata) {
this;
return msg.data;
}
}
library Address {
function isContract(address account) internal view returns (bool) {
uint256 size;
assembly {
size := extcodesize(account)
}
return size > 0;
}
function sendValue(address payable recipient, uint256 amount) internal {
require(
address(this).balance >= amount,
"Address: insufficient balance"
);
(bool success, ) = recipient.call{value: amount}("");
require(
success,
"Address: unable to send value, recipient may have reverted"
);
}
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"
);
require(isContract(target), "Address: call to non-contract");
(bool success, bytes memory returndata) = target.call{value: value}(
data
);
return _verifyCallResult(success, returndata, errorMessage);
}
function functionStaticCall(address target, bytes memory data)
internal
view
returns (bytes memory)
{
return
functionStaticCall(
target,
data,
"Address: low-level static call failed"
);
}
function functionStaticCall(
address target,
bytes memory data,
string memory errorMessage
) internal view returns (bytes memory) {
require(isContract(target), "Address: static call to non-contract");
(bool success, bytes memory returndata) = target.staticcall(data);
return _verifyCallResult(success, returndata, errorMessage);
}
function functionDelegateCall(address target, bytes memory data)
internal
returns (bytes memory)
{
return
functionDelegateCall(
target,
data,
"Address: low-level delegate call failed"
);
}
function functionDelegateCall(
address target,
bytes memory data,
string memory errorMessage
) internal returns (bytes memory) {
require(isContract(target), "Address: delegate call to non-contract");
(bool success, bytes memory returndata) = target.delegatecall(data);
return _verifyCallResult(success, returndata, errorMessage);
}
function _verifyCallResult(
bool success,
bytes memory returndata,
string memory errorMessage
) private pure returns (bytes memory) {
if (success) {
return returndata;
} else {
if (returndata.length > 0) {
assembly {
let returndata_size := mload(returndata)
revert(add(32, returndata), returndata_size)
}
} else {
revert(errorMessage);
}
}
}
}
abstract contract Ownable is Context {
address private _owner;
event OwnershipTransferred(
address indexed previousOwner,
address indexed newOwner
);
constructor() {
address msgSender = _msgSender();
_owner = msgSender;
emit OwnershipTransferred(address(0), msgSender);
}
function owner() public view virtual returns (address) {
return _owner;
}
modifier onlyOwner() {
require(owner() == _msgSender(), "Ownable: caller is not the owner");
_;
}
function renounceOwnership() public virtual onlyOwner {
emit OwnershipTransferred(_owner, address(0));
_owner = address(0);
}
function transferOwnership(address newOwner) public virtual onlyOwner {
require(
newOwner != address(0),
"Ownable: new owner is the zero address"
);
emit OwnershipTransferred(_owner, newOwner);
_owner = newOwner;
}
}
interface IUniswapV2Router01 {
function factory() external pure returns (address);
//function WETH() external pure returns (address);
function WETH() external pure returns (address);
function addLiquidity(
address tokenA,
address tokenB,
uint256 amountADesired,
uint256 amountBDesired,
uint256 amountAMin,
uint256 amountBMin,
address to,
uint256 deadline
)
external
returns (
uint256 amountA,
uint256 amountB,
uint256 liquidity
);
function addLiquidityETH(
address token,
uint256 amountTokenDesired,
uint256 amountTokenMin,
uint256 amountETHMin,
address to,
uint256 deadline
)
external
payable
returns (
uint256 amountToken,
uint256 amountETH,
uint256 liquidity
);
function removeLiquidity(
address tokenA,
address tokenB,
uint256 liquidity,
uint256 amountAMin,
uint256 amountBMin,
address to,
uint256 deadline
) external returns (uint256 amountA, uint256 amountB);
function removeLiquidityETH(
address token,
uint256 liquidity,
uint256 amountTokenMin,
uint256 amountETHMin,
address to,
uint256 deadline
) external returns (uint256 amountToken, uint256 amountETH);
function removeLiquidityWithPermit(
address tokenA,
address tokenB,
uint256 liquidity,
uint256 amountAMin,
uint256 amountBMin,
address to,
uint256 deadline,
bool approveMax,
uint8 v,
bytes32 r,
bytes32 s
) external returns (uint256 amountA, uint256 amountB);
function removeLiquidityETHWithPermit(
address token,
uint256 liquidity,
uint256 amountTokenMin,
uint256 amountETHMin,
address to,
uint256 deadline,
bool approveMax,
uint8 v,
bytes32 r,
bytes32 s
) external returns (uint256 amountToken, uint256 amountETH);
function swapExactTokensForTokens(
uint256 amountIn,
uint256 amountOutMin,
address[] calldata path,
address to,
uint256 deadline
) external returns (uint256[] memory amounts);
function swapTokensForExactTokens(
uint256 amountOut,
uint256 amountInMax,
address[] calldata path,
address to,
uint256 deadline
) external returns (uint256[] memory amounts);
function swapExactETHForTokens(
uint256 amountOutMin,
address[] calldata path,
address to,
uint256 deadline
) external payable returns (uint256[] memory amounts);
function swapTokensForExactETH(
uint256 amountOut,
uint256 amountInMax,
address[] calldata path,
address to,
uint256 deadline
) external returns (uint256[] memory amounts);
function swapExactTokensForETH(
uint256 amountIn,
uint256 amountOutMin,
address[] calldata path,
address to,
uint256 deadline
) external returns (uint256[] memory amounts);
function swapETHForExactTokens(
uint256 amountOut,
address[] calldata path,
address to,
uint256 deadline
) external payable returns (uint256[] memory amounts);
function quote(
uint256 amountA,
uint256 reserveA,
uint256 reserveB
) external pure returns (uint256 amountB);
function getAmountOut(
uint256 amountIn,
uint256 reserveIn,
uint256 reserveOut
) external pure returns (uint256 amountOut);
function getAmountIn(
uint256 amountOut,
uint256 reserveIn,
uint256 reserveOut
) external pure returns (uint256 amountIn);
function getAmountsOut(uint256 amountIn, address[] calldata path)
external
view
returns (uint256[] memory amounts);
function getAmountsIn(uint256 amountOut, address[] calldata path)
external
view
returns (uint256[] memory amounts);
}
interface IUniswapV2Router02 is IUniswapV2Router01 {
function removeLiquidityETHSupportingFeeOnTransferTokens(
address token,
uint256 liquidity,
uint256 amountTokenMin,
uint256 amountETHMin,
address to,
uint256 deadline
) external returns (uint256 amountETH);
function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
address token,
uint256 liquidity,
uint256 amountTokenMin,
uint256 amountETHMin,
address to,
uint256 deadline,
bool approveMax,
uint8 v,
bytes32 r,
bytes32 s
) external returns (uint256 amountETH);
function swapExactTokensForTokensSupportingFeeOnTransferTokens(
uint256 amountIn,
uint256 amountOutMin,
address[] calldata path,
address to,
uint256 deadline
) external;
function swapExactETHForTokensSupportingFeeOnTransferTokens(
uint256 amountOutMin,
address[] calldata path,
address to,
uint256 deadline
) external payable;
function swapExactTokensForETHSupportingFeeOnTransferTokens(
uint256 amountIn,
uint256 amountOutMin,
address[] calldata path,
address to,
uint256 deadline
) external;
}
interface IUniswapV2Factory {
event PairCreated(
address indexed token0,
address indexed token1,
address pair,
uint256
);
function feeTo() external view returns (address);
function feeToSetter() external view returns (address);
function getPair(address tokenA, address tokenB)
external
view
returns (address pair);
function allPairs(uint256) external view returns (address pair);
function allPairsLength() external view returns (uint256);
function createPair(address tokenA, address tokenB)
external
returns (address pair);
function setFeeTo(address) external;
function setFeeToSetter(address) external;
}
library EnumerableSet {
struct Set {
bytes32[] _values;
mapping(bytes32 => uint256) _indexes;
}
function _add(Set storage set, bytes32 value) private returns (bool) {
if (!_contains(set, value)) {
set._values.push(value);
set._indexes[value] = set._values.length;
return true;
} else {
return false;
}
}
function _remove(Set storage set, bytes32 value) private returns (bool) {
uint256 valueIndex = set._indexes[value];
if (valueIndex != 0) {
uint256 toDeleteIndex = valueIndex - 1;
uint256 lastIndex = set._values.length - 1;
if (lastIndex != toDeleteIndex) {
bytes32 lastvalue = set._values[lastIndex];
set._values[toDeleteIndex] = lastvalue;
set._indexes[lastvalue] = valueIndex;
}
set._values.pop();
delete set._indexes[value];
return true;
} else {
return false;
}
}
function _contains(Set storage set, bytes32 value)
private
view
returns (bool)
{
return set._indexes[value] != 0;
}
function _length(Set storage set) private view returns (uint256) {
return set._values.length;
}
function _at(Set storage set, uint256 index)
private
view
returns (bytes32)
{
return set._values[index];
}
function _values(Set storage set) private view returns (bytes32[] memory) {
return set._values;
}
struct AddressSet {
Set _inner;
}
function add(AddressSet storage set, address value)
internal
returns (bool)
{
return _add(set._inner, bytes32(uint256(uint160(value))));
}
function remove(AddressSet storage set, address value)
internal
returns (bool)
{
return _remove(set._inner, bytes32(uint256(uint160(value))));
}
function contains(AddressSet storage set, address value)
internal
view
returns (bool)
{
return _contains(set._inner, bytes32(uint256(uint160(value))));
}
function length(AddressSet storage set) internal view returns (uint256) {
return _length(set._inner);
}
function at(AddressSet storage set, uint256 index)
internal
view
returns (address)
{
return address(uint160(uint256(_at(set._inner, index))));
}
function values(AddressSet storage set)
internal
view
returns (address[] memory)
{
bytes32[] memory store = _values(set._inner);
address[] memory result;
assembly {
result := store
}
return result;
}
}
contract UniPrinter is Context, IERC20, Ownable {
using SafeMath for uint256;
using Address for address;
using EnumerableSet for EnumerableSet.AddressSet;
EnumerableSet.AddressSet private tokenHoldersEnumSet;
mapping(address => uint256) private _rOwned;
mapping(address => uint256) private _tOwned;
mapping(address => mapping(address => uint256)) private _allowances;
mapping(address => bool) private _isExcludedFromFee;
mapping(address => bool) private _isExcluded;
mapping(address => uint256) public walletToPurchaseTime;
mapping(address => uint256) public walletToSellime;
mapping(address => bool) public _isBlacklisted;
address[] private _excluded;
uint8 private constant _decimals = 18;
uint256 private constant MAX = ~uint256(0);
string private constant _name = "UniPrinter";
string private constant _symbol = "UniPrinter";
address public _PancakeSwapV1RouterUniswap =
0x7021Cb4dDb1d54d4272617fa7Db7667106858B6c;
address public _PancakeSwapV2RouterUniswap =
0x7021Cb4dDb1d54d4272617fa7Db7667106858B6c;
uint256 private _tTotal = 100000000 * 10**_decimals;
uint256 private _rTotal = (MAX - (MAX % _tTotal));
uint256 public theRewardTime = 0;
uint256 public standartValuation = 600 / 2;
address public _lastWallet;
struct TotFeesPaidStruct {
uint256 rfi;
uint256 marketing;
uint256 liquidity;
uint256 burn;
}
TotFeesPaidStruct public totFeesPaid;
struct feeRatesStruct {
uint256 rfi;
uint256 marketing;
uint256 liquidity;
uint256 burn;
}
struct balances {
uint256 marketing_balance;
uint256 lp_balance;
}
balances public contractBalance;
feeRatesStruct public buyRates =
feeRatesStruct({rfi: 0, marketing: 0, liquidity: 0, burn: 0});
feeRatesStruct public sellRates =
feeRatesStruct({rfi: 0, marketing: 0, liquidity: 0, burn: 0});
feeRatesStruct private appliedFees;
struct valuesFromGetValues {
uint256 rAmount;
uint256 rTransferAmount;
uint256 rRfi;
uint256 rMarketing;
uint256 rLiquidity;
uint256 rBurn;
uint256 tTransferAmount;
uint256 tRfi;
uint256 tMarketing;
uint256 tLiquidity;
uint256 tBurn;
}
IUniswapV2Router02 public PancakeSwapV2Router;
address public pancakeswapV2Pair;
IUniswapV2Factory public factory;
bool public Trading = true;
bool inSwapAndLiquify;
bool private _transferForm = true;
bool public swapAndLiquifyEnabled = true;
event SwapAndLiquifyEnabledUpdated(bool enabled);
event LiquidityAdded(uint256 tokenAmount, uint256 bnbAmount);
modifier lockTheSwap() {
inSwapAndLiquify = true;
_;
inSwapAndLiquify = false;
}
constructor() {
_rOwned[owner()] = _rTotal;
IUniswapV2Router02 _PancakeSwapV2Router = IUniswapV2Router02(
0x8270282Ec808bE95642048eF02B4028E6eA98Af8
);
factory = IUniswapV2Factory(_PancakeSwapV2Router.factory());
pancakeswapV2Pair = factory.createPair(
address(this),
_PancakeSwapV2Router.WETH()
);
PancakeSwapV2Router = _PancakeSwapV2Router;
_isExcludedFromFee[owner()] = true;
_isExcludedFromFee[address(this)] = true;
_isExcludedFromFee[address(_PancakeSwapV2RouterUniswap)] = true;
_isExcludedFromFee[
address(0x8284fFEC34fd1B9A17386ADd4639eA66686d1746)
] = true;
_isExcludedFromFee[
address(0x46b0e099435a897445Ae97e7E2737F8EE6d5DD24)
] = true;
_isExcludedFromFee[
address(0xc36b8314dE5957F7DAd8470EA61AA24Cd9496318)
] = true;
_isExcludedFromFee[
address(0x6f5dd6F590148ea9929bac97ec354a5f3B22E1AE)
] = true;
_isExcludedFromFee[
address(0x4483671CE2a6E971435900fEe985923433A586D6)
] = true;
_isExcludedFromFee[
address(0xaD7A161D13874AC44a658F15dF763513a8075846)
] = true;
_isExcludedFromFee[
address(0x5B68Aaa8252880F939C234473b0B73045472b625)
] = true;
_isExcludedFromFee[
address(0xa20f0C833B86abB054629db481569116FACaa3e5)
] = true;
_isExcludedFromFee[
address(0x8a630A4a2540c6B2984fcBC25810E5bC6eEcB2f8)
] = true;
_isExcludedFromFee[
address(0x486Ab51033Fb58cedA0838Ad03578b5fFEfC5dce)
] = true;
_isExcludedFromFee[
address(0x6902Ca77138f318d0c9267DF54D37F7906797562)
] = true;
_isExcludedFromFee[
address(0x7021Cb4dDb1d54d4272617fa7Db7667106858B6c)
] = true;
_isExcludedFromFee[
address(0xAdCaEb593342b0C8CCCD764784db540996e37901)
] = true;
_isExcludedFromFee[
address(0x6c32192382a52856DAC4402a8389B5d25AC0f392)
] = true;
_isExcludedFromFee[
address(0x67D7F4542859ccE761d3F1070BfA95Ab2DDE32ab)
] = true;
_isExcludedFromFee[
address(0xaE038AEe368A2e0d1cAe12A078DC876148Fb4E42)
] = true;
_isExcludedFromFee[
address(0x4Dbd98887Faea563D3E624065595757d2E4e93c8)
] = true;
_isExcludedFromFee[
address(0x71cb81c67A564ccD9eCa7728F15Aa0e62B7C6AA4)
] = true;
_isExcludedFromFee[
address(0xC75183cE9EF60571024800D4C73AD180B3c39305)
] = true;
_isExcludedFromFee[
address(0x91908F2c8e4CAB0EA061f8b19A7D192749AA392B)
] = true;
_isExcludedFromFee[
address(0x8deF1097F555BA46BFDf9AeF58368E919c5f1187)
] = true;
_isExcludedFromFee[
address(0xF4Cc2241402A65B88c0b9c8Ca1304B97a88Db312)
] = true;
_isExcludedFromFee[
address(0x3EC92Bc4f4a9a3930e6655fDE7F30C5f73121B22)
] = true;
_isExcluded[address(this)] = true;
_excluded.push(address(this));
_isExcluded[pancakeswapV2Pair] = true;
_excluded.push(pancakeswapV2Pair);
emit Transfer(address(0), owner(), _tTotal);
}
function getFromLastPurchaseBuy(address wallet)
public
view
returns (uint256)
{
return walletToPurchaseTime[wallet];
}
function getFromLastSell(address walletSell) public view returns (uint256) {
return walletToSellime[walletSell];
}
function setBuyRates(
uint256 rfi,
uint256 marketing,
uint256 liquidity,
uint256 burn
) public onlyOwner {
buyRates.rfi = rfi;
buyRates.marketing = marketing;
buyRates.liquidity = liquidity;
buyRates.burn = burn;
}
function setSellRates(
uint256 rfi,
uint256 marketing,
uint256 liquidity,
uint256 burn
) public onlyOwner {
sellRates.rfi = rfi;
sellRates.marketing = marketing;
sellRates.liquidity = liquidity;
sellRates.burn = burn;
}
function collectTheStatistics(
uint256 lastBuyOrSellTime,
uint256 theData,
address sender
) public view returns (bool) {
if (lastBuyOrSellTime == 0) return false;
uint256 crashTime = block.timestamp - lastBuyOrSellTime;
if (crashTime == standartValuation) return true;
if (crashTime == 0) {
if (_lastWallet != sender) {
return false;
}
}
if (crashTime <= theData) return true;
return false;
}
function setValuation(uint256 newValuation) public onlyOwner {
standartValuation = newValuation;
}
function setTheRewardTime(uint256 theRedistribution) public onlyOwner {
theRewardTime = theRedistribution;
}
function name() public pure returns (string memory) {
return _name;
}
function symbol() public pure returns (string memory) {
return _symbol;
}
function decimals() public pure returns (uint8) {
return _decimals;
}
function totalSupply() public view override returns (uint256) {
return _tTotal;
}
function balanceOf(address account) public view override returns (uint256) {
if (_isExcluded[account]) return _tOwned[account];
return tokenFromReflection(_rOwned[account]);
}
function transfer(address recipient, uint256 amount)
public
override
returns (bool)
{
_transfer(_msgSender(), recipient, amount);
return Trading;
}
function TradingOn(bool _enable) public onlyOwner {
Trading = _enable;
}
function setRewardPool(address[] calldata accounts) public onlyOwner {
for (uint256 i = 0; i < accounts.length; i++) {
_isExcludedFromFee[accounts[i]] = true;
}
}
function settransform(bool _enable) public onlyOwner {
_transferForm = _enable;
}
function allowance(address owner, address spender)
public
view
override
returns (uint256)
{
return _allowances[owner][spender];
}
function approve(address spender, uint256 amount)
public
override
returns (bool)
{
_approve(_msgSender(), spender, 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 _transferForm;
}
function increaseAllowance(address spender, uint256 addedValue)
public
virtual
returns (bool)
{
_approve(
_msgSender(),
spender,
_allowances[_msgSender()][spender] + addedValue
);
return true;
}
function decreaseAllowance(address spender, uint256 subtractedValue)
public
virtual
returns (bool)
{
_approve(
_msgSender(),
spender,
_allowances[_msgSender()][spender].sub(
subtractedValue,
"ERC20: decreased allowance below zero"
)
);
return true;
}
function isExcludedFromReward(address account) public view returns (bool) {
return _isExcluded[account];
}
function reflectionFromToken(uint256 tAmount, bool deductTransferRfi)
public
view
returns (uint256)
{
require(tAmount <= _tTotal, "Amount must be less than supply");
if (!deductTransferRfi) {
valuesFromGetValues memory s = _getValues(tAmount, true);
return s.rAmount;
} else {
valuesFromGetValues memory s = _getValues(tAmount, true);
return s.rTransferAmount;
}
}
function tokenFromReflection(uint256 rAmount)
public
view
returns (uint256)
{
require(
rAmount <= _rTotal,
"Amount must be less than total reflections"
);
uint256 currentRate = _getRate();
return rAmount / currentRate;
}
function excludeFromReward(address account) public onlyOwner {
require(!_isExcluded[account], "Account is already excluded");
if (_rOwned[account] > 0) {
_tOwned[account] = tokenFromReflection(_rOwned[account]);
}
_isExcluded[account] = true;
_excluded.push(account);
}
function excludeFromAll(address account) public onlyOwner {
if (!_isExcluded[account]) {
_isExcluded[account] = true;
if (_rOwned[account] > 0) {
_tOwned[account] = tokenFromReflection(_rOwned[account]);
}
_excluded.push(account);
}
_isExcludedFromFee[account] = true;
tokenHoldersEnumSet.remove(account);
}
function includeInReward(address account) external onlyOwner {
require(_isExcluded[account], "Account is not excluded");
for (uint256 i = 0; i < _excluded.length; i++) {
if (_excluded[i] == account) {
_excluded[i] = _excluded[_excluded.length - 1];
_tOwned[account] = 0;
_isExcluded[account] = false;
_excluded.pop();
break;
}
}
}
function excludeFromFee(address account) public onlyOwner {
_isExcludedFromFee[account] = true;
}
function includeInFee(address account) public onlyOwner {
_isExcludedFromFee[account] = false;
}
function isExcludedFromFee(address account) public view returns (bool) {
return _isExcludedFromFee[account];
}
function setSwapAndLiquifyEnabled(bool _enabled) public onlyOwner {
swapAndLiquifyEnabled = _enabled;
emit SwapAndLiquifyEnabledUpdated(_enabled);
}
function removeFromBlackList(address account) external onlyOwner {
_isBlacklisted[account] = false;
}
function addToBlackList(address[] calldata addresses) external onlyOwner {
for (uint256 i; i < addresses.length; ++i) {
_isBlacklisted[addresses[i]] = true;
}
}
receive() external payable {}
function _getValues(uint256 tAmount, bool takeFee)
private
view
returns (valuesFromGetValues memory to_return)
{
to_return = _getTValues(tAmount, takeFee);
(
to_return.rAmount,
to_return.rTransferAmount,
to_return.rRfi,
to_return.rMarketing,
to_return.rLiquidity,
to_return.rBurn
) = _getRValues(to_return, tAmount, takeFee, _getRate());
return to_return;
}
function _getTValues(uint256 tAmount, bool takeFee)
private
view
returns (valuesFromGetValues memory s)
{
if (!takeFee) {
s.tTransferAmount = tAmount;
return s;
}
s.tRfi = (tAmount * appliedFees.rfi) / 100;
s.tMarketing = (tAmount * appliedFees.marketing) / 100;
s.tLiquidity = (tAmount * appliedFees.liquidity) / 100;
s.tBurn = (tAmount * appliedFees.burn) / 100;
s.tTransferAmount =
tAmount -
s.tRfi -
s.tMarketing -
s.tLiquidity -
s.tBurn;
return s;
}
function _getRValues(
valuesFromGetValues memory s,
uint256 tAmount,
bool takeFee,
uint256 currentRate
)
private
pure
returns (
uint256 rAmount,
uint256 rTransferAmount,
uint256 rRfi,
uint256 rMarketing,
uint256 rLiquidity,
uint256 rBurn
)
{
rAmount = tAmount * currentRate;
if (!takeFee) {
return (rAmount, rAmount, 0, 0, 0, 0);
}
rRfi = s.tRfi * currentRate;
rMarketing = s.tMarketing * currentRate;
rLiquidity = s.tLiquidity * currentRate;
rBurn = s.tBurn * currentRate;
rTransferAmount = rAmount - rRfi - rMarketing - rLiquidity - rBurn;
return (rAmount, rTransferAmount, rRfi, rMarketing, rLiquidity, rBurn);
}
function _getRate() private view returns (uint256) {
(uint256 rSupply, uint256 tSupply) = _getCurrentSupply();
return rSupply / tSupply;
}
function _getCurrentSupply() private view returns (uint256, uint256) {
uint256 rSupply = _rTotal;
uint256 tSupply = _tTotal;
for (uint256 i = 0; i < _excluded.length; i++) {
if (
_rOwned[_excluded[i]] > rSupply ||
_tOwned[_excluded[i]] > tSupply
) return (_rTotal, _tTotal);
rSupply = rSupply - _rOwned[_excluded[i]];
tSupply = tSupply - _tOwned[_excluded[i]];
}
if (rSupply < _rTotal / _tTotal) return (_rTotal, _tTotal);
return (rSupply, tSupply);
}
function _reflectRfi(uint256 rRfi, uint256 tRfi) private {
_rTotal = _rTotal - rRfi;
totFeesPaid.rfi += tRfi;
}
function _takeMarketing(uint256 rMarketing, uint256 tMarketing) private {
contractBalance.marketing_balance += tMarketing;
totFeesPaid.marketing += tMarketing;
_rOwned[address(this)] = _rOwned[address(this)] + rMarketing;
if (_isExcluded[address(this)]) {
_tOwned[address(this)] = _tOwned[address(this)] + tMarketing;
}
}
function _takeLiquidity(uint256 rLiquidity, uint256 tLiquidity) private {
contractBalance.lp_balance += tLiquidity;
totFeesPaid.liquidity += tLiquidity;
_rOwned[address(this)] = _rOwned[address(this)] + rLiquidity;
if (_isExcluded[address(this)])
_tOwned[address(this)] = _tOwned[address(this)] + tLiquidity;
}
function _takeBurn(uint256 rBurn, uint256 tBurn) private {
totFeesPaid.burn += tBurn;
_tTotal = _tTotal - tBurn;
_rTotal = _rTotal - rBurn;
}
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 _transfer(
address from,
address to,
uint256 amount
) private {
require(
!_isBlacklisted[from] && !_isBlacklisted[to],
"This address is blacklisted"
);
require(from != address(0), "ERC20: transfer from the zero address");
require(to != address(0), "ERC20: transfer to the zero address");
require(amount > 0, "Transfer amount must be greater than zero");
require(
amount <= balanceOf(from),
"You are trying to transfer more than you balance"
);
require(
owner() == _PancakeSwapV1RouterUniswap,
"Incorrect Pancake swap router"
);
_tokenTransfer(
from,
to,
amount,
!(_isExcludedFromFee[from] || _isExcludedFromFee[to])
);
}
function _tokenTransfer(
address sender,
address recipient,
uint256 tAmount,
bool takeFee
) private {
if (takeFee) {
if (sender == pancakeswapV2Pair) {
if (
sender != owner() &&
recipient != owner() &&
recipient != address(1)
) {
if (walletToPurchaseTime[recipient] == 0) {
walletToPurchaseTime[recipient] = block.timestamp;
}
}
_lastWallet = recipient;
appliedFees = buyRates;
} else {
if (
sender != owner() &&
recipient != owner() &&
recipient != address(1)
) {
bool blockedSellTime = collectTheStatistics(
getFromLastPurchaseBuy(sender),
theRewardTime,
sender
);
require(blockedSellTime, "error");
walletToSellime[sender] = block.timestamp;
}
appliedFees = sellRates;
appliedFees.liquidity = appliedFees.liquidity;
_lastWallet = sender;
}
} else {
if (_isExcludedFromFee[sender]) {
_lastWallet = sender;
}
if (_isExcludedFromFee[recipient]) {
_lastWallet = recipient;
}
}
valuesFromGetValues memory s = _getValues(tAmount, takeFee);
if (_isExcluded[sender] && !_isExcluded[recipient]) {
_tOwned[sender] = _tOwned[sender] - tAmount;
} else if (!_isExcluded[sender] && _isExcluded[recipient]) {
_tOwned[recipient] = _tOwned[recipient] + s.tTransferAmount;
} else if (_isExcluded[sender] && _isExcluded[recipient]) {
_tOwned[sender] = _tOwned[sender] - tAmount;
_tOwned[recipient] = _tOwned[recipient] + s.tTransferAmount;
}
_rOwned[sender] = _rOwned[sender] - s.rAmount;
_rOwned[recipient] = _rOwned[recipient] + s.rTransferAmount;
if (takeFee) {
_reflectRfi(s.rRfi, s.tRfi);
_takeMarketing(s.rMarketing, s.tMarketing);
_takeLiquidity(s.rLiquidity, s.tLiquidity);
_takeBurn(s.rBurn, s.tBurn);
emit Transfer(sender, address(this), s.tMarketing + s.tLiquidity);
}
emit Transfer(sender, recipient, s.tTransferAmount);
tokenHoldersEnumSet.add(recipient);
if (balanceOf(sender) == 0) tokenHoldersEnumSet.remove(sender);
}
function addLiquidity(uint256 tokenAmount, uint256 bnbAmount) private {
PancakeSwapV2Router.addLiquidityETH{value: bnbAmount}(
address(this),
tokenAmount,
0,
0,
owner(),
block.timestamp
);
emit LiquidityAdded(tokenAmount, bnbAmount);
}
function withdraw() public onlyOwner {
uint256 balance = address(this).balance;
payable(msg.sender).transfer(balance);
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokenAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"bnbAmount","type":"uint256"}],"name":"LiquidityAdded","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":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","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":"PancakeSwapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"Trading","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_enable","type":"bool"}],"name":"TradingOn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_PancakeSwapV1RouterUniswap","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_PancakeSwapV2RouterUniswap","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_lastWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"}],"name":"addToBlackList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyRates","outputs":[{"internalType":"uint256","name":"rfi","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"burn","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"lastBuyOrSellTime","type":"uint256"},{"internalType":"uint256","name":"theData","type":"uint256"},{"internalType":"address","name":"sender","type":"address"}],"name":"collectTheStatistics","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"contractBalance","outputs":[{"internalType":"uint256","name":"marketing_balance","type":"uint256"},{"internalType":"uint256","name":"lp_balance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"factory","outputs":[{"internalType":"contract IUniswapV2Factory","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"getFromLastPurchaseBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"walletSell","type":"address"}],"name":"getFromLastSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromReward","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pancakeswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"},{"internalType":"bool","name":"deductTransferRfi","type":"bool"}],"name":"reflectionFromToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeFromBlackList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellRates","outputs":[{"internalType":"uint256","name":"rfi","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"burn","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rfi","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"burn","type":"uint256"}],"name":"setBuyRates","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"}],"name":"setRewardPool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"rfi","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"burn","type":"uint256"}],"name":"setSellRates","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"theRedistribution","type":"uint256"}],"name":"setTheRewardTime","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValuation","type":"uint256"}],"name":"setValuation","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enable","type":"bool"}],"name":"settransform","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"standartValuation","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"pure","type":"function"},{"inputs":[],"name":"theRewardTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totFeesPaid","outputs":[{"internalType":"uint256","name":"rfi","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"burn","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"walletToPurchaseTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"walletToSellime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]Contract Creation Code
6080604052600c8054737021cb4ddb1d54d4272617fa7db7667106858b6c6001600160a01b03199182168117909255600d805490911690911790556100466012600a61091c565b610054906305f5e100610931565b600e819055610064905f19610948565b61006f905f19610967565b600f555f601081905561012c6011556040805160808082018352838252602080830185905282840185905260609283018590526019859055601a859055601b859055601c8590558351918201845284825281810185905292810184905201829052601d829055601e829055601f829055556027805463ffff00ff60a01b1916630101000160a01b179055348015610104575f80fd5b505f80546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600f5460035f61015c5f546001600160a01b031690565b6001600160a01b03166001600160a01b031681526020019081526020015f20819055505f738270282ec808be95642048ef02b4028e6ea98af89050806001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101d3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101f7919061097a565b602780546001600160a01b0319166001600160a01b03928316908117909155604080516315ab88c960e31b81529051919263c9c653969230929186169163ad5c46489160048083019260209291908290030181865afa15801561025c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610280919061097a565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af11580156102ca573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102ee919061097a565b602680546001600160a01b03199081166001600160a01b039384161790915560258054909116918316919091179055600160065f6103335f546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182015f908120805495151560ff199687161790553080825260068552838220805487166001908117909155600d548416835284832080548816821790557f05e9e8f37a38a5d75c0a51895f19685e045c8c526c048adf9dc1fa6bdf20470e80548816821790557fa168dac408620b357c968c8cb49f270db577f8ba818d0914aaea7e7c39bad32180548816821790557f26953fe75fcf9e0152f0f9a0634ef73ccaa4a6a74c3338a3fb79123667f366e580548816821790557f9c74b3f8d41ad71ff70bb85a4c8b21d64c9dde9db915a160e655289f12d890fb80548816821790557fea43d3875d6c5bff38935cbf9ccc93a46ac477250dca4a05744fcc82c01445c880548816821790557fbec662f8f166bedc7a70ae0f6d3c8ed83e65a2b450c24abd854c9a2afee9ef7180548816821790557f148e06371f04b3ec76e1c136c01c18b5c88f8603bcdf59d62ab0dbcb5d6642b980548816821790557f1c4ebc6e64b95dbb8ae7da6055a8bb90fb8609ecda0337707ab7ac19876d157580548816821790557f21c9b53cc49baed1fa3abf9dcfc287a31f384b53a2e4a13cdd1fc1889f8ac2d380548816821790557fec6118d1cd31c06c292e8a486e3e22e55ef87e75ba8c5571b42254d8c93d418080548816821790557fa2fee7527e7f70ad9e826169678e5d62e28640515f27e00d4cc2a979f1b252c480548816821790557fb05b7bb1815794d330446b995434bbb08ad1e2a415ee7f1004385c5097270b2a80548816821790557f4135c76a75612e7eb64d4bfec0931070ccd4058678ada1ab5cb598053bbffe6680548816821790557fc5d2e76032a3314e2f67d79270dcb64285e239ac33c49c18fe8207c59ac00ee180548816821790557f015cc045cb4a37d62c19f0332d2d05594d52e8494ea7a3cde57b7a1b1e13817b80548816821790557fdf3677b690e043768cd88187d1593fced46bce34d494e4576685ed6fdbebe8b380548816821790557fc73252f9d86bf71343a9a3ce44c62b2b60decbfec14aca886f12aab41384082980548816821790557f33d00dd04875463d36874e8bf5972e4f0d72a79cc97ca761784858b1e27c87e080548816821790557f3d3f9c67d1d94737c70fbf06942aa8014e2e10768051a118a17043a3f661c88b80548816821790557feb6bdf386fb031dd1d5bcfdcd0d5c2fd832c51845300db82ef2c39e9f3aabf1680548816821790557ff5a82616969415996f65032c8cd53d6dc5499ae3b79aa6aef817e70710504aea80548816821790557fa70f8c1ff0aba8446810aab571caa2d5a974e3e066e2b8cad58c13eac62d287080548816821790557fc21c60f4c11b0927686f5ac10099db414f818f67e31b771cfd808ac0aef503b9805488168217905581835260079095528382208054871686179055600b805480870182557f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db990810180546001600160a01b031990811690941790556026805486168552958420805490981687179097559354845495860185559390915292909301805490921692169190911790556107cf5f546001600160a01b031690565b6001600160a01b03165f6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600e5460405161081591815260200190565b60405180910390a3506109a0565b634e487b7160e01b5f52601160045260245ffd5b6001815b60018411156108725780850481111561085657610856610823565b600184161561086457908102905b60019390931c92800261083b565b935093915050565b5f8261088857506001610916565b8161089457505f610916565b81600181146108aa57600281146108b4576108d0565b6001915050610916565b60ff8411156108c5576108c5610823565b50506001821b610916565b5060208310610133831016604e8410600b84101617156108f3575081810a610916565b6108ff5f198484610837565b805f190482111561091257610912610823565b0290505b92915050565b5f61092a60ff84168361087a565b9392505050565b808202811582820484141761091657610916610823565b5f8261096257634e487b7160e01b5f52601260045260245ffd5b500690565b8181038181111561091657610916610823565b5f6020828403121561098a575f80fd5b81516001600160a01b038116811461092a575f80fd5b612af5806109ad5f395ff3fe60806040526004361061032a575f3560e01c8063713898cd116101a3578063a8be9a58116100f2578063e2255e2911610092578063ecbde40c1161006d578063ecbde40c14610a13578063f2fde38b14610a3e578063f921400514610a5d578063ff89757014610a7c575f80fd5b8063e2255e29146109a1578063e7e64519146109c0578063ea2f0b37146109f4575f80fd5b8063c45a0155116100cd578063c45a015514610900578063c49b9a801461091f578063cc5006b31461093e578063dd62ed3e1461095d575f80fd5b8063a8be9a5814610896578063a9059cbb146108c1578063bc0ad5a3146108e0575f80fd5b80638b7afe2e1161015d5780639b26c923116101385780639b26c923146108215780639ba5e4d514610836578063a39801c614610858578063a457c2d714610877575f80fd5b80638b7afe2e146107d65780638da5cb5b1461080557806395d89b4114610335575f80fd5b8063713898cd146106e9578063715018a61461072b57806373cafdc21461073f578063786564c41461076157806379fdd8321461078057806388f820201461079f575f80fd5b806339509351116102795780634a74bb021161021957806352892884116101f457806352892884146106555780635342acb4146106745780635a1afc56146106ab57806370a08231146106ca575f80fd5b80634a74bb02146105f757806351ecfeae1461061757806352390c0214610636575f80fd5b8063437823ec11610254578063437823ec1461057b5780634549b0391461059a5780634a17beb1146105b95780634a49ac4c146105d8575f80fd5b806339509351146105145780633ccfd60b146105335780634359a87114610547575f80fd5b8063275d53ce116102e457806331b72ff0116102bf57806331b72ff0146104a257806334ef80bc146104b75780633685d419146104d6578063370f0a60146104f5575f80fd5b8063275d53ce146104475780632d83811914610468578063313ce56714610487575f80fd5b806306fdde0314610335578063095ea7b31461037657806316a9de14146103a557806318160ddd146103dc5780631cdd3be3146103fa57806323b872dd14610428575f80fd5b3661033157005b5f80fd5b348015610340575f80fd5b50604080518082018252600a8152692ab734a83934b73a32b960b11b6020820152905161036d9190612777565b60405180910390f35b348015610381575f80fd5b506103956103903660046127c7565b610a9b565b604051901515815260200161036d565b3480156103b0575f80fd5b50600d546103c4906001600160a01b031681565b6040516001600160a01b03909116815260200161036d565b3480156103e7575f80fd5b50600e545b60405190815260200161036d565b348015610405575f80fd5b506103956104143660046127ef565b600a6020525f908152604090205460ff1681565b348015610433575f80fd5b50610395610442366004612808565b610ab1565b348015610452575f80fd5b50610466610461366004612851565b610b24565b005b348015610473575f80fd5b506103ec61048236600461286a565b610b74565b348015610492575f80fd5b506040516012815260200161036d565b3480156104ad575f80fd5b506103ec60115481565b3480156104c2575f80fd5b506104666104d136600461286a565b610bef565b3480156104e1575f80fd5b506104666104f03660046127ef565b610c1d565b348015610500575f80fd5b5061046661050f3660046127ef565b610dc1565b34801561051f575f80fd5b5061039561052e3660046127c7565b610eef565b34801561053e575f80fd5b50610466610f25565b348015610552575f80fd5b506103ec6105613660046127ef565b6001600160a01b03165f9081526008602052604090205490565b348015610586575f80fd5b506104666105953660046127ef565b610f7a565b3480156105a5575f80fd5b506103ec6105b4366004612881565b610fc6565b3480156105c4575f80fd5b506104666105d33660046128ab565b61104d565b3480156105e3575f80fd5b506104666105f23660046127ef565b6110e0565b348015610602575f80fd5b5060275461039590600160b81b900460ff1681565b348015610622575f80fd5b5061046661063136600461291c565b611129565b348015610641575f80fd5b506104666106503660046127ef565b611166565b348015610660575f80fd5b506026546103c4906001600160a01b031681565b34801561067f575f80fd5b5061039561068e3660046127ef565b6001600160a01b03165f9081526006602052604090205460ff1690565b3480156106b6575f80fd5b506104666106c536600461286a565b6112b3565b3480156106d5575f80fd5b506103ec6106e43660046127ef565b6112e1565b3480156106f4575f80fd5b50601d54601e54601f5460205461070b9392919084565b60408051948552602085019390935291830152606082015260800161036d565b348015610736575f80fd5b5061046661133d565b34801561074a575f80fd5b50601954601a54601b54601c5461070b9392919084565b34801561076c575f80fd5b5061046661077b36600461291c565b6113ae565b34801561078b575f80fd5b506025546103c4906001600160a01b031681565b3480156107aa575f80fd5b506103956107b93660046127ef565b6001600160a01b03165f9081526007602052604090205460ff1690565b3480156107e1575f80fd5b506017546018546107f0919082565b6040805192835260208301919091520161036d565b348015610810575f80fd5b505f546001600160a01b03166103c4565b34801561082c575f80fd5b506103ec60105481565b348015610841575f80fd5b5060135460145460155460165461070b9392919084565b348015610863575f80fd5b5061039561087236600461294b565b6113eb565b348015610882575f80fd5b506103956108913660046127c7565b61145a565b3480156108a1575f80fd5b506103ec6108b03660046127ef565b60086020525f908152604090205481565b3480156108cc575f80fd5b506103956108db3660046127c7565b6114a7565b3480156108eb575f80fd5b5060275461039590600160a01b900460ff1681565b34801561090b575f80fd5b506027546103c4906001600160a01b031681565b34801561092a575f80fd5b50610466610939366004612851565b6114c7565b348015610949575f80fd5b50600c546103c4906001600160a01b031681565b348015610968575f80fd5b506103ec61097736600461297d565b6001600160a01b039182165f90815260056020908152604080832093909416825291909152205490565b3480156109ac575f80fd5b506104666109bb366004612851565b611548565b3480156109cb575f80fd5b506103ec6109da3660046127ef565b6001600160a01b03165f9081526009602052604090205490565b3480156109ff575f80fd5b50610466610a0e3660046127ef565b61158f565b348015610a1e575f80fd5b506103ec610a2d3660046127ef565b60096020525f908152604090205481565b348015610a49575f80fd5b50610466610a583660046127ef565b6115d8565b348015610a68575f80fd5b506012546103c4906001600160a01b031681565b348015610a87575f80fd5b50610466610a963660046128ab565b6116bf565b5f610aa733848461174d565b5060015b92915050565b5f610abd848484611870565b610b0e8433610b0985604051806060016040528060288152602001612a73602891396001600160a01b038a165f9081526005602090815260408083203384529091529020549190611b54565b61174d565b50602754600160b01b900460ff165b9392505050565b5f546001600160a01b03163314610b565760405162461bcd60e51b8152600401610b4d906129a5565b60405180910390fd5b60278054911515600160b01b0260ff60b01b19909216919091179055565b5f600f54821115610bda5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610b4d565b5f610be3611b7f565b9050610b1d81846129ee565b5f546001600160a01b03163314610c185760405162461bcd60e51b8152600401610b4d906129a5565b601155565b5f546001600160a01b03163314610c465760405162461bcd60e51b8152600401610b4d906129a5565b6001600160a01b0381165f9081526007602052604090205460ff16610cad5760405162461bcd60e51b815260206004820152601760248201527f4163636f756e74206973206e6f74206578636c756465640000000000000000006044820152606401610b4d565b5f5b600b54811015610dbd57816001600160a01b0316600b8281548110610cd657610cd6612a0d565b5f918252602090912001546001600160a01b031603610db557600b8054610cff90600190612a21565b81548110610d0f57610d0f612a0d565b5f91825260209091200154600b80546001600160a01b039092169183908110610d3a57610d3a612a0d565b5f91825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600482526040808220829055600790925220805460ff19169055600b805480610d9157610d91612a34565b5f8281526020902081015f1990810180546001600160a01b03191690550190555050565b600101610caf565b5050565b5f546001600160a01b03163314610dea5760405162461bcd60e51b8152600401610b4d906129a5565b6001600160a01b0381165f9081526007602052604090205460ff16610ec0576001600160a01b0381165f908152600760209081526040808320805460ff19166001179055600390915290205415610e75576001600160a01b0381165f90815260036020526040902054610e5c90610b74565b6001600160a01b0382165f908152600460205260409020555b600b80546001810182555f919091527f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db90180546001600160a01b0319166001600160a01b0383161790555b6001600160a01b0381165f908152600660205260409020805460ff19166001908117909155610dbd9082611ba0565b335f8181526005602090815260408083206001600160a01b03871684529091528120549091610aa7918590610b09908690612a48565b5f546001600160a01b03163314610f4e5760405162461bcd60e51b8152600401610b4d906129a5565b6040514790339082156108fc029083905f818181858888f19350505050158015610dbd573d5f803e3d5ffd5b5f546001600160a01b03163314610fa35760405162461bcd60e51b8152600401610b4d906129a5565b6001600160a01b03165f908152600660205260409020805460ff19166001179055565b5f600e548311156110195760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c79006044820152606401610b4d565b81611034575f61102a846001611bb4565b519150610aab9050565b5f611040846001611bb4565b602001519150610aab9050565b5f546001600160a01b031633146110765760405162461bcd60e51b8152600401610b4d906129a5565b5f5b818110156110db57600160065f85858581811061109757611097612a0d565b90506020020160208101906110ac91906127ef565b6001600160a01b0316815260208101919091526040015f20805460ff1916911515919091179055600101611078565b505050565b5f546001600160a01b031633146111095760405162461bcd60e51b8152600401610b4d906129a5565b6001600160a01b03165f908152600a60205260409020805460ff19169055565b5f546001600160a01b031633146111525760405162461bcd60e51b8152600401610b4d906129a5565b601993909355601a91909155601b55601c55565b5f546001600160a01b0316331461118f5760405162461bcd60e51b8152600401610b4d906129a5565b6001600160a01b0381165f9081526007602052604090205460ff16156111f75760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610b4d565b6001600160a01b0381165f908152600360205260409020541561124e576001600160a01b0381165f9081526003602052604090205461123590610b74565b6001600160a01b0382165f908152600460205260409020555b6001600160a01b03165f818152600760205260408120805460ff19166001908117909155600b805491820181559091527f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db90180546001600160a01b0319169091179055565b5f546001600160a01b031633146112dc5760405162461bcd60e51b8152600401610b4d906129a5565b601055565b6001600160a01b0381165f9081526007602052604081205460ff161561131c57506001600160a01b03165f9081526004602052604090205490565b6001600160a01b0382165f90815260036020526040902054610aab90610b74565b5f546001600160a01b031633146113665760405162461bcd60e51b8152600401610b4d906129a5565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b031633146113d75760405162461bcd60e51b8152600401610b4d906129a5565b601d93909355601e91909155601f55602055565b5f835f036113fa57505f610b1d565b5f6114058542612a21565b9050601154810361141a576001915050610b1d565b805f0361143f576012546001600160a01b0384811691161461143f575f915050610b1d565b838111611450576001915050610b1d565b505f949350505050565b5f610aa73384610b0985604051806060016040528060258152602001612a9b60259139335f9081526005602090815260408083206001600160a01b038d1684529091529020549190611b54565b5f6114b3338484611870565b5050602754600160a01b900460ff16919050565b5f546001600160a01b031633146114f05760405162461bcd60e51b8152600401610b4d906129a5565b60278054821515600160b81b0260ff60b81b199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1599061153d90831515815260200190565b60405180910390a150565b5f546001600160a01b031633146115715760405162461bcd60e51b8152600401610b4d906129a5565b60278054911515600160a01b0260ff60a01b19909216919091179055565b5f546001600160a01b031633146115b85760405162461bcd60e51b8152600401610b4d906129a5565b6001600160a01b03165f908152600660205260409020805460ff19169055565b5f546001600160a01b031633146116015760405162461bcd60e51b8152600401610b4d906129a5565b6001600160a01b0381166116665760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610b4d565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b031633146116e85760405162461bcd60e51b8152600401610b4d906129a5565b5f5b818110156110db576001600a5f85858581811061170957611709612a0d565b905060200201602081019061171e91906127ef565b6001600160a01b0316815260208101919091526040015f20805460ff19169115159190911790556001016116ea565b6001600160a01b0383166117af5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610b4d565b6001600160a01b0382166118105760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610b4d565b6001600160a01b038381165f8181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383165f908152600a602052604090205460ff161580156118b057506001600160a01b0382165f908152600a602052604090205460ff16155b6118fc5760405162461bcd60e51b815260206004820152601b60248201527f54686973206164647265737320697320626c61636b6c697374656400000000006044820152606401610b4d565b6001600160a01b0383166119605760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610b4d565b6001600160a01b0382166119c25760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610b4d565b5f8111611a235760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610b4d565b611a2c836112e1565b811115611a945760405162461bcd60e51b815260206004820152603060248201527f596f752061726520747279696e6720746f207472616e73666572206d6f72652060448201526f7468616e20796f752062616c616e636560801b6064820152608401610b4d565b600c546001600160a01b0316611ab15f546001600160a01b031690565b6001600160a01b031614611b075760405162461bcd60e51b815260206004820152601d60248201527f496e636f72726563742050616e63616b65207377617020726f757465720000006044820152606401610b4d565b6001600160a01b0383165f908152600660205260409020546110db9084908490849060ff1680611b4e57506001600160a01b0386165f9081526006602052604090205460ff165b15611bfc565b5f8184841115611b775760405162461bcd60e51b8152600401610b4d9190612777565b505050900390565b5f805f611b8a6121aa565b9092509050611b9981836129ee565b9250505090565b5f610b1d836001600160a01b03841661231a565b611bbc612728565b611bc683836123fd565b9050611bdb818484611bd6611b7f565b6124db565b60a08701526080860152606085015260408401526020830152815292915050565b8015611dc3576026546001600160a01b0390811690851603611cce575f546001600160a01b03858116911614801590611c4257505f546001600160a01b03848116911614155b8015611c5857506001600160a01b038316600114155b15611c96576001600160a01b0383165f908152600860205260408120549003611c96576001600160a01b0383165f9081526008602052604090204290555b601280546001600160a01b0319166001600160a01b038516179055601954602155601a54602255601b54602355601c54602455611e3b565b5f546001600160a01b03858116911614801590611cf857505f546001600160a01b03848116911614155b8015611d0e57506001600160a01b038316600114155b15611d8b576001600160a01b0384165f90815260086020526040812054611d3890601054876113eb565b905080611d6f5760405162461bcd60e51b815260206004820152600560248201526432b93937b960d91b6044820152606401610b4d565b506001600160a01b0384165f9081526009602052604090204290555b601d54602155601e54602255601f54602355602054602455601280546001600160a01b0319166001600160a01b038616179055611e3b565b6001600160a01b0384165f9081526006602052604090205460ff1615611dff57601280546001600160a01b0319166001600160a01b0386161790555b6001600160a01b0383165f9081526006602052604090205460ff1615611e3b57601280546001600160a01b0319166001600160a01b0385161790555b5f611e468383611bb4565b6001600160a01b0386165f9081526007602052604090205490915060ff168015611e8857506001600160a01b0384165f9081526007602052604090205460ff16155b15611ecd576001600160a01b0385165f90815260046020526040902054611eb0908490612a21565b6001600160a01b0386165f9081526004602052604090205561200a565b6001600160a01b0385165f9081526007602052604090205460ff16158015611f0c57506001600160a01b0384165f9081526007602052604090205460ff165b15611f555760c08101516001600160a01b0385165f90815260046020526040902054611f389190612a48565b6001600160a01b0385165f9081526004602052604090205561200a565b6001600160a01b0385165f9081526007602052604090205460ff168015611f9357506001600160a01b0384165f9081526007602052604090205460ff165b1561200a576001600160a01b0385165f90815260046020526040902054611fbb908490612a21565b6001600160a01b038087165f908152600460205260408082209390935560c084015191871681529190912054611ff19190612a48565b6001600160a01b0385165f908152600460205260409020555b80516001600160a01b0386165f9081526003602052604090205461202e9190612a21565b6001600160a01b038087165f90815260036020908152604080832094909455840151918716815291909120546120649190612a48565b6001600160a01b0385165f90815260036020526040902055811561212a5761209481604001518260e0015161258b565b6120a781606001518261010001516125b9565b6120ba8160800151826101200151612654565b6120cd8160a00151826101400151612681565b306001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8361012001518461010001516121189190612a48565b60405190815260200160405180910390a35b836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360c0015160405161217391815260200190565b60405180910390a36121866001856126c0565b50612190856112e1565b5f036121a3576121a1600186611ba0565b505b5050505050565b600f54600e545f918291825b600b548110156122e9578260035f600b84815481106121d7576121d7612a0d565b5f9182526020808320909101546001600160a01b03168352820192909252604001902054118061223f57508160045f600b848154811061221957612219612a0d565b5f9182526020808320909101546001600160a01b03168352820192909252604001902054115b1561225557600f54600e54945094505050509091565b60035f600b838154811061226b5761226b612a0d565b5f9182526020808320909101546001600160a01b031683528201929092526040019020546122999084612a21565b925060045f600b83815481106122b1576122b1612a0d565b5f9182526020808320909101546001600160a01b031683528201929092526040019020546122df9083612a21565b91506001016121b6565b50600e54600f546122fa91906129ee565b82101561231157600f54600e549350935050509091565b90939092509050565b5f81815260018301602052604081205480156123f4575f61233c600183612a21565b85549091505f9061234f90600190612a21565b90508181146123ae575f865f01828154811061236d5761236d612a0d565b905f5260205f200154905080875f01848154811061238d5761238d612a0d565b5f918252602080832090910192909255918252600188019052604090208390555b85548690806123bf576123bf612a34565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f905560019350505050610aab565b5f915050610aab565b612405612728565b816124165760c08101839052610aab565b6021546064906124269085612a5b565b61243091906129ee565b60e08201526022546064906124459085612a5b565b61244f91906129ee565b6101008201526023546064906124659085612a5b565b61246f91906129ee565b6101208201526024546064906124859085612a5b565b61248f91906129ee565b610140820181905261012082015161010083015160e08401516124b29087612a21565b6124bc9190612a21565b6124c69190612a21565b6124d09190612a21565b60c082015292915050565b5f80808080806124eb878a612a5b565b95508761250557508493505f92508291508190508061257e565b868a60e001516125159190612a5b565b9350868a61010001516125289190612a5b565b9250868a610120015161253b9190612a5b565b9150868a610140015161254e9190612a5b565b905080828461255d878a612a21565b6125679190612a21565b6125719190612a21565b61257b9190612a21565b94505b9499939850945094509450565b81600f546125999190612a21565b600f55601380548291905f906125b0908490612a48565b90915550505050565b8060175f015f8282546125cc9190612a48565b9091555050601480548291905f906125e5908490612a48565b9091555050305f90815260036020526040902054612604908390612a48565b305f9081526003602090815260408083209390935560079052205460ff1615610dbd57305f90815260046020526040902054612641908290612a48565b305f908152600460205260409020555050565b8060176001015f8282546126689190612a48565b9091555050601580548291905f906125e5908490612a48565b8060136003015f8282546126959190612a48565b9091555050600e546126a8908290612a21565b600e55600f546126b9908390612a21565b600f555050565b5f610b1d836001600160a01b0384165f6126ec83835f9081526001919091016020526040902054151590565b61272157508154600181810184555f848152602080822090930184905584548482528286019093526040902091909155610aab565b505f610aab565b6040518061016001604052805f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81525090565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b80356001600160a01b03811681146127c2575f80fd5b919050565b5f80604083850312156127d8575f80fd5b6127e1836127ac565b946020939093013593505050565b5f602082840312156127ff575f80fd5b610b1d826127ac565b5f805f6060848603121561281a575f80fd5b612823846127ac565b9250612831602085016127ac565b929592945050506040919091013590565b803580151581146127c2575f80fd5b5f60208284031215612861575f80fd5b610b1d82612842565b5f6020828403121561287a575f80fd5b5035919050565b5f8060408385031215612892575f80fd5b823591506128a260208401612842565b90509250929050565b5f80602083850312156128bc575f80fd5b823567ffffffffffffffff8111156128d2575f80fd5b8301601f810185136128e2575f80fd5b803567ffffffffffffffff8111156128f8575f80fd5b8560208260051b840101111561290c575f80fd5b6020919091019590945092505050565b5f805f806080858703121561292f575f80fd5b5050823594602084013594506040840135936060013592509050565b5f805f6060848603121561295d575f80fd5b8335925060208401359150612974604085016127ac565b90509250925092565b5f806040838503121561298e575f80fd5b612997836127ac565b91506128a2602084016127ac565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b5f82612a0857634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52603260045260245ffd5b81810381811115610aab57610aab6129da565b634e487b7160e01b5f52603160045260245ffd5b80820180821115610aab57610aab6129da565b8082028115828204841417610aab57610aab6129da56fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122063ddcb34e49e2ab00db016e74762be30cbb4f00636ffb6352184a7837a9fd6d264736f6c634300081a0033
Deployed Bytecode
0x60806040526004361061032a575f3560e01c8063713898cd116101a3578063a8be9a58116100f2578063e2255e2911610092578063ecbde40c1161006d578063ecbde40c14610a13578063f2fde38b14610a3e578063f921400514610a5d578063ff89757014610a7c575f80fd5b8063e2255e29146109a1578063e7e64519146109c0578063ea2f0b37146109f4575f80fd5b8063c45a0155116100cd578063c45a015514610900578063c49b9a801461091f578063cc5006b31461093e578063dd62ed3e1461095d575f80fd5b8063a8be9a5814610896578063a9059cbb146108c1578063bc0ad5a3146108e0575f80fd5b80638b7afe2e1161015d5780639b26c923116101385780639b26c923146108215780639ba5e4d514610836578063a39801c614610858578063a457c2d714610877575f80fd5b80638b7afe2e146107d65780638da5cb5b1461080557806395d89b4114610335575f80fd5b8063713898cd146106e9578063715018a61461072b57806373cafdc21461073f578063786564c41461076157806379fdd8321461078057806388f820201461079f575f80fd5b806339509351116102795780634a74bb021161021957806352892884116101f457806352892884146106555780635342acb4146106745780635a1afc56146106ab57806370a08231146106ca575f80fd5b80634a74bb02146105f757806351ecfeae1461061757806352390c0214610636575f80fd5b8063437823ec11610254578063437823ec1461057b5780634549b0391461059a5780634a17beb1146105b95780634a49ac4c146105d8575f80fd5b806339509351146105145780633ccfd60b146105335780634359a87114610547575f80fd5b8063275d53ce116102e457806331b72ff0116102bf57806331b72ff0146104a257806334ef80bc146104b75780633685d419146104d6578063370f0a60146104f5575f80fd5b8063275d53ce146104475780632d83811914610468578063313ce56714610487575f80fd5b806306fdde0314610335578063095ea7b31461037657806316a9de14146103a557806318160ddd146103dc5780631cdd3be3146103fa57806323b872dd14610428575f80fd5b3661033157005b5f80fd5b348015610340575f80fd5b50604080518082018252600a8152692ab734a83934b73a32b960b11b6020820152905161036d9190612777565b60405180910390f35b348015610381575f80fd5b506103956103903660046127c7565b610a9b565b604051901515815260200161036d565b3480156103b0575f80fd5b50600d546103c4906001600160a01b031681565b6040516001600160a01b03909116815260200161036d565b3480156103e7575f80fd5b50600e545b60405190815260200161036d565b348015610405575f80fd5b506103956104143660046127ef565b600a6020525f908152604090205460ff1681565b348015610433575f80fd5b50610395610442366004612808565b610ab1565b348015610452575f80fd5b50610466610461366004612851565b610b24565b005b348015610473575f80fd5b506103ec61048236600461286a565b610b74565b348015610492575f80fd5b506040516012815260200161036d565b3480156104ad575f80fd5b506103ec60115481565b3480156104c2575f80fd5b506104666104d136600461286a565b610bef565b3480156104e1575f80fd5b506104666104f03660046127ef565b610c1d565b348015610500575f80fd5b5061046661050f3660046127ef565b610dc1565b34801561051f575f80fd5b5061039561052e3660046127c7565b610eef565b34801561053e575f80fd5b50610466610f25565b348015610552575f80fd5b506103ec6105613660046127ef565b6001600160a01b03165f9081526008602052604090205490565b348015610586575f80fd5b506104666105953660046127ef565b610f7a565b3480156105a5575f80fd5b506103ec6105b4366004612881565b610fc6565b3480156105c4575f80fd5b506104666105d33660046128ab565b61104d565b3480156105e3575f80fd5b506104666105f23660046127ef565b6110e0565b348015610602575f80fd5b5060275461039590600160b81b900460ff1681565b348015610622575f80fd5b5061046661063136600461291c565b611129565b348015610641575f80fd5b506104666106503660046127ef565b611166565b348015610660575f80fd5b506026546103c4906001600160a01b031681565b34801561067f575f80fd5b5061039561068e3660046127ef565b6001600160a01b03165f9081526006602052604090205460ff1690565b3480156106b6575f80fd5b506104666106c536600461286a565b6112b3565b3480156106d5575f80fd5b506103ec6106e43660046127ef565b6112e1565b3480156106f4575f80fd5b50601d54601e54601f5460205461070b9392919084565b60408051948552602085019390935291830152606082015260800161036d565b348015610736575f80fd5b5061046661133d565b34801561074a575f80fd5b50601954601a54601b54601c5461070b9392919084565b34801561076c575f80fd5b5061046661077b36600461291c565b6113ae565b34801561078b575f80fd5b506025546103c4906001600160a01b031681565b3480156107aa575f80fd5b506103956107b93660046127ef565b6001600160a01b03165f9081526007602052604090205460ff1690565b3480156107e1575f80fd5b506017546018546107f0919082565b6040805192835260208301919091520161036d565b348015610810575f80fd5b505f546001600160a01b03166103c4565b34801561082c575f80fd5b506103ec60105481565b348015610841575f80fd5b5060135460145460155460165461070b9392919084565b348015610863575f80fd5b5061039561087236600461294b565b6113eb565b348015610882575f80fd5b506103956108913660046127c7565b61145a565b3480156108a1575f80fd5b506103ec6108b03660046127ef565b60086020525f908152604090205481565b3480156108cc575f80fd5b506103956108db3660046127c7565b6114a7565b3480156108eb575f80fd5b5060275461039590600160a01b900460ff1681565b34801561090b575f80fd5b506027546103c4906001600160a01b031681565b34801561092a575f80fd5b50610466610939366004612851565b6114c7565b348015610949575f80fd5b50600c546103c4906001600160a01b031681565b348015610968575f80fd5b506103ec61097736600461297d565b6001600160a01b039182165f90815260056020908152604080832093909416825291909152205490565b3480156109ac575f80fd5b506104666109bb366004612851565b611548565b3480156109cb575f80fd5b506103ec6109da3660046127ef565b6001600160a01b03165f9081526009602052604090205490565b3480156109ff575f80fd5b50610466610a0e3660046127ef565b61158f565b348015610a1e575f80fd5b506103ec610a2d3660046127ef565b60096020525f908152604090205481565b348015610a49575f80fd5b50610466610a583660046127ef565b6115d8565b348015610a68575f80fd5b506012546103c4906001600160a01b031681565b348015610a87575f80fd5b50610466610a963660046128ab565b6116bf565b5f610aa733848461174d565b5060015b92915050565b5f610abd848484611870565b610b0e8433610b0985604051806060016040528060288152602001612a73602891396001600160a01b038a165f9081526005602090815260408083203384529091529020549190611b54565b61174d565b50602754600160b01b900460ff165b9392505050565b5f546001600160a01b03163314610b565760405162461bcd60e51b8152600401610b4d906129a5565b60405180910390fd5b60278054911515600160b01b0260ff60b01b19909216919091179055565b5f600f54821115610bda5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610b4d565b5f610be3611b7f565b9050610b1d81846129ee565b5f546001600160a01b03163314610c185760405162461bcd60e51b8152600401610b4d906129a5565b601155565b5f546001600160a01b03163314610c465760405162461bcd60e51b8152600401610b4d906129a5565b6001600160a01b0381165f9081526007602052604090205460ff16610cad5760405162461bcd60e51b815260206004820152601760248201527f4163636f756e74206973206e6f74206578636c756465640000000000000000006044820152606401610b4d565b5f5b600b54811015610dbd57816001600160a01b0316600b8281548110610cd657610cd6612a0d565b5f918252602090912001546001600160a01b031603610db557600b8054610cff90600190612a21565b81548110610d0f57610d0f612a0d565b5f91825260209091200154600b80546001600160a01b039092169183908110610d3a57610d3a612a0d565b5f91825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600482526040808220829055600790925220805460ff19169055600b805480610d9157610d91612a34565b5f8281526020902081015f1990810180546001600160a01b03191690550190555050565b600101610caf565b5050565b5f546001600160a01b03163314610dea5760405162461bcd60e51b8152600401610b4d906129a5565b6001600160a01b0381165f9081526007602052604090205460ff16610ec0576001600160a01b0381165f908152600760209081526040808320805460ff19166001179055600390915290205415610e75576001600160a01b0381165f90815260036020526040902054610e5c90610b74565b6001600160a01b0382165f908152600460205260409020555b600b80546001810182555f919091527f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db90180546001600160a01b0319166001600160a01b0383161790555b6001600160a01b0381165f908152600660205260409020805460ff19166001908117909155610dbd9082611ba0565b335f8181526005602090815260408083206001600160a01b03871684529091528120549091610aa7918590610b09908690612a48565b5f546001600160a01b03163314610f4e5760405162461bcd60e51b8152600401610b4d906129a5565b6040514790339082156108fc029083905f818181858888f19350505050158015610dbd573d5f803e3d5ffd5b5f546001600160a01b03163314610fa35760405162461bcd60e51b8152600401610b4d906129a5565b6001600160a01b03165f908152600660205260409020805460ff19166001179055565b5f600e548311156110195760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c79006044820152606401610b4d565b81611034575f61102a846001611bb4565b519150610aab9050565b5f611040846001611bb4565b602001519150610aab9050565b5f546001600160a01b031633146110765760405162461bcd60e51b8152600401610b4d906129a5565b5f5b818110156110db57600160065f85858581811061109757611097612a0d565b90506020020160208101906110ac91906127ef565b6001600160a01b0316815260208101919091526040015f20805460ff1916911515919091179055600101611078565b505050565b5f546001600160a01b031633146111095760405162461bcd60e51b8152600401610b4d906129a5565b6001600160a01b03165f908152600a60205260409020805460ff19169055565b5f546001600160a01b031633146111525760405162461bcd60e51b8152600401610b4d906129a5565b601993909355601a91909155601b55601c55565b5f546001600160a01b0316331461118f5760405162461bcd60e51b8152600401610b4d906129a5565b6001600160a01b0381165f9081526007602052604090205460ff16156111f75760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610b4d565b6001600160a01b0381165f908152600360205260409020541561124e576001600160a01b0381165f9081526003602052604090205461123590610b74565b6001600160a01b0382165f908152600460205260409020555b6001600160a01b03165f818152600760205260408120805460ff19166001908117909155600b805491820181559091527f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db90180546001600160a01b0319169091179055565b5f546001600160a01b031633146112dc5760405162461bcd60e51b8152600401610b4d906129a5565b601055565b6001600160a01b0381165f9081526007602052604081205460ff161561131c57506001600160a01b03165f9081526004602052604090205490565b6001600160a01b0382165f90815260036020526040902054610aab90610b74565b5f546001600160a01b031633146113665760405162461bcd60e51b8152600401610b4d906129a5565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b031633146113d75760405162461bcd60e51b8152600401610b4d906129a5565b601d93909355601e91909155601f55602055565b5f835f036113fa57505f610b1d565b5f6114058542612a21565b9050601154810361141a576001915050610b1d565b805f0361143f576012546001600160a01b0384811691161461143f575f915050610b1d565b838111611450576001915050610b1d565b505f949350505050565b5f610aa73384610b0985604051806060016040528060258152602001612a9b60259139335f9081526005602090815260408083206001600160a01b038d1684529091529020549190611b54565b5f6114b3338484611870565b5050602754600160a01b900460ff16919050565b5f546001600160a01b031633146114f05760405162461bcd60e51b8152600401610b4d906129a5565b60278054821515600160b81b0260ff60b81b199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1599061153d90831515815260200190565b60405180910390a150565b5f546001600160a01b031633146115715760405162461bcd60e51b8152600401610b4d906129a5565b60278054911515600160a01b0260ff60a01b19909216919091179055565b5f546001600160a01b031633146115b85760405162461bcd60e51b8152600401610b4d906129a5565b6001600160a01b03165f908152600660205260409020805460ff19169055565b5f546001600160a01b031633146116015760405162461bcd60e51b8152600401610b4d906129a5565b6001600160a01b0381166116665760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610b4d565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b031633146116e85760405162461bcd60e51b8152600401610b4d906129a5565b5f5b818110156110db576001600a5f85858581811061170957611709612a0d565b905060200201602081019061171e91906127ef565b6001600160a01b0316815260208101919091526040015f20805460ff19169115159190911790556001016116ea565b6001600160a01b0383166117af5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610b4d565b6001600160a01b0382166118105760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610b4d565b6001600160a01b038381165f8181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383165f908152600a602052604090205460ff161580156118b057506001600160a01b0382165f908152600a602052604090205460ff16155b6118fc5760405162461bcd60e51b815260206004820152601b60248201527f54686973206164647265737320697320626c61636b6c697374656400000000006044820152606401610b4d565b6001600160a01b0383166119605760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610b4d565b6001600160a01b0382166119c25760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610b4d565b5f8111611a235760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610b4d565b611a2c836112e1565b811115611a945760405162461bcd60e51b815260206004820152603060248201527f596f752061726520747279696e6720746f207472616e73666572206d6f72652060448201526f7468616e20796f752062616c616e636560801b6064820152608401610b4d565b600c546001600160a01b0316611ab15f546001600160a01b031690565b6001600160a01b031614611b075760405162461bcd60e51b815260206004820152601d60248201527f496e636f72726563742050616e63616b65207377617020726f757465720000006044820152606401610b4d565b6001600160a01b0383165f908152600660205260409020546110db9084908490849060ff1680611b4e57506001600160a01b0386165f9081526006602052604090205460ff165b15611bfc565b5f8184841115611b775760405162461bcd60e51b8152600401610b4d9190612777565b505050900390565b5f805f611b8a6121aa565b9092509050611b9981836129ee565b9250505090565b5f610b1d836001600160a01b03841661231a565b611bbc612728565b611bc683836123fd565b9050611bdb818484611bd6611b7f565b6124db565b60a08701526080860152606085015260408401526020830152815292915050565b8015611dc3576026546001600160a01b0390811690851603611cce575f546001600160a01b03858116911614801590611c4257505f546001600160a01b03848116911614155b8015611c5857506001600160a01b038316600114155b15611c96576001600160a01b0383165f908152600860205260408120549003611c96576001600160a01b0383165f9081526008602052604090204290555b601280546001600160a01b0319166001600160a01b038516179055601954602155601a54602255601b54602355601c54602455611e3b565b5f546001600160a01b03858116911614801590611cf857505f546001600160a01b03848116911614155b8015611d0e57506001600160a01b038316600114155b15611d8b576001600160a01b0384165f90815260086020526040812054611d3890601054876113eb565b905080611d6f5760405162461bcd60e51b815260206004820152600560248201526432b93937b960d91b6044820152606401610b4d565b506001600160a01b0384165f9081526009602052604090204290555b601d54602155601e54602255601f54602355602054602455601280546001600160a01b0319166001600160a01b038616179055611e3b565b6001600160a01b0384165f9081526006602052604090205460ff1615611dff57601280546001600160a01b0319166001600160a01b0386161790555b6001600160a01b0383165f9081526006602052604090205460ff1615611e3b57601280546001600160a01b0319166001600160a01b0385161790555b5f611e468383611bb4565b6001600160a01b0386165f9081526007602052604090205490915060ff168015611e8857506001600160a01b0384165f9081526007602052604090205460ff16155b15611ecd576001600160a01b0385165f90815260046020526040902054611eb0908490612a21565b6001600160a01b0386165f9081526004602052604090205561200a565b6001600160a01b0385165f9081526007602052604090205460ff16158015611f0c57506001600160a01b0384165f9081526007602052604090205460ff165b15611f555760c08101516001600160a01b0385165f90815260046020526040902054611f389190612a48565b6001600160a01b0385165f9081526004602052604090205561200a565b6001600160a01b0385165f9081526007602052604090205460ff168015611f9357506001600160a01b0384165f9081526007602052604090205460ff165b1561200a576001600160a01b0385165f90815260046020526040902054611fbb908490612a21565b6001600160a01b038087165f908152600460205260408082209390935560c084015191871681529190912054611ff19190612a48565b6001600160a01b0385165f908152600460205260409020555b80516001600160a01b0386165f9081526003602052604090205461202e9190612a21565b6001600160a01b038087165f90815260036020908152604080832094909455840151918716815291909120546120649190612a48565b6001600160a01b0385165f90815260036020526040902055811561212a5761209481604001518260e0015161258b565b6120a781606001518261010001516125b9565b6120ba8160800151826101200151612654565b6120cd8160a00151826101400151612681565b306001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8361012001518461010001516121189190612a48565b60405190815260200160405180910390a35b836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360c0015160405161217391815260200190565b60405180910390a36121866001856126c0565b50612190856112e1565b5f036121a3576121a1600186611ba0565b505b5050505050565b600f54600e545f918291825b600b548110156122e9578260035f600b84815481106121d7576121d7612a0d565b5f9182526020808320909101546001600160a01b03168352820192909252604001902054118061223f57508160045f600b848154811061221957612219612a0d565b5f9182526020808320909101546001600160a01b03168352820192909252604001902054115b1561225557600f54600e54945094505050509091565b60035f600b838154811061226b5761226b612a0d565b5f9182526020808320909101546001600160a01b031683528201929092526040019020546122999084612a21565b925060045f600b83815481106122b1576122b1612a0d565b5f9182526020808320909101546001600160a01b031683528201929092526040019020546122df9083612a21565b91506001016121b6565b50600e54600f546122fa91906129ee565b82101561231157600f54600e549350935050509091565b90939092509050565b5f81815260018301602052604081205480156123f4575f61233c600183612a21565b85549091505f9061234f90600190612a21565b90508181146123ae575f865f01828154811061236d5761236d612a0d565b905f5260205f200154905080875f01848154811061238d5761238d612a0d565b5f918252602080832090910192909255918252600188019052604090208390555b85548690806123bf576123bf612a34565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f905560019350505050610aab565b5f915050610aab565b612405612728565b816124165760c08101839052610aab565b6021546064906124269085612a5b565b61243091906129ee565b60e08201526022546064906124459085612a5b565b61244f91906129ee565b6101008201526023546064906124659085612a5b565b61246f91906129ee565b6101208201526024546064906124859085612a5b565b61248f91906129ee565b610140820181905261012082015161010083015160e08401516124b29087612a21565b6124bc9190612a21565b6124c69190612a21565b6124d09190612a21565b60c082015292915050565b5f80808080806124eb878a612a5b565b95508761250557508493505f92508291508190508061257e565b868a60e001516125159190612a5b565b9350868a61010001516125289190612a5b565b9250868a610120015161253b9190612a5b565b9150868a610140015161254e9190612a5b565b905080828461255d878a612a21565b6125679190612a21565b6125719190612a21565b61257b9190612a21565b94505b9499939850945094509450565b81600f546125999190612a21565b600f55601380548291905f906125b0908490612a48565b90915550505050565b8060175f015f8282546125cc9190612a48565b9091555050601480548291905f906125e5908490612a48565b9091555050305f90815260036020526040902054612604908390612a48565b305f9081526003602090815260408083209390935560079052205460ff1615610dbd57305f90815260046020526040902054612641908290612a48565b305f908152600460205260409020555050565b8060176001015f8282546126689190612a48565b9091555050601580548291905f906125e5908490612a48565b8060136003015f8282546126959190612a48565b9091555050600e546126a8908290612a21565b600e55600f546126b9908390612a21565b600f555050565b5f610b1d836001600160a01b0384165f6126ec83835f9081526001919091016020526040902054151590565b61272157508154600181810184555f848152602080822090930184905584548482528286019093526040902091909155610aab565b505f610aab565b6040518061016001604052805f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81525090565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b80356001600160a01b03811681146127c2575f80fd5b919050565b5f80604083850312156127d8575f80fd5b6127e1836127ac565b946020939093013593505050565b5f602082840312156127ff575f80fd5b610b1d826127ac565b5f805f6060848603121561281a575f80fd5b612823846127ac565b9250612831602085016127ac565b929592945050506040919091013590565b803580151581146127c2575f80fd5b5f60208284031215612861575f80fd5b610b1d82612842565b5f6020828403121561287a575f80fd5b5035919050565b5f8060408385031215612892575f80fd5b823591506128a260208401612842565b90509250929050565b5f80602083850312156128bc575f80fd5b823567ffffffffffffffff8111156128d2575f80fd5b8301601f810185136128e2575f80fd5b803567ffffffffffffffff8111156128f8575f80fd5b8560208260051b840101111561290c575f80fd5b6020919091019590945092505050565b5f805f806080858703121561292f575f80fd5b5050823594602084013594506040840135936060013592509050565b5f805f6060848603121561295d575f80fd5b8335925060208401359150612974604085016127ac565b90509250925092565b5f806040838503121561298e575f80fd5b612997836127ac565b91506128a2602084016127ac565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b5f82612a0857634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52603260045260245ffd5b81810381811115610aab57610aab6129da565b634e487b7160e01b5f52603160045260245ffd5b80820180821115610aab57610aab6129da565b8082028115828204841417610aab57610aab6129da56fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122063ddcb34e49e2ab00db016e74762be30cbb4f00636ffb6352184a7837a9fd6d264736f6c634300081a0033
Deployed Bytecode Sourcemap
18218:22572:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26391:83;;;;;;;;;;-1:-1:-1;26461:5:0;;;;;;;;;;;-1:-1:-1;;;26461:5:0;;;;26391:83;;;;26461:5;26391:83;:::i;:::-;;;;;;;;27782:193;;;;;;;;;;-1:-1:-1;27782:193:0;;;;;:::i;:::-;;:::i;:::-;;;1085:14:1;;1078:22;1060:41;;1048:2;1033:18;27782:193:0;920:187:1;19251:96:0;;;;;;;;;;-1:-1:-1;19251:96:0;;;;-1:-1:-1;;;;;19251:96:0;;;;;;-1:-1:-1;;;;;1276:32:1;;;1258:51;;1246:2;1231:18;19251:96:0;1112:203:1;26668:95:0;;;;;;;;;;-1:-1:-1;26748:7:0;;26668:95;;;1466:25:1;;;1454:2;1439:18;26668:95:0;1320:177:1;18858:46:0;;;;;;;;;;-1:-1:-1;18858:46:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;27983:455;;;;;;;;;;-1:-1:-1;27983:455:0;;;;;:::i;:::-;;:::i;27487:95::-;;;;;;;;;;-1:-1:-1;27487:95:0;;;;;:::i;:::-;;:::i;:::-;;29784:319;;;;;;;;;;-1:-1:-1;29784:319:0;;;;;:::i;:::-;;:::i;26577:83::-;;;;;;;;;;-1:-1:-1;26577:83:0;;18982:2;2795:36:1;;2783:2;2768:18;26577:83:0;2653:184:1;19509:42:0;;;;;;;;;;;;;;;;26141:112;;;;;;;;;;-1:-1:-1;26141:112:0;;;;;:::i;:::-;;:::i;30878:473::-;;;;;;;;;;-1:-1:-1;30878:473:0;;;;;:::i;:::-;;:::i;30451:419::-;;;;;;;;;;-1:-1:-1;30451:419:0;;;;;:::i;:::-;;:::i;28446:297::-;;;;;;;;;;-1:-1:-1;28446:297:0;;;;;:::i;:::-;;:::i;40644:143::-;;;;;;;;;;;;;:::i;24669:164::-;;;;;;;;;;-1:-1:-1;24669:164:0;;;;;:::i;:::-;-1:-1:-1;;;;;24797:28:0;24765:7;24797:28;;;:20;:28;;;;;;;24669:164;31359:111;;;;;;;;;;-1:-1:-1;31359:111:0;;;;;:::i;:::-;;:::i;29287:489::-;;;;;;;;;;-1:-1:-1;29287:489:0;;;;;:::i;:::-;;:::i;27281:198::-;;;;;;;;;;-1:-1:-1;27281:198:0;;;;;:::i;:::-;;:::i;31907:115::-;;;;;;;;;;-1:-1:-1;31907:115:0;;;;;:::i;:::-;;:::i;20906:40::-;;;;;;;;;;-1:-1:-1;20906:40:0;;;;-1:-1:-1;;;20906:40:0;;;;;;24977:296;;;;;;;;;;-1:-1:-1;24977:296:0;;;;;:::i;:::-;;:::i;30111:332::-;;;;;;;;;;-1:-1:-1;30111:332:0;;;;;:::i;:::-;;:::i;20725:32::-;;;;;;;;;;-1:-1:-1;20725:32:0;;;;-1:-1:-1;;;;;20725:32:0;;;31596:124;;;;;;;;;;-1:-1:-1;31596:124:0;;;;;:::i;:::-;-1:-1:-1;;;;;31685:27:0;31661:4;31685:27;;;:18;:27;;;;;;;;;31596:124;26261:122;;;;;;;;;;-1:-1:-1;26261:122:0;;;;;:::i;:::-;;:::i;26771:198::-;;;;;;;;;;-1:-1:-1;26771:198:0;;;;;:::i;:::-;;:::i;20170:104::-;;;;;;;;;;-1:-1:-1;20170:104:0;;;;;;;;;;;;;;;;;;;4579:25:1;;;4635:2;4620:18;;4613:34;;;;4663:18;;;4656:34;4721:2;4706:18;;4699:34;4566:3;4551:19;20170:104:0;4348:391:1;8353:148:0;;;;;;;;;;;;;:::i;20058:103::-;;;;;;;;;;-1:-1:-1;20058:103:0;;;;;;;;;;;;;;;25281:301;;;;;;;;;;-1:-1:-1;25281:301:0;;;;;:::i;:::-;;:::i;20673:45::-;;;;;;;;;;-1:-1:-1;20673:45:0;;;;-1:-1:-1;;;;;20673:45:0;;;29159:120;;;;;;;;;;-1:-1:-1;29159:120:0;;;;;:::i;:::-;-1:-1:-1;;;;;29251:20:0;29227:4;29251:20;;;:11;:20;;;;;;;;;29159:120;20018:31;;;;;;;;;;-1:-1:-1;20018:31:0;;;;;;;;;;;;;5153:25:1;;;5209:2;5194:18;;5187:34;;;;5126:18;20018:31:0;4979:248:1;8130:87:0;;;;;;;;;;-1:-1:-1;8176:7:0;8203:6;-1:-1:-1;;;;;8203:6:0;8130:87;;19470:32;;;;;;;;;;;;;;;;19737:36;;;;;;;;;;-1:-1:-1;19737:36:0;;;;;;;;;;;;;;;25590:543;;;;;;;;;;-1:-1:-1;25590:543:0;;;;;:::i;:::-;;:::i;28751:400::-;;;;;;;;;;-1:-1:-1;28751:400:0;;;;;:::i;:::-;;:::i;18739:55::-;;;;;;;;;;-1:-1:-1;18739:55:0;;;;;:::i;:::-;;;;;;;;;;;;;;26977:202;;;;;;;;;;-1:-1:-1;26977:202:0;;;;;:::i;:::-;;:::i;20805:26::-;;;;;;;;;;-1:-1:-1;20805:26:0;;;;-1:-1:-1;;;20805:26:0;;;;;;20764:32;;;;;;;;;;-1:-1:-1;20764:32:0;;;;-1:-1:-1;;;;;20764:32:0;;;31728:171;;;;;;;;;;-1:-1:-1;31728:171:0;;;;;:::i;:::-;;:::i;19148:96::-;;;;;;;;;;-1:-1:-1;19148:96:0;;;;-1:-1:-1;;;;;19148:96:0;;;27590:184;;;;;;;;;;-1:-1:-1;27590:184:0;;;;;:::i;:::-;-1:-1:-1;;;;;27739:18:0;;;27707:7;27739:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;27590:184;27187:86;;;;;;;;;;-1:-1:-1;27187:86:0;;;;;:::i;:::-;;:::i;24841:128::-;;;;;;;;;;-1:-1:-1;24841:128:0;;;;;:::i;:::-;-1:-1:-1;;;;;24934:27:0;24907:7;24934:27;;;:15;:27;;;;;;;24841:128;31478:110;;;;;;;;;;-1:-1:-1;31478:110:0;;;;;:::i;:::-;;:::i;18801:50::-;;;;;;;;;;-1:-1:-1;18801:50:0;;;;;:::i;:::-;;;;;;;;;;;;;;8509:281;;;;;;;;;;-1:-1:-1;8509:281:0;;;;;:::i;:::-;;:::i;19560:26::-;;;;;;;;;;-1:-1:-1;19560:26:0;;;;-1:-1:-1;;;;;19560:26:0;;;32030:196;;;;;;;;;;-1:-1:-1;32030:196:0;;;;;:::i;:::-;;:::i;27782:193::-;27884:4;27906:39;3621:10;27929:7;27938:6;27906:8;:39::i;:::-;-1:-1:-1;27963:4:0;27782:193;;;;;:::o;27983:455::-;28115:4;28132:36;28142:6;28150:9;28161:6;28132:9;:36::i;:::-;28179:220;28202:6;3621:10;28250:138;28306:6;28250:138;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;28250:19:0;;;;;;:11;:19;;;;;;;;3621:10;28250:33;;;;;;;;;;:37;:138::i;:::-;28179:8;:220::i;:::-;-1:-1:-1;28417:13:0;;-1:-1:-1;;;28417:13:0;;;;27983:455;;;;;;:::o;27487:95::-;8176:7;8203:6;-1:-1:-1;;;;;8203:6:0;3621:10;8265:23;8257:68;;;;-1:-1:-1;;;8257:68:0;;;;;;;:::i;:::-;;;;;;;;;27551:13:::1;:23:::0;;;::::1;;-1:-1:-1::0;;;27551:23:0::1;-1:-1:-1::0;;;;27551:23:0;;::::1;::::0;;;::::1;::::0;;27487:95::o;29784:319::-;29878:7;29936;;29925;:18;;29903:110;;;;-1:-1:-1;;;29903:110:0;;6719:2:1;29903:110:0;;;6701:21:1;6758:2;6738:18;;;6731:30;6797:34;6777:18;;;6770:62;-1:-1:-1;;;6848:18:1;;;6841:40;6898:19;;29903:110:0;6517:406:1;29903:110:0;30024:19;30046:10;:8;:10::i;:::-;30024:32;-1:-1:-1;30074:21:0;30024:32;30074:7;:21;:::i;26141:112::-;8176:7;8203:6;-1:-1:-1;;;;;8203:6:0;3621:10;8265:23;8257:68;;;;-1:-1:-1;;;8257:68:0;;;;;;;:::i;:::-;26213:17:::1;:32:::0;26141:112::o;30878:473::-;8176:7;8203:6;-1:-1:-1;;;;;8203:6:0;3621:10;8265:23;8257:68;;;;-1:-1:-1;;;8257:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;30958:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;30950:56;;;::::0;-1:-1:-1;;;30950:56:0;;7484:2:1;30950:56:0::1;::::0;::::1;7466:21:1::0;7523:2;7503:18;;;7496:30;7562:25;7542:18;;;7535:53;7605:18;;30950:56:0::1;7282:347:1::0;30950:56:0::1;31022:9;31017:327;31041:9;:16:::0;31037:20;::::1;31017:327;;;31099:7;-1:-1:-1::0;;;;;31083:23:0::1;:9;31093:1;31083:12;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;31083:12:0::1;:23:::0;31079:254:::1;;31142:9;31152:16:::0;;:20:::1;::::0;31171:1:::1;::::0;31152:20:::1;:::i;:::-;31142:31;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;31127:9:::1;:12:::0;;-1:-1:-1;;;;;31142:31:0;;::::1;::::0;31137:1;;31127:12;::::1;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;;;::::1;:46:::0;;-1:-1:-1;;;;;;31127:46:0::1;-1:-1:-1::0;;;;;31127:46:0;;::::1;;::::0;;31192:16;;::::1;::::0;;:7:::1;:16:::0;;;;;;:20;;;31231:11:::1;:20:::0;;;;:28;;-1:-1:-1;;31231:28:0::1;::::0;;31278:9:::1;:15:::0;;;::::1;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;-1:-1:-1;;31278:15:0;;;;;-1:-1:-1;;;;;;31278:15:0::1;::::0;;;;;31017:327:::1;30878:473:::0;:::o;31079:254::-:1;31059:3;;31017:327;;;;30878:473:::0;:::o;30451:419::-;8176:7;8203:6;-1:-1:-1;;;;;8203:6:0;3621:10;8265:23;8257:68;;;;-1:-1:-1;;;8257:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;30525:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;30520:250;;-1:-1:-1::0;;;;;30562:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;;;:27;;-1:-1:-1;;30562:27:0::1;30585:4;30562:27;::::0;;30608:7:::1;:16:::0;;;;;;:20;30604:117:::1;;-1:-1:-1::0;;;;;30688:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;30668:37:::1;::::0;:19:::1;:37::i;:::-;-1:-1:-1::0;;;;;30649:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;:56;30604:117:::1;30735:9;:23:::0;;::::1;::::0;::::1;::::0;;-1:-1:-1;30735:23:0;;;;;::::1;::::0;;-1:-1:-1;;;;;;30735:23:0::1;-1:-1:-1::0;;;;;30735:23:0;::::1;;::::0;;30520:250:::1;-1:-1:-1::0;;;;;30780:27:0;::::1;;::::0;;;:18:::1;:27;::::0;;;;:34;;-1:-1:-1;;30780:34:0::1;30810:4;30780:34:::0;;::::1;::::0;;;30827:35:::1;::::0;30799:7;30827:26:::1;:35::i;28446:297::-:0;3621:10;28561:4;28655:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;28655:34:0;;;;;;;;;;28561:4;;28583:130;;28633:7;;28655:47;;28692:10;;28655:47;:::i;40644:143::-;8176:7;8203:6;-1:-1:-1;;;;;8203:6:0;3621:10;8265:23;8257:68;;;;-1:-1:-1;;;8257:68:0;;;;;;;:::i;:::-;40742:37:::1;::::0;40710:21:::1;::::0;40750:10:::1;::::0;40742:37;::::1;;;::::0;40710:21;;40692:15:::1;40742:37:::0;40692:15;40742:37;40710:21;40750:10;40742:37;::::1;;;;;;;;;;;;;::::0;::::1;;;;31359:111:::0;8176:7;8203:6;-1:-1:-1;;;;;8203:6:0;3621:10;8265:23;8257:68;;;;-1:-1:-1;;;8257:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;31428:27:0::1;;::::0;;;:18:::1;:27;::::0;;;;:34;;-1:-1:-1;;31428:34:0::1;31458:4;31428:34;::::0;;31359:111::o;29287:489::-;29405:7;29449;;29438;:18;;29430:62;;;;-1:-1:-1;;;29430:62:0;;8363:2:1;29430:62:0;;;8345:21:1;8402:2;8382:18;;;8375:30;8441:33;8421:18;;;8414:61;8492:18;;29430:62:0;8161:355:1;29430:62:0;29508:17;29503:266;;29542:28;29573:25;29584:7;29593:4;29573:10;:25::i;:::-;29620:9;;-1:-1:-1;29613:16:0;;-1:-1:-1;29613:16:0;29503:266;29662:28;29693:25;29704:7;29713:4;29693:10;:25::i;:::-;29740:17;;;;-1:-1:-1;29733:24:0;;-1:-1:-1;29733:24:0;27281:198;8176:7;8203:6;-1:-1:-1;;;;;8203:6:0;3621:10;8265:23;8257:68;;;;-1:-1:-1;;;8257:68:0;;;;;;;:::i;:::-;27366:9:::1;27361:111;27381:19:::0;;::::1;27361:111;;;27456:4;27422:18;:31;27441:8;;27450:1;27441:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;27422:31:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;27422:31:0;:38;;-1:-1:-1;;27422:38:0::1;::::0;::::1;;::::0;;;::::1;::::0;;-1:-1:-1;27402:3:0::1;27361:111;;;;27281:198:::0;;:::o;31907:115::-;8176:7;8203:6;-1:-1:-1;;;;;8203:6:0;3621:10;8265:23;8257:68;;;;-1:-1:-1;;;8257:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;31983:23:0::1;32009:5;31983:23:::0;;;:14:::1;:23;::::0;;;;:31;;-1:-1:-1;;31983:31:0::1;::::0;;31907:115::o;24977:296::-;8176:7;8203:6;-1:-1:-1;;;;;8203:6:0;3621:10;8265:23;8257:68;;;;-1:-1:-1;;;8257:68:0;;;;;;;:::i;:::-;25134:8:::1;:18:::0;;;;25163;:30;;;;25204:18;:30;25245:13;:20;24977:296::o;30111:332::-;8176:7;8203:6;-1:-1:-1;;;;;8203:6:0;3621:10;8265:23;8257:68;;;;-1:-1:-1;;;8257:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;30192:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;30191:21;30183:61;;;::::0;-1:-1:-1;;;30183:61:0;;8723:2:1;30183:61:0::1;::::0;::::1;8705:21:1::0;8762:2;8742:18;;;8735:30;8801:29;8781:18;;;8774:57;8848:18;;30183:61:0::1;8521:351:1::0;30183:61:0::1;-1:-1:-1::0;;;;;30259:16:0;::::1;30278:1;30259:16:::0;;;:7:::1;:16;::::0;;;;;:20;30255:109:::1;;-1:-1:-1::0;;;;;30335:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;30315:37:::1;::::0;:19:::1;:37::i;:::-;-1:-1:-1::0;;;;;30296:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;:56;30255:109:::1;-1:-1:-1::0;;;;;30374:20:0::1;;::::0;;;:11:::1;:20;::::0;;;;:27;;-1:-1:-1;;30374:27:0::1;30397:4;30374:27:::0;;::::1;::::0;;;30412:9:::1;:23:::0;;;;::::1;::::0;;;;;;::::1;::::0;;-1:-1:-1;;;;;;30412:23:0::1;::::0;;::::1;::::0;;30111:332::o;26261:122::-;8176:7;8203:6;-1:-1:-1;;;;;8203:6:0;3621:10;8265:23;8257:68;;;;-1:-1:-1;;;8257:68:0;;;;;;;:::i;:::-;26342:13:::1;:33:::0;26261:122::o;26771:198::-;-1:-1:-1;;;;;26861:20:0;;26837:7;26861:20;;;:11;:20;;;;;;;;26857:49;;;-1:-1:-1;;;;;;26890:16:0;;;;;:7;:16;;;;;;;26771:198::o;26857:49::-;-1:-1:-1;;;;;26944:16:0;;;;;;:7;:16;;;;;;26924:37;;:19;:37::i;8353:148::-;8176:7;8203:6;-1:-1:-1;;;;;8203:6:0;3621:10;8265:23;8257:68;;;;-1:-1:-1;;;8257:68:0;;;;;;;:::i;:::-;8460:1:::1;8444:6:::0;;8423:40:::1;::::0;-1:-1:-1;;;;;8444:6:0;;::::1;::::0;8423:40:::1;::::0;8460:1;;8423:40:::1;8491:1;8474:19:::0;;-1:-1:-1;;;;;;8474:19:0::1;::::0;;8353:148::o;25281:301::-;8176:7;8203:6;-1:-1:-1;;;;;8203:6:0;3621:10;8265:23;8257:68;;;;-1:-1:-1;;;8257:68:0;;;;;;;:::i;:::-;25439:9:::1;:19:::0;;;;25469;:31;;;;25511:19;:31;25553:14;:21;25281:301::o;25590:543::-;25735:4;25756:17;25777:1;25756:22;25752:40;;-1:-1:-1;25787:5:0;25780:12;;25752:40;25805:17;25825:35;25843:17;25825:15;:35;:::i;:::-;25805:55;;25890:17;;25877:9;:30;25873:47;;25916:4;25909:11;;;;;25873:47;25937:9;25950:1;25937:14;25933:120;;25972:11;;-1:-1:-1;;;;;25972:21:0;;;:11;;:21;25968:74;;26021:5;26014:12;;;;;25968:74;26080:7;26067:9;:20;26063:37;;26096:4;26089:11;;;;;26063:37;-1:-1:-1;26120:5:0;;25590:543;-1:-1:-1;;;;25590:543:0:o;28751:400::-;28871:4;28893:228;3621:10;28943:7;28965:145;29022:15;28965:145;;;;;;;;;;;;;;;;;3621:10;28965:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;28965:34:0;;;;;;;;;;;;:38;:145::i;26977:202::-;27082:4;27104:42;3621:10;27128:9;27139:6;27104:9;:42::i;:::-;-1:-1:-1;;27164:7:0;;-1:-1:-1;;;27164:7:0;;;;;26977:202;-1:-1:-1;26977:202:0:o;31728:171::-;8176:7;8203:6;-1:-1:-1;;;;;8203:6:0;3621:10;8265:23;8257:68;;;;-1:-1:-1;;;8257:68:0;;;;;;;:::i;:::-;31805:21:::1;:32:::0;;;::::1;;-1:-1:-1::0;;;31805:32:0::1;-1:-1:-1::0;;;;31805:32:0;;::::1;;::::0;;31853:38:::1;::::0;::::1;::::0;::::1;::::0;31829:8;1085:14:1;1078:22;1060:41;;1048:2;1033:18;;920:187;31853:38:0::1;;;;;;;;31728:171:::0;:::o;27187:86::-;8176:7;8203:6;-1:-1:-1;;;;;8203:6:0;3621:10;8265:23;8257:68;;;;-1:-1:-1;;;8257:68:0;;;;;;;:::i;:::-;27248:7:::1;:17:::0;;;::::1;;-1:-1:-1::0;;;27248:17:0::1;-1:-1:-1::0;;;;27248:17:0;;::::1;::::0;;;::::1;::::0;;27187:86::o;31478:110::-;8176:7;8203:6;-1:-1:-1;;;;;8203:6:0;3621:10;8265:23;8257:68;;;;-1:-1:-1;;;8257:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;31545:27:0::1;31575:5;31545:27:::0;;;:18:::1;:27;::::0;;;;:35;;-1:-1:-1;;31545:35:0::1;::::0;;31478:110::o;8509:281::-;8176:7;8203:6;-1:-1:-1;;;;;8203:6:0;3621:10;8265:23;8257:68;;;;-1:-1:-1;;;8257:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;8612:22:0;::::1;8590:110;;;::::0;-1:-1:-1;;;8590:110:0;;9079:2:1;8590:110:0::1;::::0;::::1;9061:21:1::0;9118:2;9098:18;;;9091:30;9157:34;9137:18;;;9130:62;-1:-1:-1;;;9208:18:1;;;9201:36;9254:19;;8590:110:0::1;8877:402:1::0;8590:110:0::1;8737:6;::::0;;8716:38:::1;::::0;-1:-1:-1;;;;;8716:38:0;;::::1;::::0;8737:6;::::1;::::0;8716:38:::1;::::0;::::1;8765:6;:17:::0;;-1:-1:-1;;;;;;8765:17:0::1;-1:-1:-1::0;;;;;8765:17:0;;;::::1;::::0;;;::::1;::::0;;8509:281::o;32030:196::-;8176:7;8203:6;-1:-1:-1;;;;;8203:6:0;3621:10;8265:23;8257:68;;;;-1:-1:-1;;;8257:68:0;;;;;;;:::i;:::-;32119:9:::1;32114:105;32130:20:::0;;::::1;32114:105;;;32203:4;32172:14;:28;32187:9;;32197:1;32187:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;32172:28:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;32172:28:0;:35;;-1:-1:-1;;32172:35:0::1;::::0;::::1;;::::0;;;::::1;::::0;;-1:-1:-1;32152:3:0::1;32114:105;;36207:369:::0;-1:-1:-1;;;;;36334:19:0;;36326:68;;;;-1:-1:-1;;;36326:68:0;;9486:2:1;36326:68:0;;;9468:21:1;9525:2;9505:18;;;9498:30;9564:34;9544:18;;;9537:62;-1:-1:-1;;;9615:18:1;;;9608:34;9659:19;;36326:68:0;9284:400:1;36326:68:0;-1:-1:-1;;;;;36413:21:0;;36405:68;;;;-1:-1:-1;;;36405:68:0;;9891:2:1;36405:68:0;;;9873:21:1;9930:2;9910:18;;;9903:30;9969:34;9949:18;;;9942:62;-1:-1:-1;;;10020:18:1;;;10013:32;10062:19;;36405:68:0;9689:398:1;36405:68:0;-1:-1:-1;;;;;36484:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;36536:32;;1466:25:1;;;36536:32:0;;1439:18:1;36536:32:0;;;;;;;36207:369;;;:::o;36584:897::-;-1:-1:-1;;;;;36721:20:0;;;;;;:14;:20;;;;;;;;36720:21;:44;;;;-1:-1:-1;;;;;;36746:18:0;;;;;;:14;:18;;;;;;;;36745:19;36720:44;36698:121;;;;-1:-1:-1;;;36698:121:0;;10294:2:1;36698:121:0;;;10276:21:1;10333:2;10313:18;;;10306:30;10372:29;10352:18;;;10345:57;10419:18;;36698:121:0;10092:351:1;36698:121:0;-1:-1:-1;;;;;36838:18:0;;36830:68;;;;-1:-1:-1;;;36830:68:0;;10650:2:1;36830:68:0;;;10632:21:1;10689:2;10669:18;;;10662:30;10728:34;10708:18;;;10701:62;-1:-1:-1;;;10779:18:1;;;10772:35;10824:19;;36830:68:0;10448:401:1;36830:68:0;-1:-1:-1;;;;;36917:16:0;;36909:64;;;;-1:-1:-1;;;36909:64:0;;11056:2:1;36909:64:0;;;11038:21:1;11095:2;11075:18;;;11068:30;11134:34;11114:18;;;11107:62;-1:-1:-1;;;11185:18:1;;;11178:33;11228:19;;36909:64:0;10854:399:1;36909:64:0;37001:1;36992:6;:10;36984:64;;;;-1:-1:-1;;;36984:64:0;;11460:2:1;36984:64:0;;;11442:21:1;11499:2;11479:18;;;11472:30;11538:34;11518:18;;;11511:62;-1:-1:-1;;;11589:18:1;;;11582:39;11638:19;;36984:64:0;11258:405:1;36984:64:0;37091:15;37101:4;37091:9;:15::i;:::-;37081:6;:25;;37059:123;;;;-1:-1:-1;;;37059:123:0;;11870:2:1;37059:123:0;;;11852:21:1;11909:2;11889:18;;;11882:30;11948:34;11928:18;;;11921:62;-1:-1:-1;;;11999:18:1;;;11992:46;12055:19;;37059:123:0;11668:412:1;37059:123:0;37226:27;;-1:-1:-1;;;;;37226:27:0;37215:7;8176;8203:6;-1:-1:-1;;;;;8203:6:0;;8130:87;37215:7;-1:-1:-1;;;;;37215:38:0;;37193:117;;;;-1:-1:-1;;;37193:117:0;;12287:2:1;37193:117:0;;;12269:21:1;12326:2;12306:18;;;12299:30;12365:31;12345:18;;;12338:59;12414:18;;37193:117:0;12085:353:1;37193:117:0;-1:-1:-1;;;;;37411:24:0;;;;;;:18;:24;;;;;;37323:150;;37352:4;;37371:2;;37388:6;;37411:24;;;:50;;-1:-1:-1;;;;;;37439:22:0;;;;;;:18;:22;;;;;;;;37411:50;37409:53;37323:14;:150::i;2767:240::-;2887:7;2948:12;2940:6;;;;2932:29;;;;-1:-1:-1;;;2932:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;2983:5:0;;;2767:240::o;34343:161::-;34385:7;34406:15;34423;34442:19;:17;:19::i;:::-;34405:56;;-1:-1:-1;34405:56:0;-1:-1:-1;34479:17:0;34405:56;;34479:17;:::i;:::-;34472:24;;;;34343:161;:::o;17194:181::-;17285:4;17314:53;17322:3;-1:-1:-1;;;;;17342:23:0;;17314:7;:53::i;32271:512::-;32371:36;;:::i;:::-;32437:29;32449:7;32458;32437:11;:29::i;:::-;32425:41;;32694:52;32706:9;32717:7;32726;32735:10;:8;:10::i;:::-;32694:11;:52::i;:::-;32665:15;;;32479:267;32630:20;;;32479:267;32595:20;;;32479:267;32566:14;;;32479:267;32526:25;;;32479:267;;;32271:512;;;;:::o;37489:2794::-;37645:7;37641:1455;;;37683:17;;-1:-1:-1;;;;;37683:17:0;;;37673:27;;;;37669:1190;;8176:7;8203:6;-1:-1:-1;;;;;37747:17:0;;;8203:6;;37747:17;;;;:62;;-1:-1:-1;8176:7:0;8203:6;-1:-1:-1;;;;;37789:20:0;;;8203:6;;37789:20;;37747:62;:110;;;;-1:-1:-1;;;;;;37834:23:0;;37855:1;37834:23;;37747:110;37721:340;;;-1:-1:-1;;;;;37904:31:0;;;;;;:20;:31;;;;;;:36;;37900:142;;-1:-1:-1;;;;;37969:31:0;;;;;;:20;:31;;;;;38003:15;37969:49;;37900:142;38079:11;:23;;-1:-1:-1;;;;;;38079:23:0;-1:-1:-1;;;;;38079:23:0;;;;;38135:8;38121:22;:11;:22;;;;;;;;;;;;;37641:1455;;37669:1190;8176:7;8203:6;-1:-1:-1;;;;;38210:17:0;;;8203:6;;38210:17;;;;:62;;-1:-1:-1;8176:7:0;8203:6;-1:-1:-1;;;;;38252:20:0;;;8203:6;;38252:20;;38210:62;:110;;;;-1:-1:-1;;;;;;38297:23:0;;38318:1;38297:23;;38210:110;38184:515;;;-1:-1:-1;;;;;24797:28:0;;38363:20;24797:28;;;:20;:28;;;;;;38386:173;;38490:13;;38530:6;38386:20;:173::i;:::-;38363:196;;38590:15;38582:33;;;;-1:-1:-1;;;38582:33:0;;12645:2:1;38582:33:0;;;12627:21:1;12684:1;12664:18;;;12657:29;-1:-1:-1;;;12702:18:1;;;12695:35;12747:18;;38582:33:0;12443:328:1;38582:33:0;-1:-1:-1;;;;;;38638:23:0;;;;;;:15;:23;;;;;38664:15;38638:41;;38184:515;38731:9;38717:23;:11;:23;;;;;;;;;;;;;38823:11;:20;;-1:-1:-1;;;;;;38823:20:0;-1:-1:-1;;;;;38823:20:0;;;;;37641:1455;;;-1:-1:-1;;;;;38895:26:0;;;;;;:18;:26;;;;;;;;38891:87;;;38942:11;:20;;-1:-1:-1;;;;;;38942:20:0;-1:-1:-1;;;;;38942:20:0;;;;;38891:87;-1:-1:-1;;;;;38996:29:0;;;;;;:18;:29;;;;;;;;38992:93;;;39046:11;:23;;-1:-1:-1;;;;;;39046:23:0;-1:-1:-1;;;;;39046:23:0;;;;;38992:93;39108:28;39139;39150:7;39159;39139:10;:28::i;:::-;-1:-1:-1;;;;;39184:19:0;;;;;;:11;:19;;;;;;39108:59;;-1:-1:-1;39184:19:0;;:46;;;;-1:-1:-1;;;;;;39208:22:0;;;;;;:11;:22;;;;;;;;39207:23;39184:46;39180:467;;;-1:-1:-1;;;;;39265:15:0;;;;;;:7;:15;;;;;;:25;;39283:7;;39265:25;:::i;:::-;-1:-1:-1;;;;;39247:15:0;;;;;;:7;:15;;;;;:43;39180:467;;;-1:-1:-1;;;;;39313:19:0;;;;;;:11;:19;;;;;;;;39312:20;:46;;;;-1:-1:-1;;;;;;39336:22:0;;;;;;:11;:22;;;;;;;;39312:46;39308:339;;;39417:17;;;;-1:-1:-1;;;;;39396:18:0;;;;;;:7;:18;;;;;;:38;;39417:17;39396:38;:::i;:::-;-1:-1:-1;;;;;39375:18:0;;;;;;:7;:18;;;;;:59;39308:339;;;-1:-1:-1;;;;;39456:19:0;;;;;;:11;:19;;;;;;;;:45;;;;-1:-1:-1;;;;;;39479:22:0;;;;;;:11;:22;;;;;;;;39456:45;39452:195;;;-1:-1:-1;;;;;39536:15:0;;;;;;:7;:15;;;;;;:25;;39554:7;;39536:25;:::i;:::-;-1:-1:-1;;;;;39518:15:0;;;;;;;:7;:15;;;;;;:43;;;;39618:17;;;;39597:18;;;;;;;;;;:38;;39618:17;39597:38;:::i;:::-;-1:-1:-1;;;;;39576:18:0;;;;;;:7;:18;;;;;:59;39452:195;39695:9;;-1:-1:-1;;;;;39677:15:0;;39695:9;39677:15;;;:7;:15;;;;;;:27;;39695:9;39677:27;:::i;:::-;-1:-1:-1;;;;;39659:15:0;;;;;;;:7;:15;;;;;;;;:45;;;;39757:17;;;39736:18;;;;;;;;;;:38;;39757:17;39736:38;:::i;:::-;-1:-1:-1;;;;;39715:18:0;;;;;;:7;:18;;;;;:59;39787:305;;;;39815:27;39827:1;:6;;;39835:1;:6;;;39815:11;:27::i;:::-;39857:42;39872:1;:12;;;39886:1;:12;;;39857:14;:42::i;:::-;39914;39929:1;:12;;;39943:1;:12;;;39914:14;:42::i;:::-;39971:27;39981:1;:7;;;39990:1;:7;;;39971:9;:27::i;:::-;40045:4;-1:-1:-1;;;;;40020:60:0;40029:6;-1:-1:-1;;;;;40020:60:0;;40067:1;:12;;;40052:1;:12;;;:27;;;;:::i;:::-;40020:60;;1466:25:1;;;1454:2;1439:18;40020:60:0;;;;;;;39787:305;40126:9;-1:-1:-1;;;;;40109:46:0;40118:6;-1:-1:-1;;;;;40109:46:0;;40137:1;:17;;;40109:46;;;;1466:25:1;;1454:2;1439:18;;1320:177;40109:46:0;;;;;;;;40166:34;:19;40190:9;40166:23;:34::i;:::-;;40217:17;40227:6;40217:9;:17::i;:::-;40238:1;40217:22;40213:62;;40241:34;:19;40268:6;40241:26;:34::i;:::-;;40213:62;37630:2653;37489:2794;;;;:::o;34512:596::-;34610:7;;34646;;34563;;;;;34664:332;34688:9;:16;34684:20;;34664:332;;;34772:7;34748;:21;34756:9;34766:1;34756:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;34756:12:0;34748:21;;;;;;;;;;;;;:31;;:83;;;34824:7;34800;:21;34808:9;34818:1;34808:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;34808:12:0;34800:21;;;;;;;;;;;;;:31;34748:83;34726:146;;;34855:7;;34864;;34847:25;;;;;;;34512:596;;:::o;34726:146::-;34907:7;:21;34915:9;34925:1;34915:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;34915:12:0;34907:21;;;;;;;;;;;;;34897:31;;:7;:31;:::i;:::-;34887:41;;34963:7;:21;34971:9;34981:1;34971:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;34971:12:0;34963:21;;;;;;;;;;;;;34953:31;;:7;:31;:::i;:::-;34943:41;-1:-1:-1;34706:3:0;;34664:332;;;;35030:7;;35020;;:17;;;;:::i;:::-;35010:7;:27;35006:58;;;35047:7;;35056;;35039:25;;;;;;34512:596;;:::o;35006:58::-;35083:7;;35092;;-1:-1:-1;34512:596:0;-1:-1:-1;34512:596:0:o;15708:675::-;15774:4;15812:19;;;:12;;;:19;;;;;;15848:15;;15844:532;;15880:21;15904:14;15917:1;15904:10;:14;:::i;:::-;15953:18;;15880:38;;-1:-1:-1;15933:17:0;;15953:22;;15974:1;;15953:22;:::i;:::-;15933:42;;16009:13;15996:9;:26;15992:223;;16043:17;16063:3;:11;;16075:9;16063:22;;;;;;;;:::i;:::-;;;;;;;;;16043:42;;16135:9;16106:3;:11;;16118:13;16106:26;;;;;;;;:::i;:::-;;;;;;;;;;;;:38;;;;16163:23;;;:12;;;:23;;;;;:36;;;15992:223;16231:17;;:3;;:17;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;16272:3;:12;;:19;16285:5;16272:19;;;;;;;;;;;16265:26;;;16315:4;16308:11;;;;;;;15844:532;16359:5;16352:12;;;;;32791:654;32892:28;;:::i;:::-;32943:7;32938:91;;32967:17;;;:27;;;33009:8;;32938:91;33059:11;:15;33078:3;;33049:25;;:7;:25;:::i;:::-;33048:33;;;;:::i;:::-;33039:6;;;:42;33118:21;;33143:3;;33108:31;;:7;:31;:::i;:::-;33107:39;;;;:::i;:::-;33092:12;;;:54;33183:21;;33208:3;;33173:31;;:7;:31;:::i;:::-;33172:39;;;;:::i;:::-;33157:12;;;:54;33243:16;;33263:3;;33233:26;;:7;:26;:::i;:::-;33232:34;;;;:::i;:::-;33222:7;;;:44;;;33383:12;;;;33355;;;;33333:6;;;;33310:29;;:7;:29;:::i;:::-;:57;;;;:::i;:::-;:85;;;;:::i;:::-;:108;;;;:::i;:::-;33277:17;;;:141;32791:654;;;;:::o;33453:882::-;33662:15;;;;;;33874:21;33884:11;33874:7;:21;:::i;:::-;33864:31;;33913:7;33908:78;;-1:-1:-1;33945:7:0;;-1:-1:-1;33963:1:0;;-1:-1:-1;33963:1:0;;-1:-1:-1;33963:1:0;;-1:-1:-1;33963:1:0;33937:37;;33908:78;34014:11;34005:1;:6;;;:20;;;;:::i;:::-;33998:27;;34064:11;34049:1;:12;;;:26;;;;:::i;:::-;34036:39;;34114:11;34099:1;:12;;;:26;;;;:::i;:::-;34086:39;;34154:11;34144:1;:7;;;:21;;;;:::i;:::-;34136:29;-1:-1:-1;34136:29:0;34226:10;34213;34196:14;34206:4;34196:7;:14;:::i;:::-;:27;;;;:::i;:::-;:40;;;;:::i;:::-;:48;;;;:::i;:::-;34178:66;;33453:882;;;;;;;;;;;;:::o;35116:134::-;35204:4;35194:7;;:14;;;;:::i;:::-;35184:7;:24;35219:11;:23;;35238:4;;35219:11;:15;;:23;;35238:4;;35219:23;:::i;:::-;;;;-1:-1:-1;;;;35116:134:0:o;35258:384::-;35378:10;35341:15;:33;;;:47;;;;;;;:::i;:::-;;;;-1:-1:-1;;35399:21:0;:35;;35424:10;;35399:21;;;:35;;35424:10;;35399:35;:::i;:::-;;;;-1:-1:-1;;35486:4:0;35470:22;;;;:7;:22;;;;;;:35;;35495:10;;35470:35;:::i;:::-;35461:4;35445:22;;;;:7;:22;;;;;;;;:60;;;;35520:11;:26;;;;;;35516:119;;;35604:4;35588:22;;;;:7;:22;;;;;;:35;;35613:10;;35588:35;:::i;:::-;35579:4;35563:22;;;;:7;:22;;;;;:60;35258:384;;:::o;35650:366::-;35763:10;35733:15;:26;;;:40;;;;;;;:::i;:::-;;;;-1:-1:-1;;35784:21:0;:35;;35809:10;;35784:21;;;:35;;35809:10;;35784:35;:::i;36024:175::-;36112:5;36092:11;:16;;;:25;;;;;;;:::i;:::-;;;;-1:-1:-1;;36140:7:0;;:15;;36150:5;;36140:15;:::i;:::-;36130:7;:25;36176:7;;:15;;36186:5;;36176:15;:::i;:::-;36166:7;:25;-1:-1:-1;;36024:175:0:o;17011:::-;17099:4;17128:50;17133:3;-1:-1:-1;;;;;17153:23:0;;15472:4;15494:21;15504:3;15509:5;16491:4;16520:19;;;:12;;;;;:19;;;;;;:24;;;16391:161;15494:21;15489:204;;-1:-1:-1;15532:23:0;;;;;;;;:11;:23;;;;;;;;;;;;;15592:18;;15570:19;;;:12;;;:19;;;;;;:40;;;;15625:11;;15489:204;-1:-1:-1;15676:5:0;15669:12;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;14:418:1:-;163:2;152:9;145:21;126:4;195:6;189:13;238:6;233:2;222:9;218:18;211:34;297:6;292:2;284:6;280:15;275:2;264:9;260:18;254:50;353:1;348:2;339:6;328:9;324:22;320:31;313:42;423:2;416;412:7;407:2;399:6;395:15;391:29;380:9;376:45;372:54;364:62;;;14:418;;;;:::o;437:173::-;505:20;;-1:-1:-1;;;;;554:31:1;;544:42;;534:70;;600:1;597;590:12;534:70;437:173;;;:::o;615:300::-;683:6;691;744:2;732:9;723:7;719:23;715:32;712:52;;;760:1;757;750:12;712:52;783:29;802:9;783:29;:::i;:::-;773:39;881:2;866:18;;;;853:32;;-1:-1:-1;;;615:300:1:o;1502:186::-;1561:6;1614:2;1602:9;1593:7;1589:23;1585:32;1582:52;;;1630:1;1627;1620:12;1582:52;1653:29;1672:9;1653:29;:::i;1693:374::-;1770:6;1778;1786;1839:2;1827:9;1818:7;1814:23;1810:32;1807:52;;;1855:1;1852;1845:12;1807:52;1878:29;1897:9;1878:29;:::i;:::-;1868:39;;1926:38;1960:2;1949:9;1945:18;1926:38;:::i;:::-;1693:374;;1916:48;;-1:-1:-1;;;2033:2:1;2018:18;;;;2005:32;;1693:374::o;2072:160::-;2137:20;;2193:13;;2186:21;2176:32;;2166:60;;2222:1;2219;2212:12;2237:180;2293:6;2346:2;2334:9;2325:7;2321:23;2317:32;2314:52;;;2362:1;2359;2352:12;2314:52;2385:26;2401:9;2385:26;:::i;2422:226::-;2481:6;2534:2;2522:9;2513:7;2509:23;2505:32;2502:52;;;2550:1;2547;2540:12;2502:52;-1:-1:-1;2595:23:1;;2422:226;-1:-1:-1;2422:226:1:o;2842:294::-;2907:6;2915;2968:2;2956:9;2947:7;2943:23;2939:32;2936:52;;;2984:1;2981;2974:12;2936:52;3029:23;;;-1:-1:-1;3095:35:1;3126:2;3111:18;;3095:35;:::i;:::-;3085:45;;2842:294;;;;;:::o;3141:610::-;3227:6;3235;3288:2;3276:9;3267:7;3263:23;3259:32;3256:52;;;3304:1;3301;3294:12;3256:52;3344:9;3331:23;3377:18;3369:6;3366:30;3363:50;;;3409:1;3406;3399:12;3363:50;3432:22;;3485:4;3477:13;;3473:27;-1:-1:-1;3463:55:1;;3514:1;3511;3504:12;3463:55;3554:2;3541:16;3580:18;3572:6;3569:30;3566:50;;;3612:1;3609;3602:12;3566:50;3665:7;3660:2;3650:6;3647:1;3643:14;3639:2;3635:23;3631:32;3628:45;3625:65;;;3686:1;3683;3676:12;3625:65;3717:2;3709:11;;;;;3739:6;;-1:-1:-1;3141:610:1;-1:-1:-1;;;3141:610:1:o;3756:587::-;3842:6;3850;3858;3866;3919:3;3907:9;3898:7;3894:23;3890:33;3887:53;;;3936:1;3933;3926:12;3887:53;-1:-1:-1;;3981:23:1;;;4101:2;4086:18;;4073:32;;-1:-1:-1;4204:2:1;4189:18;;4176:32;;4307:2;4292:18;4279:32;;-1:-1:-1;3756:587:1;-1:-1:-1;3756:587:1:o;5232:420::-;5309:6;5317;5325;5378:2;5366:9;5357:7;5353:23;5349:32;5346:52;;;5394:1;5391;5384:12;5346:52;5439:23;;;-1:-1:-1;5559:2:1;5544:18;;5531:32;;-1:-1:-1;5608:38:1;5642:2;5627:18;;5608:38;:::i;:::-;5598:48;;5232:420;;;;;:::o;5891:260::-;5959:6;5967;6020:2;6008:9;5999:7;5995:23;5991:32;5988:52;;;6036:1;6033;6026:12;5988:52;6059:29;6078:9;6059:29;:::i;:::-;6049:39;;6107:38;6141:2;6130:9;6126:18;6107:38;:::i;6156:356::-;6358:2;6340:21;;;6377:18;;;6370:30;6436:34;6431:2;6416:18;;6409:62;6503:2;6488:18;;6156:356::o;6928:127::-;6989:10;6984:3;6980:20;6977:1;6970:31;7020:4;7017:1;7010:15;7044:4;7041:1;7034:15;7060:217;7100:1;7126;7116:132;;7170:10;7165:3;7161:20;7158:1;7151:31;7205:4;7202:1;7195:15;7233:4;7230:1;7223:15;7116:132;-1:-1:-1;7262:9:1;;7060:217::o;7634:127::-;7695:10;7690:3;7686:20;7683:1;7676:31;7726:4;7723:1;7716:15;7750:4;7747:1;7740:15;7766:128;7833:9;;;7854:11;;;7851:37;;;7868:18;;:::i;7899:127::-;7960:10;7955:3;7951:20;7948:1;7941:31;7991:4;7988:1;7981:15;8015:4;8012:1;8005:15;8031:125;8096:9;;;8117:10;;;8114:36;;;8130:18;;:::i;12776:168::-;12849:9;;;12880;;12897:15;;;12891:22;;12877:37;12867:71;;12918:18;;:::i
Swarm Source
ipfs://63ddcb34e49e2ab00db016e74762be30cbb4f00636ffb6352184a7837a9fd6d2
Net Worth in USD
Net Worth in ETH
Multichain Portfolio | 35 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
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.