ETH Price: $3,114.99 (-0.22%)

Token

notepad (notepad)
 

Overview

Max Total Supply

100,000 notepad

Holders

12

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
2,000 notepad

Value
$0.00
0xa7a2a40289016093d82aee3838890783da6688b3
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Similar Match Source Code
This contract matches the deployed Bytecode of the Source Code for Contract 0xB2D31791...8dA10b9C0
The constructor portion of the code might be different and could alter the actual behaviour of the contract

Contract Name:
Token

Compiler Version
v0.8.22+commit.4fc1097e

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-11-06
*/

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.19;

// Created with Bossman's Bakery (bakery.mullet.capital)!

interface Callable {
	function tokenCallback(address _from, uint256 _tokens, bytes calldata _data) external returns (bool);
}

interface Router {
	struct ExactInputSingleParams {
		address tokenIn;
		address tokenOut;
		uint24 fee;
		address recipient;
		uint256 amountIn;
		uint256 amountOutMinimum;
		uint160 sqrtPriceLimitX96;
	}
	function factory() external view returns (address);
	function positionManager() external view returns (address);
	function WETH9() external view returns (address);
	function exactInputSingle(ExactInputSingleParams calldata) external payable returns (uint256);
}

interface Factory {
	function createPool(address _tokenA, address _tokenB, uint24 _fee) external returns (address);
}

interface Pool {
	function initialize(uint160 _sqrtPriceX96) external;
}

interface PositionManager {
	struct MintParams {
		address token0;
		address token1;
		uint24 fee;
		int24 tickLower;
		int24 tickUpper;
		uint256 amount0Desired;
		uint256 amount1Desired;
		uint256 amount0Min;
		uint256 amount1Min;
		address recipient;
		uint256 deadline;
	}
	struct CollectParams {
		uint256 tokenId;
		address recipient;
		uint128 amount0Max;
		uint128 amount1Max;
	}
	function mint(MintParams calldata) external payable returns (uint256 tokenId, uint128 liquidity, uint256 amount0, uint256 amount1);
	function collect(CollectParams calldata) external payable returns (uint256 amount0, uint256 amount1);
}

interface ERC20 {
	function balanceOf(address) external view returns (uint256);
	function transfer(address, uint256) external returns (bool);
}

interface WETH is ERC20 {
	function withdraw(uint256) external;
}


contract Team {

	Router constant private ROUTER = Router(0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45);

	struct Share {
		address payable user;
		uint256 shares;
	}
	Share[] public shares;
	uint256 public totalShares;
	ERC20 public token;


	function initialize(address _creator) external {
		require(totalShares == 0);
		token = ERC20(msg.sender);
		_addShare(_creator, 10);
		_addShare(0xe6c791FBd46dB3f4EdA5f7Bb76474F4FA530733E, 6);
		_addShare(0x12fe289b7588dE4ee1f1392Ce086be100f7165ed, 3);
		_addShare(0xc28C9da0F8a500DFfC16Ff09a3DD1Cc4c530D346, 1);
	}

	receive() external payable {}

	function withdrawETH() public {
		uint256 _balance = address(this).balance;
		if (_balance > 0) {
			for (uint256 i = 0; i < shares.length; i++) {
				Share memory _share = shares[i];
				!_share.user.send(_balance * _share.shares / totalShares);
			}
		}
	}

	function withdrawToken(ERC20 _token) public {
		WETH _weth = WETH(ROUTER.WETH9());
		if (address(_token) == address(_weth)) {
			_weth.withdraw(_weth.balanceOf(address(this)));
			withdrawETH();
		} else {
			uint256 _balance = _token.balanceOf(address(this));
			if (_balance > 0) {
				for (uint256 i = 0; i < shares.length; i++) {
					Share memory _share = shares[i];
					_token.transfer(_share.user, _balance * _share.shares / totalShares);
				}
			}
		}
	}

	function withdrawWETH() public {
		withdrawToken(ERC20(ROUTER.WETH9()));
	}

	function withdrawFees() external {
		withdrawWETH();
		withdrawToken(token);
	}


	function _addShare(address _user, uint256 _shares) internal {
		shares.push(Share(payable(_user), _shares));
		totalShares += _shares;
	}
}


contract Token {

	uint256 constant private UINT_MAX = type(uint256).max;
	uint128 constant private UINT128_MAX = type(uint128).max;
	uint256 constant private MAX_NAME_LENGTH = 32;
	uint256 constant private MIN_SUPPLY = 1e16; // 0.01 tokens
	uint256 constant private MAX_SUPPLY = 1e33; // 1 quadrillion tokens
	uint256 constant private PERCENT_PRECISION = 1000; // 1 = 0.1%
	uint256 constant private MAX_TIME_LIMIT = 24 hours;
	Router constant private ROUTER = Router(0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45);

	int24 constant internal MIN_TICK = -887272;
	int24 constant internal MAX_TICK = -MIN_TICK;
	uint160 constant internal MIN_SQRT_RATIO = 4295128739;
	uint160 constant internal MAX_SQRT_RATIO = 1461446703485210103287273052203988822378723970342;

	string public name;
	string public symbol;
	uint8 constant public decimals = 18;

	string constant public source = "Created with Bossman's Bakery (bakery.mullet.capital)!";


	struct User {
		uint256 balance;
		mapping(address => uint256) allowance;
	}

	struct Info {
		bool locked;
		Team team;
		address pool;
		address creator;
		uint256 totalSupply;
		uint256 initialMarketCap;
		uint256 upperMarketCap;
		uint256 concentratedPercent;
		uint256 creatorFee;
		uint256 transferLimit;
		uint256 transferLimitEnd;
		mapping(address => User) users;
		uint256 positionId;
		string website;
		string twitter;
		string telegram;
		string discord;
		string additionalInfo;
	}
	Info private info;


	event Transfer(address indexed from, address indexed to, uint256 tokens);
	event Approval(address indexed owner, address indexed spender, uint256 tokens);


	modifier _onlyCreator() {
		require(msg.sender == creator());
		_;
	}

	
	function lock() external {
		require(!info.locked);
		require(totalSupply() == 0);
		info.locked = true;
	}
	
	function initialize(address _creator, string memory _name, string memory _symbol, uint256 _totalSupply, uint256 _initialMarketCap, uint256 _upperMarketCap, uint256 _creatorFee, uint256 _transferLimit, uint256 _transferLimitTime) external payable {
		require(!info.locked);
		require(totalSupply() == 0);
		require(bytes(_name).length > 0 && bytes(_name).length <= MAX_NAME_LENGTH);
		require(bytes(_symbol).length > 0 && bytes(_symbol).length <= MAX_NAME_LENGTH);
		require(_totalSupply >= MIN_SUPPLY && _totalSupply <= MAX_SUPPLY);
		require(_initialMarketCap > 0 && _upperMarketCap > _initialMarketCap);
		require(_creatorFee <= PERCENT_PRECISION / 10);
		require(_transferLimitTime <= MAX_TIME_LIMIT);
		info.team = new Team();
		info.team.initialize(_creator);
		info.creator = _creator;
		name = _name;
		symbol = _symbol;
		info.totalSupply = _totalSupply;
		info.users[address(this)].balance = _totalSupply;
		emit Transfer(address(0x0), address(this), _totalSupply);
		info.initialMarketCap = _initialMarketCap;
		info.upperMarketCap = _upperMarketCap;
		info.creatorFee = _creatorFee;
		_createLP(_initialMarketCap, _upperMarketCap, _creatorFee);
		info.transferLimit = _transferLimit;
		info.transferLimitEnd = block.timestamp + _transferLimitTime;
	}

	function updateAll(string memory _website, string memory _twitter, string memory _telegram, string memory _discord, string memory _info) external _onlyCreator {
		info.website = _website;
		info.twitter = _twitter;
		info.telegram = _telegram;
		info.discord = _discord;
		info.additionalInfo = _info;
	}

	function updateWebsite(string memory _website) external _onlyCreator {
		info.website = _website;
	}

	function updateTwitter(string memory _twitter) external _onlyCreator {
		info.twitter = _twitter;
	}

	function updateTelegram(string memory _telegram) external _onlyCreator {
		info.telegram = _telegram;
	}

	function updateDiscord(string memory _discord) external _onlyCreator {
		info.discord = _discord;
	}

	function updateInfo(string memory _info) external _onlyCreator {
		info.additionalInfo = _info;
	}

	function collectTradingFees() external {
		PositionManager _pm = PositionManager(ROUTER.positionManager());
		_pm.collect(PositionManager.CollectParams({
			tokenId: info.positionId,
			recipient: team(),
			amount0Max: UINT128_MAX,
			amount1Max: UINT128_MAX
		}));
		info.team.withdrawFees();
	}

	function transfer(address _to, uint256 _tokens) external returns (bool) {
		return _transfer(msg.sender, _to, _tokens);
	}

	function approve(address _spender, uint256 _tokens) external returns (bool) {
		return _approve(msg.sender, _spender, _tokens);
	}

	function transferFrom(address _from, address _to, uint256 _tokens) external returns (bool) {
		unchecked {
			uint256 _allowance = allowance(_from, msg.sender);
			require(_allowance >= _tokens);
			if (_allowance != UINT_MAX) {
				info.users[_from].allowance[msg.sender] -= _tokens;
			}
			return _transfer(_from, _to, _tokens);
		}
	}

	function transferAndCall(address _to, uint256 _tokens, bytes calldata _data) external returns (bool) {
		_transfer(msg.sender, _to, _tokens);
		uint32 _size;
		assembly {
			_size := extcodesize(_to)
		}
		if (_size > 0) {
			require(Callable(_to).tokenCallback(msg.sender, _tokens, _data));
		}
		return true;
	}
	

	function creator() public view returns (address) {
		return info.creator;
	}
	
	function team() public view returns (address) {
		return address(info.team);
	}

	function pool() public view returns (address) {
		return info.pool;
	}

	function totalSupply() public view returns (uint256) {
		return info.totalSupply;
	}

	function balanceOf(address _user) public view returns (uint256) {
		return info.users[_user].balance;
	}

	function allowance(address _user, address _spender) public view returns (uint256) {
		return info.users[_user].allowance[_spender];
	}

	function position() external view returns (uint256) {
		return info.positionId;
	}

	function initialMarketCap() external view returns (string memory) {
		return string(abi.encodePacked(_uint2str(info.initialMarketCap, 18, 5), " ETH"));
	}

	function upperMarketCap() external view returns (string memory) {
		return string(abi.encodePacked(_uint2str(info.upperMarketCap, 18, 5), " ETH"));
	}

	function creatorFee() external view returns (string memory) {
		return string(abi.encodePacked(_uint2str(info.creatorFee * 100, 3, 3), "%"));
	}

	function transferLimit() public view returns (uint256 limit, uint256 until, bool active) {
		limit = info.transferLimit;
		until = info.transferLimitEnd;
		active = limit > 0 && block.timestamp < until;
	}

	function website() external view returns (string memory) {
		return info.website;
	}

	function twitter() external view returns (string memory) {
		return info.twitter;
	}

	function telegram() external view returns (string memory) {
		return info.telegram;
	}

	function discord() external view returns (string memory) {
		return info.discord;
	}

	function additionalInfo() external view returns (string memory) {
		return info.additionalInfo;
	}


	function _createLP(uint256 _initialMarketCap, uint256 _upperMarketCap, uint256 _creatorFee) internal {
		unchecked {
			address _this = address(this);
			address _weth = ROUTER.WETH9();
			bool _weth0 = _weth < _this;
			(uint160 _initialSqrtPrice, ) = _getPriceAndTickFromValues(_weth0, totalSupply(), _initialMarketCap);
			info.pool = Factory(ROUTER.factory()).createPool(_this, _weth, 10000);
			Pool(pool()).initialize(_initialSqrtPrice);
			PositionManager _pm = PositionManager(ROUTER.positionManager());
			_approve(_this, address(_pm), totalSupply());
			( , int24 _minTick) = _getPriceAndTickFromValues(_weth0, totalSupply(), _initialMarketCap);
			( , int24 _maxTick) = _getPriceAndTickFromValues(_weth0, totalSupply(), _upperMarketCap);
			if (_creatorFee > 0) {
				_pm.mint(PositionManager.MintParams({
					token0: _weth0 ? _weth : _this,
					token1: !_weth0 ? _weth : _this,
					fee: 10000,
					tickLower: _weth0 ? _maxTick : _minTick,
					tickUpper: !_weth0 ? _maxTick : _minTick,
					amount0Desired: _weth0 ? 0 :  totalSupply() * _creatorFee / PERCENT_PRECISION,
					amount1Desired: !_weth0 ? 0 : totalSupply() * _creatorFee / PERCENT_PRECISION,
					amount0Min: 0,
					amount1Min: 0,
					recipient: creator(),
					deadline: block.timestamp
				}));
			}
			(info.positionId, , , ) = _pm.mint(PositionManager.MintParams({
				token0: _weth0 ? _weth : _this,
				token1: !_weth0 ? _weth : _this,
				fee: 10000,
				tickLower: _weth0 ? _maxTick : _minTick,
				tickUpper: !_weth0 ? _maxTick : _minTick,
				amount0Desired: _weth0 ? 0 :  totalSupply() * (PERCENT_PRECISION - _creatorFee) / PERCENT_PRECISION,
				amount1Desired: !_weth0 ? 0 : totalSupply() * (PERCENT_PRECISION - _creatorFee) / PERCENT_PRECISION,
				amount0Min: 0,
				amount1Min: 0,
				recipient: _this,
				deadline: block.timestamp
			}));
			if (_this.balance > 0) {
				ROUTER.exactInputSingle{value:_this.balance}(Router.ExactInputSingleParams({
					tokenIn: _weth,
					tokenOut: _this,
					fee: 10000,
					recipient: creator(),
					amountIn: _this.balance,
					amountOutMinimum: 0,
					sqrtPriceLimitX96: 0
				}));
			}
		}
	}
	
	function _approve(address _owner, address _spender, uint256 _tokens) internal returns (bool) {
		info.users[_owner].allowance[_spender] = _tokens;
		emit Approval(_owner, _spender, _tokens);
		return true;
	}
	
	function _transfer(address _from, address _to, uint256 _tokens) internal returns (bool) {
		unchecked {
			require(_tokens > 0);
			(uint256 _limit, , bool _active) = transferLimit();
			if (_active) {
				require(_tokens <= _limit);
			}
			require(balanceOf(_from) >= _tokens);
			info.users[_from].balance -= _tokens;
			info.users[_to].balance += _tokens;
			emit Transfer(_from, _to, _tokens);
			return true;
		}
	}


	function _getSqrtRatioAtTick(int24 tick) internal pure returns (uint160 sqrtPriceX96) {
		unchecked {
			uint256 absTick = tick < 0 ? uint256(-int256(tick)) : uint256(int256(tick));
			require(absTick <= uint256(int256(MAX_TICK)), 'T');

			uint256 ratio = absTick & 0x1 != 0 ? 0xfffcb933bd6fad37aa2d162d1a594001 : 0x100000000000000000000000000000000;
			if (absTick & 0x2 != 0) ratio = (ratio * 0xfff97272373d413259a46990580e213a) >> 128;
			if (absTick & 0x4 != 0) ratio = (ratio * 0xfff2e50f5f656932ef12357cf3c7fdcc) >> 128;
			if (absTick & 0x8 != 0) ratio = (ratio * 0xffe5caca7e10e4e61c3624eaa0941cd0) >> 128;
			if (absTick & 0x10 != 0) ratio = (ratio * 0xffcb9843d60f6159c9db58835c926644) >> 128;
			if (absTick & 0x20 != 0) ratio = (ratio * 0xff973b41fa98c081472e6896dfb254c0) >> 128;
			if (absTick & 0x40 != 0) ratio = (ratio * 0xff2ea16466c96a3843ec78b326b52861) >> 128;
			if (absTick & 0x80 != 0) ratio = (ratio * 0xfe5dee046a99a2a811c461f1969c3053) >> 128;
			if (absTick & 0x100 != 0) ratio = (ratio * 0xfcbe86c7900a88aedcffc83b479aa3a4) >> 128;
			if (absTick & 0x200 != 0) ratio = (ratio * 0xf987a7253ac413176f2b074cf7815e54) >> 128;
			if (absTick & 0x400 != 0) ratio = (ratio * 0xf3392b0822b70005940c7a398e4b70f3) >> 128;
			if (absTick & 0x800 != 0) ratio = (ratio * 0xe7159475a2c29b7443b29c7fa6e889d9) >> 128;
			if (absTick & 0x1000 != 0) ratio = (ratio * 0xd097f3bdfd2022b8845ad8f792aa5825) >> 128;
			if (absTick & 0x2000 != 0) ratio = (ratio * 0xa9f746462d870fdf8a65dc1f90e061e5) >> 128;
			if (absTick & 0x4000 != 0) ratio = (ratio * 0x70d869a156d2a1b890bb3df62baf32f7) >> 128;
			if (absTick & 0x8000 != 0) ratio = (ratio * 0x31be135f97d08fd981231505542fcfa6) >> 128;
			if (absTick & 0x10000 != 0) ratio = (ratio * 0x9aa508b5b7a84e1c677de54f3e99bc9) >> 128;
			if (absTick & 0x20000 != 0) ratio = (ratio * 0x5d6af8dedb81196699c329225ee604) >> 128;
			if (absTick & 0x40000 != 0) ratio = (ratio * 0x2216e584f5fa1ea926041bedfe98) >> 128;
			if (absTick & 0x80000 != 0) ratio = (ratio * 0x48a170391f7dc42444e8fa2) >> 128;

			if (tick > 0) ratio = type(uint256).max / ratio;

			sqrtPriceX96 = uint160((ratio >> 32) + (ratio % (1 << 32) == 0 ? 0 : 1));
		}
	}

	function _getTickAtSqrtRatio(uint160 sqrtPriceX96) internal pure returns (int24 tick) {
		unchecked {
			require(sqrtPriceX96 >= MIN_SQRT_RATIO && sqrtPriceX96 < MAX_SQRT_RATIO, 'R');
			uint256 ratio = uint256(sqrtPriceX96) << 32;

			uint256 r = ratio;
			uint256 msb = 0;

			assembly {
				let f := shl(7, gt(r, 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF))
				msb := or(msb, f)
				r := shr(f, r)
			}
			assembly {
				let f := shl(6, gt(r, 0xFFFFFFFFFFFFFFFF))
				msb := or(msb, f)
				r := shr(f, r)
			}
			assembly {
				let f := shl(5, gt(r, 0xFFFFFFFF))
				msb := or(msb, f)
				r := shr(f, r)
			}
			assembly {
				let f := shl(4, gt(r, 0xFFFF))
				msb := or(msb, f)
				r := shr(f, r)
			}
			assembly {
				let f := shl(3, gt(r, 0xFF))
				msb := or(msb, f)
				r := shr(f, r)
			}
			assembly {
				let f := shl(2, gt(r, 0xF))
				msb := or(msb, f)
				r := shr(f, r)
			}
			assembly {
				let f := shl(1, gt(r, 0x3))
				msb := or(msb, f)
				r := shr(f, r)
			}
			assembly {
				let f := gt(r, 0x1)
				msb := or(msb, f)
			}

			if (msb >= 128) r = ratio >> (msb - 127);
			else r = ratio << (127 - msb);

			int256 log_2 = (int256(msb) - 128) << 64;

			assembly {
				r := shr(127, mul(r, r))
				let f := shr(128, r)
				log_2 := or(log_2, shl(63, f))
				r := shr(f, r)
			}
			assembly {
				r := shr(127, mul(r, r))
				let f := shr(128, r)
				log_2 := or(log_2, shl(62, f))
				r := shr(f, r)
			}
			assembly {
				r := shr(127, mul(r, r))
				let f := shr(128, r)
				log_2 := or(log_2, shl(61, f))
				r := shr(f, r)
			}
			assembly {
				r := shr(127, mul(r, r))
				let f := shr(128, r)
				log_2 := or(log_2, shl(60, f))
				r := shr(f, r)
			}
			assembly {
				r := shr(127, mul(r, r))
				let f := shr(128, r)
				log_2 := or(log_2, shl(59, f))
				r := shr(f, r)
			}
			assembly {
				r := shr(127, mul(r, r))
				let f := shr(128, r)
				log_2 := or(log_2, shl(58, f))
				r := shr(f, r)
			}
			assembly {
				r := shr(127, mul(r, r))
				let f := shr(128, r)
				log_2 := or(log_2, shl(57, f))
				r := shr(f, r)
			}
			assembly {
				r := shr(127, mul(r, r))
				let f := shr(128, r)
				log_2 := or(log_2, shl(56, f))
				r := shr(f, r)
			}
			assembly {
				r := shr(127, mul(r, r))
				let f := shr(128, r)
				log_2 := or(log_2, shl(55, f))
				r := shr(f, r)
			}
			assembly {
				r := shr(127, mul(r, r))
				let f := shr(128, r)
				log_2 := or(log_2, shl(54, f))
				r := shr(f, r)
			}
			assembly {
				r := shr(127, mul(r, r))
				let f := shr(128, r)
				log_2 := or(log_2, shl(53, f))
				r := shr(f, r)
			}
			assembly {
				r := shr(127, mul(r, r))
				let f := shr(128, r)
				log_2 := or(log_2, shl(52, f))
				r := shr(f, r)
			}
			assembly {
				r := shr(127, mul(r, r))
				let f := shr(128, r)
				log_2 := or(log_2, shl(51, f))
				r := shr(f, r)
			}
			assembly {
				r := shr(127, mul(r, r))
				let f := shr(128, r)
				log_2 := or(log_2, shl(50, f))
			}

			int256 log_sqrt10001 = log_2 * 255738958999603826347141;

			int24 tickLow = int24((log_sqrt10001 - 3402992956809132418596140100660247210) >> 128);
			int24 tickHi = int24((log_sqrt10001 + 291339464771989622907027621153398088495) >> 128);

			tick = tickLow == tickHi ? tickLow : _getSqrtRatioAtTick(tickHi) <= sqrtPriceX96 ? tickHi : tickLow;
		}
	}

	function _sqrt(uint256 _n) internal pure returns (uint256 result) {
		unchecked {
			uint256 _tmp = (_n + 1) / 2;
			result = _n;
			while (_tmp < result) {
				result = _tmp;
				_tmp = (_n / _tmp + _tmp) / 2;
			}
		}
	}

	function _getPriceAndTickFromValues(bool _weth0, uint256 _tokens, uint256 _weth) internal pure returns (uint160 price, int24 tick) {
		uint160 _tmpPrice = uint160(_sqrt(2**192 / (!_weth0 ? _tokens : _weth) * (_weth0 ? _tokens : _weth)));
		tick = _getTickAtSqrtRatio(_tmpPrice);
		tick = tick - (tick % 200);
		price = _getSqrtRatioAtTick(tick);
	}

	function _uint2str(uint256 _value, uint256 _scale, uint256 _maxDecimals) internal pure returns (string memory str) {
		uint256 _d = _scale > _maxDecimals ? _maxDecimals : _scale;
		uint256 _n = _value / 10**(_scale > _d ? _scale - _d : 0);
		if (_n == 0) {
			return "0";
		}
		uint256 _digits = 1;
		uint256 _tmp = _n;
		while (_tmp > 9) {
			_tmp /= 10;
			_digits++;
		}
		_tmp = _digits > _d ? _digits : _d + 1;
		uint256 _offset = (_tmp > _d + 1 ? _tmp - _d - 1 > _d ? _d : _tmp - _d - 1 : 0);
		for (uint256 i = 0; i < _tmp - _offset; i++) {
			uint256 _dec = i < _tmp - _digits ? 0 : (_n / (10**(_tmp - i - 1))) % 10;
			bytes memory _char = new bytes(1);
			_char[0] = bytes1(uint8(_dec) + 48);
			str = string(abi.encodePacked(str, string(_char)));
			if (i < _tmp - _d - 1) {
				if ((i + 1) % 3 == (_tmp - _d) % 3) {
					str = string(abi.encodePacked(str, ","));
				}
			} else {
				if ((_n / 10**_offset) % 10**(_tmp - _offset - i - 1) == 0) {
					break;
				} else if (i == _tmp - _d - 1) {
					str = string(abi.encodePacked(str, "."));
				}
			}
		}
	}
}

Contract Security Audit

Contract ABI

[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"Approval","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":"tokens","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"additionalInfo","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","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":"_tokens","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"collectTradingFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"creator","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"creatorFee","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"discord","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"initialMarketCap","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_creator","type":"address"},{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"uint256","name":"_totalSupply","type":"uint256"},{"internalType":"uint256","name":"_initialMarketCap","type":"uint256"},{"internalType":"uint256","name":"_upperMarketCap","type":"uint256"},{"internalType":"uint256","name":"_creatorFee","type":"uint256"},{"internalType":"uint256","name":"_transferLimit","type":"uint256"},{"internalType":"uint256","name":"_transferLimitTime","type":"uint256"}],"name":"initialize","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"lock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pool","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"position","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"source","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"team","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"telegram","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_tokens","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_tokens","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"transferAndCall","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_tokens","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferLimit","outputs":[{"internalType":"uint256","name":"limit","type":"uint256"},{"internalType":"uint256","name":"until","type":"uint256"},{"internalType":"bool","name":"active","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"twitter","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"_website","type":"string"},{"internalType":"string","name":"_twitter","type":"string"},{"internalType":"string","name":"_telegram","type":"string"},{"internalType":"string","name":"_discord","type":"string"},{"internalType":"string","name":"_info","type":"string"}],"name":"updateAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_discord","type":"string"}],"name":"updateDiscord","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_info","type":"string"}],"name":"updateInfo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_telegram","type":"string"}],"name":"updateTelegram","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_twitter","type":"string"}],"name":"updateTwitter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_website","type":"string"}],"name":"updateWebsite","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"upperMarketCap","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"website","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"}]

608060405234801561000f575f80fd5b506132fd8061001d5f395ff3fe6080604052600436106101e6575f3560e01c806367e828bf11610108578063bdaaa6401161009d578063e88958dc1161006d578063e88958dc14610544578063e8bd71e114610558578063f1b54ff91461056c578063f83d08ba1461058b578063f94325171461059f575f80fd5b8063bdaaa640146104b5578063beb0a416146104c9578063d3f64664146104dd578063dd62ed3e146104fc575f80fd5b806397d6c43c116100d857806397d6c43c14610444578063a9059cbb14610463578063ab29511b14610482578063abfaeee0146104a1575f80fd5b806367e828bf146103c657806370a08231146103da57806385f2aef21461040e57806395d89b4114610430575f80fd5b80632b0f17621161017e5780634063c8651161014e5780634063c8651461036b57806347ecb6651461037f57806353f8b3031461039357806367475859146103a7575f80fd5b80632b0f1762146102ff578063313ce567146103125780633b5f1935146103385780634000aea01461034c575f80fd5b806316f0115b116101b957806316f0115b1461028e57806318160ddd146102ab57806323b872dd146102bf578063246d84e0146102de575f80fd5b806302d05d3f146101ea57806306fdde031461022057806309218e9114610241578063095ea7b31461025f575b5f80fd5b3480156101f5575f80fd5b506004546001600160a01b03165b6040516001600160a01b0390911681526020015b60405180910390f35b34801561022b575f80fd5b506102346105d0565b60405161021791906120ab565b34801561024c575f80fd5b50600d545b604051908152602001610217565b34801561026a575f80fd5b5061027e6102793660046120f4565b61065b565b6040519015158152602001610217565b348015610299575f80fd5b506003546001600160a01b0316610203565b3480156102b6575f80fd5b50600554610251565b3480156102ca575f80fd5b5061027e6102d936600461211e565b610670565b3480156102e9575f80fd5b506102fd6102f83660046121f9565b6106ed565b005b6102fd61030d366004612233565b610713565b34801561031d575f80fd5b50610326601281565b60405160ff9091168152602001610217565b348015610343575f80fd5b5061023461091e565b348015610357575f80fd5b5061027e6103663660046122d9565b610956565b348015610376575f80fd5b506102346109f7565b34801561038a575f80fd5b50610234610a8a565b34801561039e575f80fd5b506102fd610a9c565b3480156103b2575f80fd5b506102fd6103c13660046121f9565b610c5e565b3480156103d1575f80fd5b50610234610c80565b3480156103e5575f80fd5b506102516103f436600461235b565b6001600160a01b03165f908152600c602052604090205490565b348015610419575f80fd5b5060025461010090046001600160a01b0316610203565b34801561043b575f80fd5b50610234610c9c565b34801561044f575f80fd5b506102fd61045e366004612376565b610ca9565b34801561046e575f80fd5b5061027e61047d3660046120f4565b610d07565b34801561048d575f80fd5b506102fd61049c3660046121f9565b610d13565b3480156104ac575f80fd5b50610234610d35565b3480156104c0575f80fd5b50610234610d47565b3480156104d4575f80fd5b50610234610d5b565b3480156104e8575f80fd5b506102fd6104f73660046121f9565b610d6d565b348015610507575f80fd5b5061025161051636600461243f565b6001600160a01b039182165f908152600c602090815260408083209390941682526001909201909152205490565b34801561054f575f80fd5b50610234610d8f565b348015610563575f80fd5b50610234610dbc565b348015610577575f80fd5b506102fd6105863660046121f9565b610dce565b348015610596575f80fd5b506102fd610df0565b3480156105aa575f80fd5b506105b3610e1a565b604080519384526020840192909252151590820152606001610217565b5f80546105dc90612476565b80601f016020809104026020016040519081016040528092919081815260200182805461060890612476565b80156106535780601f1061062a57610100808354040283529160200191610653565b820191905f5260205f20905b81548152906001019060200180831161063657829003601f168201915b505050505081565b5f610667338484610e36565b90505b92915050565b6001600160a01b0383165f908152600c60209081526040808320338452600101909152812054828110156106a2575f80fd5b5f1981146106d7576001600160a01b0385165f908152600c602090815260408083203384526001019091529020805484900390555b6106e2858585610ea1565b9150505b9392505050565b6004546001600160a01b03163314610703575f80fd5b601161070f82826124f1565b5050565b60025460ff1615610722575f80fd5b6005541561072e575f80fd5b5f885111801561074057506020885111155b610748575f80fd5b5f875111801561075a57506020875111155b610762575f80fd5b662386f26fc10000861015801561078757506d314dc6448d9338c15b0a000000008611155b61078f575f80fd5b5f8511801561079d57508484115b6107a5575f80fd5b6107b2600a6103e86125d5565b8311156107bd575f80fd5b620151808111156107cc575f80fd5b6040516107d89061207c565b604051809103905ff0801580156107f1573d5f803e3d5ffd5b5060028054610100600160a81b0319166101006001600160a01b039384168102919091179182905560405163189acdbd60e31b81528c8416600482015291049091169063c4d66de8906024015f604051808303815f87803b158015610854575f80fd5b505af1158015610866573d5f803e3d5ffd5b5050600480546001600160a01b0319166001600160a01b038d16179055505f905061089189826124f1565b50600161089e88826124f1565b506005869055305f818152600c602090815260408083208a9055518981527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3600685905560078490556009839055610901858585610f6c565b600a82905561091081426125e8565b600b55505050505050505050565b60606109326002600401546012600561166b565b60405160200161094291906125fb565b604051602081830303815290604052905090565b5f610962338686610ea1565b50843b63ffffffff8116156109eb57604051636be32e7360e01b81526001600160a01b03871690636be32e73906109a3903390899089908990600401612622565b6020604051808303815f875af11580156109bf573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109e39190612669565b6109eb575f80fd5b50600195945050505050565b606060026010018054610a0990612476565b80601f0160208091040260200160405190810160405280929190818152602001828054610a3590612476565b8015610a805780601f10610a5757610100808354040283529160200191610a80565b820191905f5260205f20905b815481529060010190602001808311610a6357829003601f168201915b5050505050905090565b60606002600e018054610a0990612476565b5f7368b3465833fb72a70ecdf485e0e4c7bd8665fc456001600160a01b031663791b98bc6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610aed573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b119190612688565b9050806001600160a01b031663fc6f786560405180608001604052806002600b01548152602001610b506002546001600160a01b036101009091041690565b6001600160a01b0390811682526001600160801b0360208084018290526040938401829052835160e087901b6001600160e01b031916815285516004820152908501519092166024830152918301518216604482015260609092015116606482015260840160408051808303815f875af1158015610bd0573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bf491906126a3565b505060025f0160019054906101000a90046001600160a01b03166001600160a01b031663476343ee6040518163ffffffff1660e01b81526004015f604051808303815f87803b158015610c45575f80fd5b505af1158015610c57573d5f803e3d5ffd5b5050505050565b6004546001600160a01b03163314610c74575f80fd5b600f61070f82826124f1565b6040518060600160405280603681526020016132926036913981565b600180546105dc90612476565b6004546001600160a01b03163314610cbf575f80fd5b600e610ccb86826124f1565b50600f610cd885826124f1565b506010610ce584826124f1565b506011610cf283826124f1565b506012610cff82826124f1565b505050505050565b5f610667338484610ea1565b6004546001600160a01b03163314610d29575f80fd5b601261070f82826124f1565b60606002600d018054610a0990612476565b60606109326002600501546012600561166b565b60606002600c018054610a0990612476565b6004546001600160a01b03163314610d83575f80fd5b601061070f82826124f1565b600954606090610dac90610da49060646126c5565b60038061166b565b60405160200161094291906126dc565b60606002600f018054610a0990612476565b6004546001600160a01b03163314610de4575f80fd5b600e61070f82826124f1565b60025460ff1615610dff575f80fd5b60055415610e0b575f80fd5b6002805460ff19166001179055565b600a54600b545f8215801590610e2f57508142105b9050909192565b6001600160a01b038381165f818152600c602090815260408083209487168084526001909501825280832086905551858152919392917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a35060019392505050565b5f808211610ead575f80fd5b5f80610eb7610e1a565b92505091508015610ece5781841115610ece575f80fd5b83610eed876001600160a01b03165f908152600c602052604090205490565b1015610ef7575f80fd5b6001600160a01b038087165f818152600c6020526040808220805489900390559288168082529083902080548801905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610f589088815260200190565b60405180910390a350600195945050505050565b5f3090505f7368b3465833fb72a70ecdf485e0e4c7bd8665fc456001600160a01b0316634aa4a4fc6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fc1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fe59190612688565b90506001600160a01b03808316908216105f61100a8261100460055490565b89611978565b5090507368b3465833fb72a70ecdf485e0e4c7bd8665fc456001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561105d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110819190612688565b60405163a167129560e01b81526001600160a01b03868116600483015285811660248301526127106044830152919091169063a1671295906064016020604051808303815f875af11580156110d8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110fc9190612688565b600380546001600160a01b0319166001600160a01b0392909216918217905560405163f637731d60e01b81526001600160a01b038381166004830152919091169063f637731d906024015f604051808303815f87803b15801561115d575f80fd5b505af115801561116f573d5f803e3d5ffd5b505050505f7368b3465833fb72a70ecdf485e0e4c7bd8665fc456001600160a01b031663791b98bc6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156111c4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111e89190612688565b90506111fd85826111f860055490565b610e36565b505f6112128461120c60055490565b8b611978565b9150505f6112238561120c60055490565b915050871561139d57826001600160a01b0316638831645660405180610160016040528088611252578a611254565b895b6001600160a01b03168152602001881561126e578a611270565b895b6001600160a01b031681526127106020820152604001886112915785611293565b845b60020b815260200188156112a757856112a9565b845b60020b8152602001886112d7576103e88c6112c360055490565b02816112d1576112d16125ad565b046112d9565b5f5b81526020018815611305576103e88c6112f160055490565b02816112ff576112ff6125ad565b04611307565b5f5b81526020015f81526020015f815260200161132a6004546001600160a01b031690565b6001600160a01b03168152602001428152506040518263ffffffff1660e01b81526004016113589190612700565b6080604051808303815f875af1158015611374573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061139891906127c4565b505050505b826001600160a01b03166388316456604051806101600160405280886113c3578a6113c5565b895b6001600160a01b0316815260200188156113df578a6113e1565b895b6001600160a01b031681526127106020820152604001886114025785611404565b845b60020b81526020018815611418578561141a565b845b60020b81526020018861144c576103e88c6103e80361143860055490565b0281611446576114466125ad565b0461144e565b5f5b8152602001881561147e576103e88c6103e80361146a60055490565b0281611478576114786125ad565b04611480565b5f5b81526020015f81526020015f81526020018a6001600160a01b03168152602001428152506040518263ffffffff1660e01b81526004016114c09190612700565b6080604051808303815f875af11580156114dc573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061150091906127c4565b505050600d556001600160a01b038716311561165f577368b3465833fb72a70ecdf485e0e4c7bd8665fc456001600160a01b03166304e45aaf886001600160a01b0316316040518060e001604052808a6001600160a01b031681526020018b6001600160a01b0316815260200161271062ffffff16815260200161158c6004546001600160a01b031690565b6001600160a01b0390811682528c8116316020808401919091525f604080850182905260609485019190915280516001600160e01b031960e089901b168152855184166004820152918501518316602483015284015162ffffff16604482015291830151811660648301526080830151608483015260a083015160a483015260c09092015190911660c482015260e40160206040518083038185885af1158015611638573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061165d919061280a565b505b50505050505050505050565b60605f82841161167b578361167d565b825b90505f81851161168d575f611697565b6116978286612821565b6116a290600a612914565b6116ac90876125d5565b9050805f036116d857604051806040016040528060018152602001600360fc1b815250925050506106e6565b6001815b6009811115611704576116f0600a826125d5565b9050816116fc8161291f565b9250506116dc565b83821161171b576117168460016125e8565b61171d565b815b90505f61172b8560016125e8565b8211611737575f611770565b8460016117448285612821565b61174e9190612821565b1161176e57600161175f8684612821565b6117699190612821565b611770565b845b90505f5b61177e8284612821565b81101561196b575f6117908585612821565b82106117d257600a60016117a48487612821565b6117ae9190612821565b6117b990600a612914565b6117c390886125d5565b6117cd9190612937565b6117d4565b5f5b6040805160018082528183019092529192505f919060208201818036833701905050905061180382603061294a565b60f81b815f8151811061181857611818612963565b60200101906001600160f81b03191690815f1a9053508881604051602001611841929190612977565b60408051601f198184030181529190529850600161185f8987612821565b6118699190612821565b8310156118ca57600361187c8987612821565b6118869190612937565b60036118938560016125e8565b61189d9190612937565b036118c557886040516020016118b391906129a5565b60405160208183030381529060405298505b611961565b6001836118d78688612821565b6118e19190612821565b6118eb9190612821565b6118f690600a612914565b61190185600a612914565b61190b90896125d5565b6119159190612937565b5f0361192257505061196b565b600161192e8987612821565b6119389190612821565b8303611961578860405160200161194f91906129c9565b60405160208183030381529060405298505b5050600101611774565b5050505050509392505050565b5f805f6119b686611989578461198b565b855b87156119975785611999565b865b6119a790600160c01b6125d5565b6119b191906126c5565b6119ee565b90506119c181611a31565b91506119ce60c8836129ed565b6119d89083612a0e565b91506119e382611d4e565b925050935093915050565b80600260018201045b81811015611a2b57809150600281828581611a1457611a146125ad565b040181611a2357611a236125ad565b0490506119f7565b50919050565b5f6401000276a36001600160a01b03831610801590611a6c575073fffd8963efd1fc6a506488495d951d5263988d266001600160a01b038316105b611aa15760405162461bcd60e51b81526020600482015260016024820152602960f91b60448201526064015b60405180910390fd5b640100000000600160c01b03602083901b166001600160801b03811160071b81811c67ffffffffffffffff811160061b90811c63ffffffff811160051b90811c61ffff811160041b90811c60ff8111600390811b91821c600f811160021b90811c918211600190811b92831c97908811961790941790921717909117171760808110611b3557607f810383901c9150611b3f565b80607f0383901b91505b908002607f81811c60ff83811c9190911c800280831c81831c1c800280841c81841c1c800280851c81851c1c800280861c81861c1c800280871c81871c1c800280881c81881c1c800280891c81891c1c8002808a1c818a1c1c8002808b1c818b1c1c8002808c1c818c1c1c8002808d1c818d1c1c8002808e1c9c81901c9c909c1c80029c8d901c9e9d607f198f0160401b60c09190911c678000000000000000161760c19b909b1c674000000000000000169a909a1760c29990991c672000000000000000169890981760c39790971c671000000000000000169690961760c49590951c670800000000000000169490941760c59390931c670400000000000000169290921760c69190911c670200000000000000161760c79190911c670100000000000000161760c89190911c6680000000000000161760c99190911c6640000000000000161760ca9190911c6620000000000000161760cb9190911c6610000000000000161760cc9190911c6608000000000000161760cd9190911c66040000000000001617693627a301d71055774c8581026f028f6481ab7f045a5af012a19d003aa9198101608090811d906fdb2df09e81959a81455e260799a0632f8301901d600281810b9083900b14611d3f57886001600160a01b0316611d2482611d4e565b6001600160a01b03161115611d395781611d41565b80611d41565b815b9998505050505050505050565b5f805f8360020b12611d63578260020b611d6a565b8260020b5f035b9050620d89e8811115611da35760405162461bcd60e51b81526020600482015260016024820152601560fa1b6044820152606401611a98565b5f816001165f03611db857600160801b611dca565b6ffffcb933bd6fad37aa2d162d1a5940015b70ffffffffffffffffffffffffffffffffff1690506002821615611dfe576ffff97272373d413259a46990580e213a0260801c5b6004821615611e1d576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b6008821615611e3c576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b6010821615611e5b576fffcb9843d60f6159c9db58835c9266440260801c5b6020821615611e7a576fff973b41fa98c081472e6896dfb254c00260801c5b6040821615611e99576fff2ea16466c96a3843ec78b326b528610260801c5b6080821615611eb8576ffe5dee046a99a2a811c461f1969c30530260801c5b610100821615611ed8576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b610200821615611ef8576ff987a7253ac413176f2b074cf7815e540260801c5b610400821615611f18576ff3392b0822b70005940c7a398e4b70f30260801c5b610800821615611f38576fe7159475a2c29b7443b29c7fa6e889d90260801c5b611000821615611f58576fd097f3bdfd2022b8845ad8f792aa58250260801c5b612000821615611f78576fa9f746462d870fdf8a65dc1f90e061e50260801c5b614000821615611f98576f70d869a156d2a1b890bb3df62baf32f70260801c5b618000821615611fb8576f31be135f97d08fd981231505542fcfa60260801c5b62010000821615611fd9576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b62020000821615611ff9576e5d6af8dedb81196699c329225ee6040260801c5b62040000821615612018576d2216e584f5fa1ea926041bedfe980260801c5b62080000821615612035576b048a170391f7dc42444e8fa20260801c5b5f8460020b131561205457805f1981612050576120506125ad565b0490505b64010000000081061561206857600161206a565b5f5b60ff16602082901c0192505050919050565b61085e80612a3483390190565b5f5b838110156120a357818101518382015260200161208b565b50505f910152565b602081525f82518060208401526120c9816040850160208701612089565b601f01601f19169190910160400192915050565b6001600160a01b03811681146120f1575f80fd5b50565b5f8060408385031215612105575f80fd5b8235612110816120dd565b946020939093013593505050565b5f805f60608486031215612130575f80fd5b833561213b816120dd565b9250602084013561214b816120dd565b929592945050506040919091013590565b634e487b7160e01b5f52604160045260245ffd5b5f82601f83011261217f575f80fd5b813567ffffffffffffffff8082111561219a5761219a61215c565b604051601f8301601f19908116603f011681019082821181831017156121c2576121c261215c565b816040528381528660208588010111156121da575f80fd5b836020870160208301375f602085830101528094505050505092915050565b5f60208284031215612209575f80fd5b813567ffffffffffffffff81111561221f575f80fd5b61222b84828501612170565b949350505050565b5f805f805f805f805f6101208a8c03121561224c575f80fd5b8935612257816120dd565b985060208a013567ffffffffffffffff80821115612273575f80fd5b61227f8d838e01612170565b995060408c0135915080821115612294575f80fd5b506122a18c828d01612170565b999c989b5098996060810135995060808101359860a0820135985060c0820135975060e0820135965061010090910135945092505050565b5f805f80606085870312156122ec575f80fd5b84356122f7816120dd565b935060208501359250604085013567ffffffffffffffff8082111561231a575f80fd5b818701915087601f83011261232d575f80fd5b81358181111561233b575f80fd5b88602082850101111561234c575f80fd5b95989497505060200194505050565b5f6020828403121561236b575f80fd5b81356106e6816120dd565b5f805f805f60a0868803121561238a575f80fd5b853567ffffffffffffffff808211156123a1575f80fd5b6123ad89838a01612170565b965060208801359150808211156123c2575f80fd5b6123ce89838a01612170565b955060408801359150808211156123e3575f80fd5b6123ef89838a01612170565b94506060880135915080821115612404575f80fd5b61241089838a01612170565b93506080880135915080821115612425575f80fd5b5061243288828901612170565b9150509295509295909350565b5f8060408385031215612450575f80fd5b823561245b816120dd565b9150602083013561246b816120dd565b809150509250929050565b600181811c9082168061248a57607f821691505b602082108103611a2b57634e487b7160e01b5f52602260045260245ffd5b601f8211156124ec57805f5260205f20601f840160051c810160208510156124cd5750805b601f840160051c820191505b81811015610c57575f81556001016124d9565b505050565b815167ffffffffffffffff81111561250b5761250b61215c565b61251f816125198454612476565b846124a8565b602080601f831160018114612552575f841561253b5750858301515b5f19600386901b1c1916600185901b178555610cff565b5f85815260208120601f198616915b8281101561258057888601518255948401946001909101908401612561565b508582101561259d57878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b5f52601260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f826125e3576125e36125ad565b500490565b8082018082111561066a5761066a6125c1565b5f825161260c818460208701612089565b630408aa8960e31b920191825250600401919050565b6001600160a01b0385168152602081018490526060604082018190528101829052818360808301375f818301608090810191909152601f909201601f191601019392505050565b5f60208284031215612679575f80fd5b815180151581146106e6575f80fd5b5f60208284031215612698575f80fd5b81516106e6816120dd565b5f80604083850312156126b4575f80fd5b505080516020909101519092909150565b808202811582820484141761066a5761066a6125c1565b5f82516126ed818460208701612089565b602560f81b920191825250600101919050565b81516001600160a01b031681526101608101602083015161272c60208401826001600160a01b03169052565b506040830151612743604084018262ffffff169052565b506060830151612758606084018260020b9052565b50608083015161276d608084018260020b9052565b5060a083015160a083015260c083015160c083015260e083015160e0830152610100808401518184015250610120808401516127b3828501826001600160a01b03169052565b505061014092830151919092015290565b5f805f80608085870312156127d7575f80fd5b8451935060208501516001600160801b03811681146127f4575f80fd5b6040860151606090960151949790965092505050565b5f6020828403121561281a575f80fd5b5051919050565b8181038181111561066a5761066a6125c1565b600181815b8085111561286e57815f1904821115612854576128546125c1565b8085161561286157918102915b93841c9390800290612839565b509250929050565b5f826128845750600161066a565b8161289057505f61066a565b81600181146128a657600281146128b0576128cc565b600191505061066a565b60ff8411156128c1576128c16125c1565b50506001821b61066a565b5060208310610133831016604e8410600b84101617156128ef575081810a61066a565b6128f98383612834565b805f190482111561290c5761290c6125c1565b029392505050565b5f6106678383612876565b5f60018201612930576129306125c1565b5060010190565b5f82612945576129456125ad565b500690565b60ff818116838216019081111561066a5761066a6125c1565b634e487b7160e01b5f52603260045260245ffd5b5f8351612988818460208801612089565b83519083019061299c818360208801612089565b01949350505050565b5f82516129b6818460208701612089565b600b60fa1b920191825250600101919050565b5f82516129da818460208701612089565b601760f91b920191825250600101919050565b5f8260020b806129ff576129ff6125ad565b808360020b0791505092915050565b600282810b9082900b03627fffff198112627fffff8213171561066a5761066a6125c156fe608060405234801561000f575f80fd5b506108418061001d5f395ff3fe60806040526004361061007c575f3560e01c8063894760691161004c5780638947606914610117578063c4d66de814610136578063e086e5ec14610155578063fc0c546a14610169575f80fd5b80633a98ef3914610087578063476343ee146100af5780634c02f62e146100c557806357a858fc146100d9575f80fd5b3661008357005b5f80fd5b348015610092575f80fd5b5061009c60015481565b6040519081526020015b60405180910390f35b3480156100ba575f80fd5b506100c36101a0565b005b3480156100d0575f80fd5b506100c36101bf565b3480156100e4575f80fd5b506100f86100f33660046106f6565b610236565b604080516001600160a01b0390931683526020830191909152016100a6565b348015610122575f80fd5b506100c3610131366004610721565b61026b565b348015610141575f80fd5b506100c3610150366004610721565b610524565b348015610160575f80fd5b506100c36105ad565b348015610174575f80fd5b50600254610188906001600160a01b031681565b6040516001600160a01b0390911681526020016100a6565b6101a86101bf565b6002546101bd906001600160a01b031661026b565b565b6101bd7368b3465833fb72a70ecdf485e0e4c7bd8665fc456001600160a01b0316634aa4a4fc6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610212573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101319190610743565b5f8181548110610244575f80fd5b5f918252602090912060029091020180546001909101546001600160a01b03909116915082565b5f7368b3465833fb72a70ecdf485e0e4c7bd8665fc456001600160a01b0316634aa4a4fc6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156102bc573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102e09190610743565b9050806001600160a01b0316826001600160a01b0316036103c0576040516370a0823160e01b81523060048201526001600160a01b03821690632e1a7d4d9082906370a0823190602401602060405180830381865afa158015610345573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610369919061075e565b6040518263ffffffff1660e01b815260040161038791815260200190565b5f604051808303815f87803b15801561039e575f80fd5b505af11580156103b0573d5f803e3d5ffd5b505050506103bc6105ad565b5050565b6040516370a0823160e01b81523060048201525f906001600160a01b038416906370a0823190602401602060405180830381865afa158015610404573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610428919061075e565b9050801561051f575f5b5f5481101561051d575f80828154811061044e5761044e610775565b5f9182526020918290206040805180820190915260029092020180546001600160a01b03908116808452600192830154948401859052915492945088169263a9059cbb929061049d908861079d565b6104a791906107ba565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303815f875af11580156104ef573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061051391906107d9565b5050600101610432565b505b505050565b60015415610530575f80fd5b600280546001600160a01b0319163317905561054d81600a610648565b61056c73e6c791fbd46db3f4eda5f7bb76474f4fa530733e6006610648565b61058b7312fe289b7588de4ee1f1392ce086be100f7165ed6003610648565b6105aa73c28c9da0f8a500dffc16ff09a3dd1cc4c530d3466001610648565b50565b4780156105aa575f5b5f548110156103bc575f8082815481106105d2576105d2610775565b5f9182526020918290206040805180820190915260029092020180546001600160a01b03168083526001918201549383018490529054919350916108fc919061061b908761079d565b61062591906107ba565b6040518115909202915f818181858888f15050600190940193506105b692505050565b604080518082019091526001600160a01b038381168252602082018381525f80546001808201835582805294517f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563600290920291820180546001600160a01b031916919095161790935590517f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e564909201919091558154839291906106ed9084906107f8565b90915550505050565b5f60208284031215610706575f80fd5b5035919050565b6001600160a01b03811681146105aa575f80fd5b5f60208284031215610731575f80fd5b813561073c8161070d565b9392505050565b5f60208284031215610753575f80fd5b815161073c8161070d565b5f6020828403121561076e575f80fd5b5051919050565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b80820281158282048414176107b4576107b4610789565b92915050565b5f826107d457634e487b7160e01b5f52601260045260245ffd5b500490565b5f602082840312156107e9575f80fd5b8151801515811461073c575f80fd5b808201808211156107b4576107b461078956fea2646970667358221220adfdaca0e91cd4d2c70d5661c772350f7a50a2dfd14eb9704f7df5331de8f38e64736f6c6343000816003343726561746564207769746820426f73736d616e27732042616b657279202862616b6572792e6d756c6c65742e6361706974616c2921a2646970667358221220d3b784ebb78494dacb3a79d1b15ab524e79f2c857812cf103095ac10b3ebc58d64736f6c63430008160033

Deployed Bytecode

0x6080604052600436106101e6575f3560e01c806367e828bf11610108578063bdaaa6401161009d578063e88958dc1161006d578063e88958dc14610544578063e8bd71e114610558578063f1b54ff91461056c578063f83d08ba1461058b578063f94325171461059f575f80fd5b8063bdaaa640146104b5578063beb0a416146104c9578063d3f64664146104dd578063dd62ed3e146104fc575f80fd5b806397d6c43c116100d857806397d6c43c14610444578063a9059cbb14610463578063ab29511b14610482578063abfaeee0146104a1575f80fd5b806367e828bf146103c657806370a08231146103da57806385f2aef21461040e57806395d89b4114610430575f80fd5b80632b0f17621161017e5780634063c8651161014e5780634063c8651461036b57806347ecb6651461037f57806353f8b3031461039357806367475859146103a7575f80fd5b80632b0f1762146102ff578063313ce567146103125780633b5f1935146103385780634000aea01461034c575f80fd5b806316f0115b116101b957806316f0115b1461028e57806318160ddd146102ab57806323b872dd146102bf578063246d84e0146102de575f80fd5b806302d05d3f146101ea57806306fdde031461022057806309218e9114610241578063095ea7b31461025f575b5f80fd5b3480156101f5575f80fd5b506004546001600160a01b03165b6040516001600160a01b0390911681526020015b60405180910390f35b34801561022b575f80fd5b506102346105d0565b60405161021791906120ab565b34801561024c575f80fd5b50600d545b604051908152602001610217565b34801561026a575f80fd5b5061027e6102793660046120f4565b61065b565b6040519015158152602001610217565b348015610299575f80fd5b506003546001600160a01b0316610203565b3480156102b6575f80fd5b50600554610251565b3480156102ca575f80fd5b5061027e6102d936600461211e565b610670565b3480156102e9575f80fd5b506102fd6102f83660046121f9565b6106ed565b005b6102fd61030d366004612233565b610713565b34801561031d575f80fd5b50610326601281565b60405160ff9091168152602001610217565b348015610343575f80fd5b5061023461091e565b348015610357575f80fd5b5061027e6103663660046122d9565b610956565b348015610376575f80fd5b506102346109f7565b34801561038a575f80fd5b50610234610a8a565b34801561039e575f80fd5b506102fd610a9c565b3480156103b2575f80fd5b506102fd6103c13660046121f9565b610c5e565b3480156103d1575f80fd5b50610234610c80565b3480156103e5575f80fd5b506102516103f436600461235b565b6001600160a01b03165f908152600c602052604090205490565b348015610419575f80fd5b5060025461010090046001600160a01b0316610203565b34801561043b575f80fd5b50610234610c9c565b34801561044f575f80fd5b506102fd61045e366004612376565b610ca9565b34801561046e575f80fd5b5061027e61047d3660046120f4565b610d07565b34801561048d575f80fd5b506102fd61049c3660046121f9565b610d13565b3480156104ac575f80fd5b50610234610d35565b3480156104c0575f80fd5b50610234610d47565b3480156104d4575f80fd5b50610234610d5b565b3480156104e8575f80fd5b506102fd6104f73660046121f9565b610d6d565b348015610507575f80fd5b5061025161051636600461243f565b6001600160a01b039182165f908152600c602090815260408083209390941682526001909201909152205490565b34801561054f575f80fd5b50610234610d8f565b348015610563575f80fd5b50610234610dbc565b348015610577575f80fd5b506102fd6105863660046121f9565b610dce565b348015610596575f80fd5b506102fd610df0565b3480156105aa575f80fd5b506105b3610e1a565b604080519384526020840192909252151590820152606001610217565b5f80546105dc90612476565b80601f016020809104026020016040519081016040528092919081815260200182805461060890612476565b80156106535780601f1061062a57610100808354040283529160200191610653565b820191905f5260205f20905b81548152906001019060200180831161063657829003601f168201915b505050505081565b5f610667338484610e36565b90505b92915050565b6001600160a01b0383165f908152600c60209081526040808320338452600101909152812054828110156106a2575f80fd5b5f1981146106d7576001600160a01b0385165f908152600c602090815260408083203384526001019091529020805484900390555b6106e2858585610ea1565b9150505b9392505050565b6004546001600160a01b03163314610703575f80fd5b601161070f82826124f1565b5050565b60025460ff1615610722575f80fd5b6005541561072e575f80fd5b5f885111801561074057506020885111155b610748575f80fd5b5f875111801561075a57506020875111155b610762575f80fd5b662386f26fc10000861015801561078757506d314dc6448d9338c15b0a000000008611155b61078f575f80fd5b5f8511801561079d57508484115b6107a5575f80fd5b6107b2600a6103e86125d5565b8311156107bd575f80fd5b620151808111156107cc575f80fd5b6040516107d89061207c565b604051809103905ff0801580156107f1573d5f803e3d5ffd5b5060028054610100600160a81b0319166101006001600160a01b039384168102919091179182905560405163189acdbd60e31b81528c8416600482015291049091169063c4d66de8906024015f604051808303815f87803b158015610854575f80fd5b505af1158015610866573d5f803e3d5ffd5b5050600480546001600160a01b0319166001600160a01b038d16179055505f905061089189826124f1565b50600161089e88826124f1565b506005869055305f818152600c602090815260408083208a9055518981527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3600685905560078490556009839055610901858585610f6c565b600a82905561091081426125e8565b600b55505050505050505050565b60606109326002600401546012600561166b565b60405160200161094291906125fb565b604051602081830303815290604052905090565b5f610962338686610ea1565b50843b63ffffffff8116156109eb57604051636be32e7360e01b81526001600160a01b03871690636be32e73906109a3903390899089908990600401612622565b6020604051808303815f875af11580156109bf573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109e39190612669565b6109eb575f80fd5b50600195945050505050565b606060026010018054610a0990612476565b80601f0160208091040260200160405190810160405280929190818152602001828054610a3590612476565b8015610a805780601f10610a5757610100808354040283529160200191610a80565b820191905f5260205f20905b815481529060010190602001808311610a6357829003601f168201915b5050505050905090565b60606002600e018054610a0990612476565b5f7368b3465833fb72a70ecdf485e0e4c7bd8665fc456001600160a01b031663791b98bc6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610aed573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b119190612688565b9050806001600160a01b031663fc6f786560405180608001604052806002600b01548152602001610b506002546001600160a01b036101009091041690565b6001600160a01b0390811682526001600160801b0360208084018290526040938401829052835160e087901b6001600160e01b031916815285516004820152908501519092166024830152918301518216604482015260609092015116606482015260840160408051808303815f875af1158015610bd0573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bf491906126a3565b505060025f0160019054906101000a90046001600160a01b03166001600160a01b031663476343ee6040518163ffffffff1660e01b81526004015f604051808303815f87803b158015610c45575f80fd5b505af1158015610c57573d5f803e3d5ffd5b5050505050565b6004546001600160a01b03163314610c74575f80fd5b600f61070f82826124f1565b6040518060600160405280603681526020016132926036913981565b600180546105dc90612476565b6004546001600160a01b03163314610cbf575f80fd5b600e610ccb86826124f1565b50600f610cd885826124f1565b506010610ce584826124f1565b506011610cf283826124f1565b506012610cff82826124f1565b505050505050565b5f610667338484610ea1565b6004546001600160a01b03163314610d29575f80fd5b601261070f82826124f1565b60606002600d018054610a0990612476565b60606109326002600501546012600561166b565b60606002600c018054610a0990612476565b6004546001600160a01b03163314610d83575f80fd5b601061070f82826124f1565b600954606090610dac90610da49060646126c5565b60038061166b565b60405160200161094291906126dc565b60606002600f018054610a0990612476565b6004546001600160a01b03163314610de4575f80fd5b600e61070f82826124f1565b60025460ff1615610dff575f80fd5b60055415610e0b575f80fd5b6002805460ff19166001179055565b600a54600b545f8215801590610e2f57508142105b9050909192565b6001600160a01b038381165f818152600c602090815260408083209487168084526001909501825280832086905551858152919392917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a35060019392505050565b5f808211610ead575f80fd5b5f80610eb7610e1a565b92505091508015610ece5781841115610ece575f80fd5b83610eed876001600160a01b03165f908152600c602052604090205490565b1015610ef7575f80fd5b6001600160a01b038087165f818152600c6020526040808220805489900390559288168082529083902080548801905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610f589088815260200190565b60405180910390a350600195945050505050565b5f3090505f7368b3465833fb72a70ecdf485e0e4c7bd8665fc456001600160a01b0316634aa4a4fc6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fc1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fe59190612688565b90506001600160a01b03808316908216105f61100a8261100460055490565b89611978565b5090507368b3465833fb72a70ecdf485e0e4c7bd8665fc456001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561105d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110819190612688565b60405163a167129560e01b81526001600160a01b03868116600483015285811660248301526127106044830152919091169063a1671295906064016020604051808303815f875af11580156110d8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110fc9190612688565b600380546001600160a01b0319166001600160a01b0392909216918217905560405163f637731d60e01b81526001600160a01b038381166004830152919091169063f637731d906024015f604051808303815f87803b15801561115d575f80fd5b505af115801561116f573d5f803e3d5ffd5b505050505f7368b3465833fb72a70ecdf485e0e4c7bd8665fc456001600160a01b031663791b98bc6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156111c4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111e89190612688565b90506111fd85826111f860055490565b610e36565b505f6112128461120c60055490565b8b611978565b9150505f6112238561120c60055490565b915050871561139d57826001600160a01b0316638831645660405180610160016040528088611252578a611254565b895b6001600160a01b03168152602001881561126e578a611270565b895b6001600160a01b031681526127106020820152604001886112915785611293565b845b60020b815260200188156112a757856112a9565b845b60020b8152602001886112d7576103e88c6112c360055490565b02816112d1576112d16125ad565b046112d9565b5f5b81526020018815611305576103e88c6112f160055490565b02816112ff576112ff6125ad565b04611307565b5f5b81526020015f81526020015f815260200161132a6004546001600160a01b031690565b6001600160a01b03168152602001428152506040518263ffffffff1660e01b81526004016113589190612700565b6080604051808303815f875af1158015611374573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061139891906127c4565b505050505b826001600160a01b03166388316456604051806101600160405280886113c3578a6113c5565b895b6001600160a01b0316815260200188156113df578a6113e1565b895b6001600160a01b031681526127106020820152604001886114025785611404565b845b60020b81526020018815611418578561141a565b845b60020b81526020018861144c576103e88c6103e80361143860055490565b0281611446576114466125ad565b0461144e565b5f5b8152602001881561147e576103e88c6103e80361146a60055490565b0281611478576114786125ad565b04611480565b5f5b81526020015f81526020015f81526020018a6001600160a01b03168152602001428152506040518263ffffffff1660e01b81526004016114c09190612700565b6080604051808303815f875af11580156114dc573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061150091906127c4565b505050600d556001600160a01b038716311561165f577368b3465833fb72a70ecdf485e0e4c7bd8665fc456001600160a01b03166304e45aaf886001600160a01b0316316040518060e001604052808a6001600160a01b031681526020018b6001600160a01b0316815260200161271062ffffff16815260200161158c6004546001600160a01b031690565b6001600160a01b0390811682528c8116316020808401919091525f604080850182905260609485019190915280516001600160e01b031960e089901b168152855184166004820152918501518316602483015284015162ffffff16604482015291830151811660648301526080830151608483015260a083015160a483015260c09092015190911660c482015260e40160206040518083038185885af1158015611638573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061165d919061280a565b505b50505050505050505050565b60605f82841161167b578361167d565b825b90505f81851161168d575f611697565b6116978286612821565b6116a290600a612914565b6116ac90876125d5565b9050805f036116d857604051806040016040528060018152602001600360fc1b815250925050506106e6565b6001815b6009811115611704576116f0600a826125d5565b9050816116fc8161291f565b9250506116dc565b83821161171b576117168460016125e8565b61171d565b815b90505f61172b8560016125e8565b8211611737575f611770565b8460016117448285612821565b61174e9190612821565b1161176e57600161175f8684612821565b6117699190612821565b611770565b845b90505f5b61177e8284612821565b81101561196b575f6117908585612821565b82106117d257600a60016117a48487612821565b6117ae9190612821565b6117b990600a612914565b6117c390886125d5565b6117cd9190612937565b6117d4565b5f5b6040805160018082528183019092529192505f919060208201818036833701905050905061180382603061294a565b60f81b815f8151811061181857611818612963565b60200101906001600160f81b03191690815f1a9053508881604051602001611841929190612977565b60408051601f198184030181529190529850600161185f8987612821565b6118699190612821565b8310156118ca57600361187c8987612821565b6118869190612937565b60036118938560016125e8565b61189d9190612937565b036118c557886040516020016118b391906129a5565b60405160208183030381529060405298505b611961565b6001836118d78688612821565b6118e19190612821565b6118eb9190612821565b6118f690600a612914565b61190185600a612914565b61190b90896125d5565b6119159190612937565b5f0361192257505061196b565b600161192e8987612821565b6119389190612821565b8303611961578860405160200161194f91906129c9565b60405160208183030381529060405298505b5050600101611774565b5050505050509392505050565b5f805f6119b686611989578461198b565b855b87156119975785611999565b865b6119a790600160c01b6125d5565b6119b191906126c5565b6119ee565b90506119c181611a31565b91506119ce60c8836129ed565b6119d89083612a0e565b91506119e382611d4e565b925050935093915050565b80600260018201045b81811015611a2b57809150600281828581611a1457611a146125ad565b040181611a2357611a236125ad565b0490506119f7565b50919050565b5f6401000276a36001600160a01b03831610801590611a6c575073fffd8963efd1fc6a506488495d951d5263988d266001600160a01b038316105b611aa15760405162461bcd60e51b81526020600482015260016024820152602960f91b60448201526064015b60405180910390fd5b640100000000600160c01b03602083901b166001600160801b03811160071b81811c67ffffffffffffffff811160061b90811c63ffffffff811160051b90811c61ffff811160041b90811c60ff8111600390811b91821c600f811160021b90811c918211600190811b92831c97908811961790941790921717909117171760808110611b3557607f810383901c9150611b3f565b80607f0383901b91505b908002607f81811c60ff83811c9190911c800280831c81831c1c800280841c81841c1c800280851c81851c1c800280861c81861c1c800280871c81871c1c800280881c81881c1c800280891c81891c1c8002808a1c818a1c1c8002808b1c818b1c1c8002808c1c818c1c1c8002808d1c818d1c1c8002808e1c9c81901c9c909c1c80029c8d901c9e9d607f198f0160401b60c09190911c678000000000000000161760c19b909b1c674000000000000000169a909a1760c29990991c672000000000000000169890981760c39790971c671000000000000000169690961760c49590951c670800000000000000169490941760c59390931c670400000000000000169290921760c69190911c670200000000000000161760c79190911c670100000000000000161760c89190911c6680000000000000161760c99190911c6640000000000000161760ca9190911c6620000000000000161760cb9190911c6610000000000000161760cc9190911c6608000000000000161760cd9190911c66040000000000001617693627a301d71055774c8581026f028f6481ab7f045a5af012a19d003aa9198101608090811d906fdb2df09e81959a81455e260799a0632f8301901d600281810b9083900b14611d3f57886001600160a01b0316611d2482611d4e565b6001600160a01b03161115611d395781611d41565b80611d41565b815b9998505050505050505050565b5f805f8360020b12611d63578260020b611d6a565b8260020b5f035b9050620d89e8811115611da35760405162461bcd60e51b81526020600482015260016024820152601560fa1b6044820152606401611a98565b5f816001165f03611db857600160801b611dca565b6ffffcb933bd6fad37aa2d162d1a5940015b70ffffffffffffffffffffffffffffffffff1690506002821615611dfe576ffff97272373d413259a46990580e213a0260801c5b6004821615611e1d576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b6008821615611e3c576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b6010821615611e5b576fffcb9843d60f6159c9db58835c9266440260801c5b6020821615611e7a576fff973b41fa98c081472e6896dfb254c00260801c5b6040821615611e99576fff2ea16466c96a3843ec78b326b528610260801c5b6080821615611eb8576ffe5dee046a99a2a811c461f1969c30530260801c5b610100821615611ed8576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b610200821615611ef8576ff987a7253ac413176f2b074cf7815e540260801c5b610400821615611f18576ff3392b0822b70005940c7a398e4b70f30260801c5b610800821615611f38576fe7159475a2c29b7443b29c7fa6e889d90260801c5b611000821615611f58576fd097f3bdfd2022b8845ad8f792aa58250260801c5b612000821615611f78576fa9f746462d870fdf8a65dc1f90e061e50260801c5b614000821615611f98576f70d869a156d2a1b890bb3df62baf32f70260801c5b618000821615611fb8576f31be135f97d08fd981231505542fcfa60260801c5b62010000821615611fd9576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b62020000821615611ff9576e5d6af8dedb81196699c329225ee6040260801c5b62040000821615612018576d2216e584f5fa1ea926041bedfe980260801c5b62080000821615612035576b048a170391f7dc42444e8fa20260801c5b5f8460020b131561205457805f1981612050576120506125ad565b0490505b64010000000081061561206857600161206a565b5f5b60ff16602082901c0192505050919050565b61085e80612a3483390190565b5f5b838110156120a357818101518382015260200161208b565b50505f910152565b602081525f82518060208401526120c9816040850160208701612089565b601f01601f19169190910160400192915050565b6001600160a01b03811681146120f1575f80fd5b50565b5f8060408385031215612105575f80fd5b8235612110816120dd565b946020939093013593505050565b5f805f60608486031215612130575f80fd5b833561213b816120dd565b9250602084013561214b816120dd565b929592945050506040919091013590565b634e487b7160e01b5f52604160045260245ffd5b5f82601f83011261217f575f80fd5b813567ffffffffffffffff8082111561219a5761219a61215c565b604051601f8301601f19908116603f011681019082821181831017156121c2576121c261215c565b816040528381528660208588010111156121da575f80fd5b836020870160208301375f602085830101528094505050505092915050565b5f60208284031215612209575f80fd5b813567ffffffffffffffff81111561221f575f80fd5b61222b84828501612170565b949350505050565b5f805f805f805f805f6101208a8c03121561224c575f80fd5b8935612257816120dd565b985060208a013567ffffffffffffffff80821115612273575f80fd5b61227f8d838e01612170565b995060408c0135915080821115612294575f80fd5b506122a18c828d01612170565b999c989b5098996060810135995060808101359860a0820135985060c0820135975060e0820135965061010090910135945092505050565b5f805f80606085870312156122ec575f80fd5b84356122f7816120dd565b935060208501359250604085013567ffffffffffffffff8082111561231a575f80fd5b818701915087601f83011261232d575f80fd5b81358181111561233b575f80fd5b88602082850101111561234c575f80fd5b95989497505060200194505050565b5f6020828403121561236b575f80fd5b81356106e6816120dd565b5f805f805f60a0868803121561238a575f80fd5b853567ffffffffffffffff808211156123a1575f80fd5b6123ad89838a01612170565b965060208801359150808211156123c2575f80fd5b6123ce89838a01612170565b955060408801359150808211156123e3575f80fd5b6123ef89838a01612170565b94506060880135915080821115612404575f80fd5b61241089838a01612170565b93506080880135915080821115612425575f80fd5b5061243288828901612170565b9150509295509295909350565b5f8060408385031215612450575f80fd5b823561245b816120dd565b9150602083013561246b816120dd565b809150509250929050565b600181811c9082168061248a57607f821691505b602082108103611a2b57634e487b7160e01b5f52602260045260245ffd5b601f8211156124ec57805f5260205f20601f840160051c810160208510156124cd5750805b601f840160051c820191505b81811015610c57575f81556001016124d9565b505050565b815167ffffffffffffffff81111561250b5761250b61215c565b61251f816125198454612476565b846124a8565b602080601f831160018114612552575f841561253b5750858301515b5f19600386901b1c1916600185901b178555610cff565b5f85815260208120601f198616915b8281101561258057888601518255948401946001909101908401612561565b508582101561259d57878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b5f52601260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f826125e3576125e36125ad565b500490565b8082018082111561066a5761066a6125c1565b5f825161260c818460208701612089565b630408aa8960e31b920191825250600401919050565b6001600160a01b0385168152602081018490526060604082018190528101829052818360808301375f818301608090810191909152601f909201601f191601019392505050565b5f60208284031215612679575f80fd5b815180151581146106e6575f80fd5b5f60208284031215612698575f80fd5b81516106e6816120dd565b5f80604083850312156126b4575f80fd5b505080516020909101519092909150565b808202811582820484141761066a5761066a6125c1565b5f82516126ed818460208701612089565b602560f81b920191825250600101919050565b81516001600160a01b031681526101608101602083015161272c60208401826001600160a01b03169052565b506040830151612743604084018262ffffff169052565b506060830151612758606084018260020b9052565b50608083015161276d608084018260020b9052565b5060a083015160a083015260c083015160c083015260e083015160e0830152610100808401518184015250610120808401516127b3828501826001600160a01b03169052565b505061014092830151919092015290565b5f805f80608085870312156127d7575f80fd5b8451935060208501516001600160801b03811681146127f4575f80fd5b6040860151606090960151949790965092505050565b5f6020828403121561281a575f80fd5b5051919050565b8181038181111561066a5761066a6125c1565b600181815b8085111561286e57815f1904821115612854576128546125c1565b8085161561286157918102915b93841c9390800290612839565b509250929050565b5f826128845750600161066a565b8161289057505f61066a565b81600181146128a657600281146128b0576128cc565b600191505061066a565b60ff8411156128c1576128c16125c1565b50506001821b61066a565b5060208310610133831016604e8410600b84101617156128ef575081810a61066a565b6128f98383612834565b805f190482111561290c5761290c6125c1565b029392505050565b5f6106678383612876565b5f60018201612930576129306125c1565b5060010190565b5f82612945576129456125ad565b500690565b60ff818116838216019081111561066a5761066a6125c1565b634e487b7160e01b5f52603260045260245ffd5b5f8351612988818460208801612089565b83519083019061299c818360208801612089565b01949350505050565b5f82516129b6818460208701612089565b600b60fa1b920191825250600101919050565b5f82516129da818460208701612089565b601760f91b920191825250600101919050565b5f8260020b806129ff576129ff6125ad565b808360020b0791505092915050565b600282810b9082900b03627fffff198112627fffff8213171561066a5761066a6125c156fe608060405234801561000f575f80fd5b506108418061001d5f395ff3fe60806040526004361061007c575f3560e01c8063894760691161004c5780638947606914610117578063c4d66de814610136578063e086e5ec14610155578063fc0c546a14610169575f80fd5b80633a98ef3914610087578063476343ee146100af5780634c02f62e146100c557806357a858fc146100d9575f80fd5b3661008357005b5f80fd5b348015610092575f80fd5b5061009c60015481565b6040519081526020015b60405180910390f35b3480156100ba575f80fd5b506100c36101a0565b005b3480156100d0575f80fd5b506100c36101bf565b3480156100e4575f80fd5b506100f86100f33660046106f6565b610236565b604080516001600160a01b0390931683526020830191909152016100a6565b348015610122575f80fd5b506100c3610131366004610721565b61026b565b348015610141575f80fd5b506100c3610150366004610721565b610524565b348015610160575f80fd5b506100c36105ad565b348015610174575f80fd5b50600254610188906001600160a01b031681565b6040516001600160a01b0390911681526020016100a6565b6101a86101bf565b6002546101bd906001600160a01b031661026b565b565b6101bd7368b3465833fb72a70ecdf485e0e4c7bd8665fc456001600160a01b0316634aa4a4fc6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610212573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101319190610743565b5f8181548110610244575f80fd5b5f918252602090912060029091020180546001909101546001600160a01b03909116915082565b5f7368b3465833fb72a70ecdf485e0e4c7bd8665fc456001600160a01b0316634aa4a4fc6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156102bc573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102e09190610743565b9050806001600160a01b0316826001600160a01b0316036103c0576040516370a0823160e01b81523060048201526001600160a01b03821690632e1a7d4d9082906370a0823190602401602060405180830381865afa158015610345573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610369919061075e565b6040518263ffffffff1660e01b815260040161038791815260200190565b5f604051808303815f87803b15801561039e575f80fd5b505af11580156103b0573d5f803e3d5ffd5b505050506103bc6105ad565b5050565b6040516370a0823160e01b81523060048201525f906001600160a01b038416906370a0823190602401602060405180830381865afa158015610404573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610428919061075e565b9050801561051f575f5b5f5481101561051d575f80828154811061044e5761044e610775565b5f9182526020918290206040805180820190915260029092020180546001600160a01b03908116808452600192830154948401859052915492945088169263a9059cbb929061049d908861079d565b6104a791906107ba565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303815f875af11580156104ef573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061051391906107d9565b5050600101610432565b505b505050565b60015415610530575f80fd5b600280546001600160a01b0319163317905561054d81600a610648565b61056c73e6c791fbd46db3f4eda5f7bb76474f4fa530733e6006610648565b61058b7312fe289b7588de4ee1f1392ce086be100f7165ed6003610648565b6105aa73c28c9da0f8a500dffc16ff09a3dd1cc4c530d3466001610648565b50565b4780156105aa575f5b5f548110156103bc575f8082815481106105d2576105d2610775565b5f9182526020918290206040805180820190915260029092020180546001600160a01b03168083526001918201549383018490529054919350916108fc919061061b908761079d565b61062591906107ba565b6040518115909202915f818181858888f15050600190940193506105b692505050565b604080518082019091526001600160a01b038381168252602082018381525f80546001808201835582805294517f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563600290920291820180546001600160a01b031916919095161790935590517f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e564909201919091558154839291906106ed9084906107f8565b90915550505050565b5f60208284031215610706575f80fd5b5035919050565b6001600160a01b03811681146105aa575f80fd5b5f60208284031215610731575f80fd5b813561073c8161070d565b9392505050565b5f60208284031215610753575f80fd5b815161073c8161070d565b5f6020828403121561076e575f80fd5b5051919050565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b80820281158282048414176107b4576107b4610789565b92915050565b5f826107d457634e487b7160e01b5f52601260045260245ffd5b500490565b5f602082840312156107e9575f80fd5b8151801515811461073c575f80fd5b808201808211156107b4576107b461078956fea2646970667358221220adfdaca0e91cd4d2c70d5661c772350f7a50a2dfd14eb9704f7df5331de8f38e64736f6c6343000816003343726561746564207769746820426f73736d616e27732042616b657279202862616b6572792e6d756c6c65742e6361706974616c2921a2646970667358221220d3b784ebb78494dacb3a79d1b15ab524e79f2c857812cf103095ac10b3ebc58d64736f6c63430008160033

Deployed Bytecode Sourcemap

3505:17303:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8770:78;;;;;;;;;;-1:-1:-1;8831:12:0;;-1:-1:-1;;;;;8831:12:0;8770:78;;;-1:-1:-1;;;;;287:32:1;;;269:51;;257:2;242:18;8770:78:0;;;;;;;;4280:18;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;9360:84::-;;;;;;;;;;-1:-1:-1;9424:15:0;;9360:84;;;1133:25:1;;;1121:2;1106:18;9360:84:0;987:177:1;7950:132:0;;;;;;;;;;-1:-1:-1;7950:132:0;;;;;:::i;:::-;;:::i;:::-;;;1790:14:1;;1783:22;1765:41;;1753:2;1738:18;7950:132:0;1625:187:1;8940:72:0;;;;;;;;;;-1:-1:-1;8998:9:0;;-1:-1:-1;;;;;8998:9:0;8940:72;;9017:86;;;;;;;;;;-1:-1:-1;9082:16:0;;9017:86;;8087:347;;;;;;;;;;-1:-1:-1;8087:347:0;;;;;:::i;:::-;;:::i;7298:102::-;;;;;;;;;;-1:-1:-1;7298:102:0;;;;;:::i;:::-;;:::i;:::-;;5369:1284;;;;;;:::i;:::-;;:::i;4326:35::-;;;;;;;;;;;;4359:2;4326:35;;;;;4730:4:1;4718:17;;;4700:36;;4688:2;4673:18;4326:35:0;4558:184:1;9449:156:0;;;;;;;;;;;;;:::i;8439:323::-;;;;;;;;;;-1:-1:-1;8439:323:0;;;;;:::i;:::-;;:::i;10498:100::-;;;;;;;;;;;;;:::i;10314:88::-;;;;;;;;;;;;;:::i;7510:306::-;;;;;;;;;;;;;:::i;7080:102::-;;;;;;;;;;-1:-1:-1;7080:102:0;;;;;:::i;:::-;;:::i;4367:88::-;;;;;;;;;;;;;:::i;9108:106::-;;;;;;;;;;-1:-1:-1;9108:106:0;;;;;:::i;:::-;-1:-1:-1;;;;;9184:17:0;9163:7;9184:17;;;:10;:17;;;;;:25;;9108:106;8854:81;;;;;;;;;;-1:-1:-1;8920:4:0;:9;;;;-1:-1:-1;;;;;8920:9:0;8854:81;;4302:20;;;;;;;;;;;;;:::i;6658:310::-;;;;;;;;;;-1:-1:-1;6658:310:0;;;;;:::i;:::-;;:::i;7821:124::-;;;;;;;;;;-1:-1:-1;7821:124:0;;;;;:::i;:::-;;:::i;7405:100::-;;;;;;;;;;-1:-1:-1;7405:100:0;;;;;:::i;:::-;;:::i;10223:86::-;;;;;;;;;;;;;:::i;9610:152::-;;;;;;;;;;;;;:::i;10132:86::-;;;;;;;;;;;;;:::i;7187:106::-;;;;;;;;;;-1:-1:-1;7187:106:0;;;;;:::i;:::-;;:::i;9219:136::-;;;;;;;;;;-1:-1:-1;9219:136:0;;;;;:::i;:::-;-1:-1:-1;;;;;9313:17:0;;;9292:7;9313:17;;;:10;:17;;;;;;;;:37;;;;;;:27;;;;:37;;;;;;9219:136;9767:146;;;;;;;;;;;;;:::i;10407:86::-;;;;;;;;;;;;;:::i;6973:102::-;;;;;;;;;;-1:-1:-1;6973:102:0;;;;;:::i;:::-;;:::i;5252:111::-;;;;;;;;;;;;;:::i;9918:209::-;;;;;;;;;;;;;:::i;:::-;;;;7537:25:1;;;7593:2;7578:18;;7571:34;;;;7648:14;7641:22;7621:18;;;7614:50;7525:2;7510:18;9918:209:0;7341:329:1;4280:18:0;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;7950:132::-;8020:4;8038:39;8047:10;8059:8;8069:7;8038:8;:39::i;:::-;8031:46;;7950:132;;;;;:::o;8087:347::-;-1:-1:-1;;;;;9313:17:0;;8172:4;9313:17;;;:10;:17;;;;;;;;8237:10;9313:37;;:27;;:37;;;;;;8276:7;8262:10;:21;;8254:30;;;;;;-1:-1:-1;;8294:10:0;:22;8290:92;;-1:-1:-1;;;;;8325:17:0;;;;;;:10;:17;;;;;;;;8353:10;8325:39;;:27;;:39;;;;;:50;;;;;;;8290:92;8394:30;8404:5;8411:3;8416:7;8394:9;:30::i;:::-;8387:37;;;8087:347;;;;;;:::o;7298:102::-;8831:12;;-1:-1:-1;;;;;8831:12:0;5209:10;:23;5201:32;;;;;;7372:12;:23:::1;7387:8:::0;7372:12;:23:::1;:::i;:::-;;7298:102:::0;:::o;5369:1284::-;5629:4;:11;;;5628:12;5620:21;;;;;;9082:16;;5654:18;5646:27;;;;;;5708:1;5692:5;5686:19;:23;:65;;;;;3686:2;5719:5;5713:19;:38;;5686:65;5678:74;;;;;;5789:1;5771:7;5765:21;:25;:69;;;;;3686:2;5800:7;5794:21;:40;;5765:69;5757:78;;;;;;3730:4;5848:12;:26;;:56;;;;;3791:4;5878:12;:26;;5848:56;5840:65;;;;;;5938:1;5918:17;:21;:60;;;;;5961:17;5943:15;:35;5918:60;5910:69;;;;;;6007:22;6027:2;3868:4;6007:22;:::i;:::-;5992:11;:37;;5984:46;;;;;;3930:8;6043:18;:36;;6035:45;;;;;;6097:10;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6085:4:0;:22;;-1:-1:-1;;;;;;6085:22:0;;-1:-1:-1;;;;;6085:22:0;;;;;;;;;;;;;6112:30;;-1:-1:-1;;;6112:30:0;;287:32:1;;;6112:30:0;;;269:51:1;6112:9:0;;;;;;:20;;242:18:1;;6112:30:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6147:12:0;:23;;-1:-1:-1;;;;;;6147:23:0;-1:-1:-1;;;;;6147:23:0;;;;;-1:-1:-1;;;;6175:12:0;6182:5;-1:-1:-1;6175:12:0;:::i;:::-;-1:-1:-1;6192:6:0;:16;6201:7;6192:6;:16;:::i;:::-;-1:-1:-1;6213:16:0;:31;;;6268:4;6249:25;;;;:10;:25;;;;;;;;:48;;;6307:51;1133:25:1;;;6307:51:0;;1106:18:1;6307:51:0;;;;;;;6363:21;:41;;;6409:19;:37;;;6451:15;:29;;;6485:58;6387:17;6431:15;6469:11;6485:9;:58::i;:::-;6548:18;:35;;;6612:36;6630:18;6612:15;:36;:::i;:::-;6588:21;:60;-1:-1:-1;;;;;;;;;5369:1284:0:o;9449:156::-;9500:13;9551:39;9561:4;:21;;;9584:2;9588:1;9551:9;:39::i;:::-;9534:65;;;;;;;;:::i;:::-;;;;;;;;;;;;;9520:80;;9449:156;:::o;8439:323::-;8534:4;8545:35;8555:10;8567:3;8572:7;8545:9;:35::i;:::-;-1:-1:-1;8626:16:0;;8655:9;;;;8651:91;;8680:55;;-1:-1:-1;;;8680:55:0;;-1:-1:-1;;;;;8680:27:0;;;;;:55;;8708:10;;8720:7;;8729:5;;;;8680:55;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8672:64;;;;;;-1:-1:-1;8753:4:0;;8439:323;-1:-1:-1;;;;;8439:323:0:o;10498:100::-;10547:13;10574:4;:19;;10567:26;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10498:100;:::o;10314:88::-;10357:13;10384:4;:13;;10377:20;;;;;:::i;7510:306::-;7554:19;3982:42;-1:-1:-1;;;;;7592:22:0;;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7554:63;;7622:3;-1:-1:-1;;;;;7622:11:0;;7634:147;;;;;;;;7679:4;:15;;;7634:147;;;;7711:6;8920:4;:9;-1:-1:-1;;;;;8920:9:0;;;;;;8854:81;7711:6;-1:-1:-1;;;;;7634:147:0;;;;;-1:-1:-1;;;;;7634:147:0;;;;;;;;;;;;;;7622:160;;;;;;-1:-1:-1;;;;;;7622:160:0;;;12536:13:1;;7622:160:0;;;12518:32:1;12598:17;;;12592:24;12588:50;;;12566:20;;;12559:80;12674:17;;;12668:24;12783:21;;12761:20;;;12754:51;12865:4;12853:17;;;12847:24;12843:33;12821:20;;;12814:63;12490:19;;7622:160:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;7787:4;:9;;;;;;;;;;-1:-1:-1;;;;;7787:9:0;-1:-1:-1;;;;;7787:22:0;;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7549:267;7510:306::o;7080:102::-;8831:12;;-1:-1:-1;;;;;8831:12:0;5209:10;:23;5201:32;;;;;;7154:12;:23:::1;7169:8:::0;7154:12;:23:::1;:::i;4367:88::-:0;;;;;;;;;;;;;;;;;;;:::o;4302:20::-;;;;;;;:::i;6658:310::-;8831:12;;-1:-1:-1;;;;;8831:12:0;5209:10;:23;5201:32;;;;;;6822:12;:23:::1;6837:8:::0;6822:12;:23:::1;:::i;:::-;-1:-1:-1::0;6850:12:0;:23:::1;6865:8:::0;6850:12;:23:::1;:::i;:::-;-1:-1:-1::0;6878:13:0;:25:::1;6894:9:::0;6878:13;:25:::1;:::i;:::-;-1:-1:-1::0;6908:12:0;:23:::1;6923:8:::0;6908:12;:23:::1;:::i;:::-;-1:-1:-1::0;6936:19:0;:27:::1;6958:5:::0;6936:19;:27:::1;:::i;:::-;;6658:310:::0;;;;;:::o;7821:124::-;7887:4;7905:35;7915:10;7927:3;7932:7;7905:9;:35::i;7405:100::-;8831:12;;-1:-1:-1;;;;;8831:12:0;5209:10;:23;5201:32;;;;;;7473:19;:27:::1;7495:5:::0;7473:19;:27:::1;:::i;10223:86::-:0;10265:13;10292:4;:12;;10285:19;;;;;:::i;9610:152::-;9659:13;9710:37;9720:4;:19;;;9741:2;9745:1;9710:9;:37::i;10132:86::-;10174:13;10201:4;:12;;10194:19;;;;;:::i;7187:106::-;8831:12;;-1:-1:-1;;;;;8831:12:0;5209:10;:23;5201:32;;;;;;7263:13;:25:::1;7279:9:::0;7263:13;:25:::1;:::i;9767:146::-:0;9873:15;;9812:13;;9863:38;;9873:21;;9891:3;9873:21;:::i;:::-;9896:1;9899;9863:9;:38::i;:::-;9846:61;;;;;;;;:::i;10407:86::-;10449:13;10476:4;:12;;10469:19;;;;;:::i;6973:102::-;8831:12;;-1:-1:-1;;;;;8831:12:0;5209:10;:23;5201:32;;;;;;7047:12;:23:::1;7062:8:::0;7047:12;:23:::1;:::i;5252:111::-:0;5291:4;:11;;;5290:12;5282:21;;;;;;9082:16;;5316:18;5308:27;;;;;;5340:4;:18;;-1:-1:-1;;5340:18:0;5354:4;5340:18;;;5252:111::o;9918:209::-;10020:18;;10051:21;;9964:13;10086:9;;;;;:36;;;10117:5;10099:15;:23;10086:36;10077:45;;9918:209;;;:::o;12798:212::-;-1:-1:-1;;;;;12896:18:0;;;12885:4;12896:18;;;:10;:18;;;;;;;;:38;;;;;;:28;;;;:38;;;;;:48;;;12954:35;1133:25:1;;;12885:4:0;;12896:38;:18;12954:35;;1106:18:1;12954:35:0;;;;;;;-1:-1:-1;13001:4:0;12798:212;;;;;:::o;13016:434::-;13098:4;13143:1;13133:7;:11;13125:20;;;;;;13152:14;13170:12;13186:15;:13;:15::i;:::-;13151:50;;;;;13211:7;13207:53;;;13246:6;13235:7;:17;;13227:26;;;;;;13293:7;13273:16;13283:5;-1:-1:-1;;;;;9184:17:0;9163:7;9184:17;;;:10;:17;;;;;:25;;9108:106;13273:16;:27;;13265:36;;;;;;-1:-1:-1;;;;;13307:17:0;;;;;;;:10;:17;;;;;;:36;;;;;;;13349:15;;;;;;;;;;:34;;;;;;13394:29;;;;;;13336:7;1133:25:1;;1121:2;1106:18;;987:177;13394:29:0;;;;;;;;-1:-1:-1;13436:4:0;;13016:434;-1:-1:-1;;;;;13016:434:0:o;10605:2187::-;10727:13;10751:4;10727:29;;10762:13;3982:42;-1:-1:-1;;;;;10778:12:0;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10762:30;-1:-1:-1;;;;;;10812:13:0;;;;;;;10798:11;10863:68;10812:13;10898;9082:16;;;9017:86;10898:13;10913:17;10863:26;:68::i;:::-;10831:100;;;3982:42;-1:-1:-1;;;;;10957:14:0;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10949:57;;-1:-1:-1;;;10949:57:0;;-1:-1:-1;;;;;14139:15:1;;;10949:57:0;;;14121:34:1;14191:15;;;14171:18;;;14164:43;11000:5:0;14223:18:1;;;14216:49;10949:36:0;;;;;;;14056:18:1;;10949:57:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10937:9;:69;;-1:-1:-1;;;;;;10937:69:0;-1:-1:-1;;;;;10937:69:0;;;;;;;;;11012:42;;-1:-1:-1;;;11012:42:0;;-1:-1:-1;;;;;287:32:1;;;11012:42:0;;;269:51:1;11012:23:0;;;;;;;242:18:1;;11012:42:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11060:19;3982:42;-1:-1:-1;;;;;11098:22:0;;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11060:63;;11129:44;11138:5;11153:3;11159:13;9082:16;;;9017:86;11159:13;11129:8;:44::i;:::-;;11183:14;11201:68;11228:6;11236:13;9082:16;;;9017:86;11236:13;11251:17;11201:26;:68::i;:::-;11179:90;;;11279:14;11297:66;11324:6;11332:13;9082:16;;;9017:86;11297:66;11275:88;-1:-1:-1;;11373:15:0;;11369:543;;11397:3;-1:-1:-1;;;;;11397:8:0;;11406:498;;;;;;;;11449:6;:22;;11466:5;11449:22;;;11458:5;11449:22;-1:-1:-1;;;;;11406:498:0;;;;;11488:6;11487:7;:23;;11505:5;11487:23;;;11497:5;11487:23;-1:-1:-1;;;;;11406:498:0;;;11523:5;11406:498;;;;;;11547:6;:28;;11567:8;11547:28;;;11556:8;11547:28;11406:498;;;;;;11595:6;11594:7;:29;;11615:8;11594:29;;;11604:8;11594:29;11406:498;;;;;;11647:6;:61;;3868:4;11677:11;11661:13;9082:16;;;9017:86;11661:13;:27;:47;;;;;:::i;:::-;;11647:61;;;11656:1;11647:61;11406:498;;;;11733:6;11732:7;:61;;3868:4;11762:11;11746:13;9082:16;;;9017:86;11746:13;:27;:47;;;;;:::i;:::-;;11732:61;;;11742:1;11732:61;11406:498;;;;11813:1;11406:498;;;;11834:1;11406:498;;;;11854:9;8831:12;;-1:-1:-1;;;;;8831:12:0;;8770:78;11854:9;-1:-1:-1;;;;;11406:498:0;;;;;11881:15;11406:498;;;11397:508;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;11369:543;11943:3;-1:-1:-1;;;;;11943:8:0;;11952:526;;;;;;;;11994:6;:22;;12011:5;11994:22;;;12003:5;11994:22;-1:-1:-1;;;;;11952:526:0;;;;;12032:6;12031:7;:23;;12049:5;12031:23;;;12041:5;12031:23;-1:-1:-1;;;;;11952:526:0;;;12066:5;11952:526;;;;;;12089:6;:28;;12109:8;12089:28;;;12098:8;12089:28;11952:526;;;;;;12136:6;12135:7;:29;;12156:8;12135:29;;;12145:8;12135:29;11952:526;;;;;;12187:6;:83;;3868:4;12238:11;3868:4;12218:31;12201:13;9082:16;;;9017:86;12201:13;:49;:69;;;;;:::i;:::-;;12187:83;;;12196:1;12187:83;11952:526;;;;12294:6;12293:7;:83;;3868:4;12344:11;3868:4;12324:31;12307:13;9082:16;;;9017:86;12307:13;:49;:69;;;;;:::i;:::-;;12293:83;;;12303:1;12293:83;11952:526;;;;12395:1;11952:526;;;;12415:1;11952:526;;;;12434:5;-1:-1:-1;;;;;11952:526:0;;;;;12456:15;11952:526;;;11943:536;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;11918:15:0;11917:562;-1:-1:-1;;;;;12489:13:0;;;:17;12485:298;;3982:42;-1:-1:-1;;;;;12515:23:0;;12545:5;-1:-1:-1;;;;;12545:13:0;;12560:215;;;;;;;;12607:5;-1:-1:-1;;;;;12560:215:0;;;;;12630:5;-1:-1:-1;;;;;12560:215:0;;;;;12648:5;12560:215;;;;;;12672:9;8831:12;;-1:-1:-1;;;;;8831:12:0;;8770:78;12672:9;-1:-1:-1;;;;;12560:215:0;;;;;12699:13;;;;12560:215;;;;;;;;-1:-1:-1;12560:215:0;;;;;;;;;;;;;;;12515:261;;-1:-1:-1;;;;;;12515:261:0;;;;;;;16585:13:1;;16581:22;;12515:261:0;;;16563:41:1;16652:17;;;16646:24;16642:33;;16620:20;;;16613:63;16724:17;;16718:24;16744:8;16714:39;16692:20;;;16685:69;16802:17;;;16796:24;16792:33;;16770:20;;;16763:63;16882:4;16870:17;;16864:24;16842:20;;;16835:54;16543:3;16933:17;;16927:24;16905:20;;;16898:54;17012:4;17000:17;;;16994:24;16990:33;;;16968:20;;;16961:63;16497:19;;12515:261:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12485:298;10711:2077;;;;;;;10605:2187;;;:::o;19702:1103::-;19798:17;19822:10;19844:12;19835:6;:21;:45;;19874:6;19835:45;;;19859:12;19835:45;19822:58;;19885:10;19921:2;19912:6;:11;:29;;19940:1;19912:29;;;19926:11;19935:2;19926:6;:11;:::i;:::-;19907:35;;:2;:35;:::i;:::-;19898:44;;:6;:44;:::i;:::-;19885:57;;19951:2;19957:1;19951:7;19947:35;;19966:10;;;;;;;;;;;;;-1:-1:-1;;;19966:10:0;;;;;;;;;19947:35;20004:1;20025:2;20032:54;20046:1;20039:4;:8;20032:54;;;20055:10;20063:2;20055:10;;:::i;:::-;;-1:-1:-1;20071:9:0;;;;:::i;:::-;;;;20032:54;;;20107:2;20097:7;:12;:31;;20122:6;:2;20127:1;20122:6;:::i;:::-;20097:31;;;20112:7;20097:31;20090:38;-1:-1:-1;20133:15:0;20159:6;:2;20164:1;20159:6;:::i;:::-;20152:4;:13;:59;;20210:1;20152:59;;;20184:2;20180:1;20168:9;20184:2;20168:4;:9;:::i;:::-;:13;;;;:::i;:::-;:18;:39;;20206:1;20194:9;20201:2;20194:4;:9;:::i;:::-;:13;;;;:::i;:::-;20168:39;;;20189:2;20168:39;20133:79;;20222:9;20217:584;20241:14;20248:7;20241:4;:14;:::i;:::-;20237:1;:18;20217:584;;;20268:12;20287:14;20294:7;20287:4;:14;:::i;:::-;20283:1;:18;:57;;20338:2;20331:1;20320:8;20327:1;20320:4;:8;:::i;:::-;:12;;;;:::i;:::-;20315:18;;:2;:18;:::i;:::-;20309:25;;:2;:25;:::i;:::-;20308:32;;;;:::i;:::-;20283:57;;;20304:1;20283:57;20367:12;;;20377:1;20367:12;;;;;;;;;20268:72;;-1:-1:-1;20346:18:0;;20367:12;;;;;;;;;;;-1:-1:-1;;20346:33:0;-1:-1:-1;20403:16:0;20409:4;20417:2;20403:16;:::i;:::-;20396:24;;20385:5;20391:1;20385:8;;;;;;;;:::i;:::-;;;;:35;-1:-1:-1;;;;;20385:35:0;;;;;;;;;20456:3;20468:5;20439:36;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;20439:36:0;;;;;;;;;;-1:-1:-1;20502:1:0;20490:9;20497:2;20490:4;:9;:::i;:::-;:13;;;;:::i;:::-;20486:1;:17;20482:314;;;20545:1;20532:9;20539:2;20532:4;:9;:::i;:::-;20531:15;;;;:::i;:::-;20526:1;20517:5;:1;20521;20517:5;:::i;:::-;20516:11;;;;:::i;:::-;:30;20512:92;;20586:3;20569:26;;;;;;;;:::i;:::-;;;;;;;;;;;;;20556:40;;20512:92;20482:314;;;20674:1;20670;20653:14;20660:7;20653:4;:14;:::i;:::-;:18;;;;:::i;:::-;:22;;;;:::i;:::-;20648:28;;:2;:28;:::i;:::-;20633:11;20637:7;20633:2;:11;:::i;:::-;20628:16;;:2;:16;:::i;:::-;20627:49;;;;:::i;:::-;20680:1;20627:54;20623:167;;20691:5;;;;20623:167;20731:1;20719:9;20726:2;20719:4;:9;:::i;:::-;:13;;;;:::i;:::-;20714:1;:18;20710:80;;20772:3;20755:26;;;;;;;;:::i;:::-;;;;;;;;;;;;;20742:40;;20710:80;-1:-1:-1;;20257:3:0;;20217:584;;;;19817:988;;;;;19702:1103;;;;;:::o;19344:353::-;19448:13;19463:10;19480:17;19508:72;19554:6;:24;;19573:5;19554:24;;;19563:7;19554:24;19525:6;19524:7;:25;;19544:5;19524:25;;;19534:7;19524:25;19514:36;;-1:-1:-1;;;19514:36:0;:::i;:::-;:65;;;;:::i;:::-;19508:5;:72::i;:::-;19480:101;;19593:30;19613:9;19593:19;:30::i;:::-;19586:37;-1:-1:-1;19643:10:0;19650:3;19586:37;19643:10;:::i;:::-;19635:19;;:4;:19;:::i;:::-;19628:26;;19667:25;19687:4;19667:19;:25::i;:::-;19659:33;;19475:222;19344:353;;;;;;:::o;19108:231::-;19211:6;19221:1;19216;19211:6;;19210:12;19245:85;19259:6;19252:4;:13;19245:85;;;19283:4;19274:13;;19322:1;19314:4;19307;19302:2;:9;;;;;:::i;:::-;;:16;19301:22;;;;;:::i;:::-;;19294:29;;19245:85;;;19179:156;19108:231;;;:::o;15677:3426::-;15751:10;4168;-1:-1:-1;;;;;15792:30:0;;;;;;:63;;-1:-1:-1;4225:49:0;-1:-1:-1;;;;;15826:29:0;;;15792:63;15784:77;;;;-1:-1:-1;;;15784:77:0;;21253:2:1;15784:77:0;;;21235:21:1;21292:1;21272:18;;;21265:29;-1:-1:-1;;;21310:18:1;;;21303:31;21351:18;;15784:77:0;;;;;;;;;-1:-1:-1;;;;;15908:2:0;15883:27;;;;-1:-1:-1;;;;;15996:41:0;;15993:1;15989:49;16072:9;;;16130:18;16124:25;;16121:1;16117:33;16184:9;;;16242:10;16236:17;;16233:1;16229:25;16288:9;;;16346:6;16340:13;;16337:1;16333:21;16388:9;;;16446:4;16440:11;;16437:1;16433:19;;;16486:9;;;16544:3;16538:10;;16535:1;16531:18;16583:9;;;16635:10;;;16632:1;16628:18;;;16680:9;;;;16725:10;;;16163;;16267;;;16367;;;16465;16562;;;16659;16748;16782:3;16775:10;;16771:75;;16807:3;16801;:9;16791:5;:20;;16787:24;;16771:75;;;16842:3;16836;:9;16826:5;:20;;16822:24;;16771:75;16932:9;;;16927:3;16923:19;;;16957:11;;;;17015:9;;;;17065;;17056:19;;;17090:11;;;17148:9;17198;;17189:19;;;17223:11;;;17281:9;17331;;17322:19;;;17356:11;;;17414:9;17464;;17455:19;;;17489:11;;;17547:9;17597;;17588:19;;;17622:11;;;17680:9;17730;;17721:19;;;17755:11;;;17813:9;17863;;17854:19;;;17888:11;;;17946:9;17996;;17987:19;;;18021:11;;;18079:9;18129;;18120:19;;;18154:11;;;18212:9;18262;;18253:19;;;18287:11;;;18345:9;18395;;18386:19;;;18420:11;;;18478:9;18528;;18519:19;;;18553:11;;;;18611:9;;;;18661;;18652:19;;;;;16932:9;-1:-1:-1;;16870:17:0;;16892:2;16869:25;16993:10;;;;;;;16983:21;17126:10;;;;;;;17116:21;;;;17259:10;;;;;;;17249:21;;;;17392:10;;;;;;;17382:21;;;;17525:10;;;;;;;17515:21;;;;17658:10;;;;;;;17648:21;;;;17791:10;;;;;;;17781:21;17924:10;;;;;;;17914:21;18057:10;;;;;;;18047:21;18190:10;;;;;;;18180:21;18323:10;;;;;;;18313:21;18456:10;;;;;;;18446:21;18589:10;;;;;;;18579:21;18722:10;;;;;;;18712:21;18777:24;18769:32;;-1:-1:-1;;18832:53:0;;16884:3;18831:62;;;;18938:39;18922:55;;18921:64;;19001:17;;;;;;;;;:92;;19062:12;-1:-1:-1;;;;;19031:43:0;:27;19051:6;19031:19;:27::i;:::-;-1:-1:-1;;;;;19031:43:0;;;:62;;19086:7;19001:92;;19031:62;19077:6;19001:92;;;19021:7;19001:92;18994:99;15677:3426;-1:-1:-1;;;;;;;;;15677:3426:0:o;13457:2215::-;13521:20;13564:15;13589:1;13582:4;:8;;;:57;;13633:4;13626:12;;13582:57;;;13609:4;13602:12;;13601:13;;13582:57;13564:75;-1:-1:-1;4112:9:0;13653:36;;;13645:50;;;;-1:-1:-1;;;13645:50:0;;21582:2:1;13645:50:0;;;21564:21:1;21621:1;21601:18;;;21594:29;-1:-1:-1;;;21639:18:1;;;21632:31;21680:18;;13645:50:0;21380:324:1;13645:50:0;13703:13;13719:7;13729:3;13719:13;13736:1;13719:18;:93;;-1:-1:-1;;;13719:93:0;;;13740:34;13719:93;13703:109;;;-1:-1:-1;13832:3:0;13822:13;;:18;13818:83;;13859:34;13851:42;13898:3;13850:51;13818:83;13921:3;13911:13;;:18;13907:83;;13948:34;13940:42;13987:3;13939:51;13907:83;14010:3;14000:13;;:18;13996:83;;14037:34;14029:42;14076:3;14028:51;13996:83;14099:4;14089:14;;:19;14085:84;;14127:34;14119:42;14166:3;14118:51;14085:84;14189:4;14179:14;;:19;14175:84;;14217:34;14209:42;14256:3;14208:51;14175:84;14279:4;14269:14;;:19;14265:84;;14307:34;14299:42;14346:3;14298:51;14265:84;14369:4;14359:14;;:19;14355:84;;14397:34;14389:42;14436:3;14388:51;14355:84;14459:5;14449:15;;:20;14445:85;;14488:34;14480:42;14527:3;14479:51;14445:85;14550:5;14540:15;;:20;14536:85;;14579:34;14571:42;14618:3;14570:51;14536:85;14641:5;14631:15;;:20;14627:85;;14670:34;14662:42;14709:3;14661:51;14627:85;14732:5;14722:15;;:20;14718:85;;14761:34;14753:42;14800:3;14752:51;14718:85;14823:6;14813:16;;:21;14809:86;;14853:34;14845:42;14892:3;14844:51;14809:86;14915:6;14905:16;;:21;14901:86;;14945:34;14937:42;14984:3;14936:51;14901:86;15007:6;14997:16;;:21;14993:86;;15037:34;15029:42;15076:3;15028:51;14993:86;15099:6;15089:16;;:21;15085:86;;15129:34;15121:42;15168:3;15120:51;15085:86;15191:7;15181:17;;:22;15177:86;;15222:33;15214:41;15260:3;15213:50;15177:86;15283:7;15273:17;;:22;15269:85;;15314:32;15306:40;15351:3;15305:49;15269:85;15374:7;15364:17;;:22;15360:83;;15405:30;15397:38;15440:3;15396:47;15360:83;15463:7;15453:17;;:22;15449:78;;15494:25;15486:33;15524:3;15485:42;15449:78;15546:1;15539:4;:8;;;15535:47;;;15577:5;-1:-1:-1;;15557:25:0;;;;;:::i;:::-;;15549:33;;15535:47;15639:7;15630:5;:17;:22;:30;;15659:1;15630:30;;;15655:1;15630:30;15613:48;;15623:2;15614:5;:11;;15613:48;15590:72;;13548:2120;;13457:2215;;;:::o;-1:-1:-1:-;;;;;;;;:::o;331:250:1:-;416:1;426:113;440:6;437:1;434:13;426:113;;;516:11;;;510:18;497:11;;;490:39;462:2;455:10;426:113;;;-1:-1:-1;;573:1:1;555:16;;548:27;331:250::o;586:396::-;735:2;724:9;717:21;698:4;767:6;761:13;810:6;805:2;794:9;790:18;783:34;826:79;898:6;893:2;882:9;878:18;873:2;865:6;861:15;826:79;:::i;:::-;966:2;945:15;-1:-1:-1;;941:29:1;926:45;;;;973:2;922:54;;586:396;-1:-1:-1;;586:396:1:o;1169:131::-;-1:-1:-1;;;;;1244:31:1;;1234:42;;1224:70;;1290:1;1287;1280:12;1224:70;1169:131;:::o;1305:315::-;1373:6;1381;1434:2;1422:9;1413:7;1409:23;1405:32;1402:52;;;1450:1;1447;1440:12;1402:52;1489:9;1476:23;1508:31;1533:5;1508:31;:::i;:::-;1558:5;1610:2;1595:18;;;;1582:32;;-1:-1:-1;;;1305:315:1:o;1817:456::-;1894:6;1902;1910;1963:2;1951:9;1942:7;1938:23;1934:32;1931:52;;;1979:1;1976;1969:12;1931:52;2018:9;2005:23;2037:31;2062:5;2037:31;:::i;:::-;2087:5;-1:-1:-1;2144:2:1;2129:18;;2116:32;2157:33;2116:32;2157:33;:::i;:::-;1817:456;;2209:7;;-1:-1:-1;;;2263:2:1;2248:18;;;;2235:32;;1817:456::o;2278:127::-;2339:10;2334:3;2330:20;2327:1;2320:31;2370:4;2367:1;2360:15;2394:4;2391:1;2384:15;2410:719;2453:5;2506:3;2499:4;2491:6;2487:17;2483:27;2473:55;;2524:1;2521;2514:12;2473:55;2560:6;2547:20;2586:18;2623:2;2619;2616:10;2613:36;;;2629:18;;:::i;:::-;2704:2;2698:9;2672:2;2758:13;;-1:-1:-1;;2754:22:1;;;2778:2;2750:31;2746:40;2734:53;;;2802:18;;;2822:22;;;2799:46;2796:72;;;2848:18;;:::i;:::-;2888:10;2884:2;2877:22;2923:2;2915:6;2908:18;2969:3;2962:4;2957:2;2949:6;2945:15;2941:26;2938:35;2935:55;;;2986:1;2983;2976:12;2935:55;3050:2;3043:4;3035:6;3031:17;3024:4;3016:6;3012:17;2999:54;3097:1;3090:4;3085:2;3077:6;3073:15;3069:26;3062:37;3117:6;3108:15;;;;;;2410:719;;;;:::o;3134:322::-;3203:6;3256:2;3244:9;3235:7;3231:23;3227:32;3224:52;;;3272:1;3269;3262:12;3224:52;3312:9;3299:23;3345:18;3337:6;3334:30;3331:50;;;3377:1;3374;3367:12;3331:50;3400;3442:7;3433:6;3422:9;3418:22;3400:50;:::i;:::-;3390:60;3134:322;-1:-1:-1;;;;3134:322:1:o;3461:1092::-;3612:6;3620;3628;3636;3644;3652;3660;3668;3676;3729:3;3717:9;3708:7;3704:23;3700:33;3697:53;;;3746:1;3743;3736:12;3697:53;3785:9;3772:23;3804:31;3829:5;3804:31;:::i;:::-;3854:5;-1:-1:-1;3910:2:1;3895:18;;3882:32;3933:18;3963:14;;;3960:34;;;3990:1;3987;3980:12;3960:34;4013:50;4055:7;4046:6;4035:9;4031:22;4013:50;:::i;:::-;4003:60;;4116:2;4105:9;4101:18;4088:32;4072:48;;4145:2;4135:8;4132:16;4129:36;;;4161:1;4158;4151:12;4129:36;;4184:52;4228:7;4217:8;4206:9;4202:24;4184:52;:::i;:::-;3461:1092;;;;-1:-1:-1;4174:62:1;;4283:2;4268:18;;4255:32;;-1:-1:-1;4334:3:1;4319:19;;4306:33;;4386:3;4371:19;;4358:33;;-1:-1:-1;4438:3:1;4423:19;;4410:33;;-1:-1:-1;4490:3:1;4475:19;;4462:33;;-1:-1:-1;4542:3:1;4527:19;;;4514:33;;-1:-1:-1;3461:1092:1;-1:-1:-1;;;3461:1092:1:o;4747:794::-;4835:6;4843;4851;4859;4912:2;4900:9;4891:7;4887:23;4883:32;4880:52;;;4928:1;4925;4918:12;4880:52;4967:9;4954:23;4986:31;5011:5;4986:31;:::i;:::-;5036:5;-1:-1:-1;5088:2:1;5073:18;;5060:32;;-1:-1:-1;5143:2:1;5128:18;;5115:32;5166:18;5196:14;;;5193:34;;;5223:1;5220;5213:12;5193:34;5261:6;5250:9;5246:22;5236:32;;5306:7;5299:4;5295:2;5291:13;5287:27;5277:55;;5328:1;5325;5318:12;5277:55;5368:2;5355:16;5394:2;5386:6;5383:14;5380:34;;;5410:1;5407;5400:12;5380:34;5455:7;5450:2;5441:6;5437:2;5433:15;5429:24;5426:37;5423:57;;;5476:1;5473;5466:12;5423:57;4747:794;;;;-1:-1:-1;;5507:2:1;5499:11;;-1:-1:-1;;;4747:794:1:o;5546:247::-;5605:6;5658:2;5646:9;5637:7;5633:23;5629:32;5626:52;;;5674:1;5671;5664:12;5626:52;5713:9;5700:23;5732:31;5757:5;5732:31;:::i;5798:1145::-;5943:6;5951;5959;5967;5975;6028:3;6016:9;6007:7;6003:23;5999:33;5996:53;;;6045:1;6042;6035:12;5996:53;6085:9;6072:23;6114:18;6155:2;6147:6;6144:14;6141:34;;;6171:1;6168;6161:12;6141:34;6194:50;6236:7;6227:6;6216:9;6212:22;6194:50;:::i;:::-;6184:60;;6297:2;6286:9;6282:18;6269:32;6253:48;;6326:2;6316:8;6313:16;6310:36;;;6342:1;6339;6332:12;6310:36;6365:52;6409:7;6398:8;6387:9;6383:24;6365:52;:::i;:::-;6355:62;;6470:2;6459:9;6455:18;6442:32;6426:48;;6499:2;6489:8;6486:16;6483:36;;;6515:1;6512;6505:12;6483:36;6538:52;6582:7;6571:8;6560:9;6556:24;6538:52;:::i;:::-;6528:62;;6643:2;6632:9;6628:18;6615:32;6599:48;;6672:2;6662:8;6659:16;6656:36;;;6688:1;6685;6678:12;6656:36;6711:52;6755:7;6744:8;6733:9;6729:24;6711:52;:::i;:::-;6701:62;;6816:3;6805:9;6801:19;6788:33;6772:49;;6846:2;6836:8;6833:16;6830:36;;;6862:1;6859;6852:12;6830:36;;6885:52;6929:7;6918:8;6907:9;6903:24;6885:52;:::i;:::-;6875:62;;;5798:1145;;;;;;;;:::o;6948:388::-;7016:6;7024;7077:2;7065:9;7056:7;7052:23;7048:32;7045:52;;;7093:1;7090;7083:12;7045:52;7132:9;7119:23;7151:31;7176:5;7151:31;:::i;:::-;7201:5;-1:-1:-1;7258:2:1;7243:18;;7230:32;7271:33;7230:32;7271:33;:::i;:::-;7323:7;7313:17;;;6948:388;;;;;:::o;7675:380::-;7754:1;7750:12;;;;7797;;;7818:61;;7872:4;7864:6;7860:17;7850:27;;7818:61;7925:2;7917:6;7914:14;7894:18;7891:38;7888:161;;7971:10;7966:3;7962:20;7959:1;7952:31;8006:4;8003:1;7996:15;8034:4;8031:1;8024:15;8186:518;8288:2;8283:3;8280:11;8277:421;;;8324:5;8321:1;8314:16;8368:4;8365:1;8355:18;8438:2;8426:10;8422:19;8419:1;8415:27;8409:4;8405:38;8474:4;8462:10;8459:20;8456:47;;;-1:-1:-1;8497:4:1;8456:47;8552:2;8547:3;8543:12;8540:1;8536:20;8530:4;8526:31;8516:41;;8607:81;8625:2;8618:5;8615:13;8607:81;;;8684:1;8670:16;;8651:1;8640:13;8607:81;;8277:421;8186:518;;;:::o;8880:1345::-;9006:3;9000:10;9033:18;9025:6;9022:30;9019:56;;;9055:18;;:::i;:::-;9084:97;9174:6;9134:38;9166:4;9160:11;9134:38;:::i;:::-;9128:4;9084:97;:::i;:::-;9236:4;;9293:2;9282:14;;9310:1;9305:663;;;;10012:1;10029:6;10026:89;;;-1:-1:-1;10081:19:1;;;10075:26;10026:89;-1:-1:-1;;8837:1:1;8833:11;;;8829:24;8825:29;8815:40;8861:1;8857:11;;;8812:57;10128:81;;9275:944;;9305:663;8133:1;8126:14;;;8170:4;8157:18;;-1:-1:-1;;9341:20:1;;;9459:236;9473:7;9470:1;9467:14;9459:236;;;9562:19;;;9556:26;9541:42;;9654:27;;;;9622:1;9610:14;;;;9489:19;;9459:236;;;9463:3;9723:6;9714:7;9711:19;9708:201;;;9784:19;;;9778:26;-1:-1:-1;;9867:1:1;9863:14;;;9879:3;9859:24;9855:37;9851:42;9836:58;9821:74;;9708:201;-1:-1:-1;;;;;9955:1:1;9939:14;;;9935:22;9922:36;;-1:-1:-1;8880:1345:1:o;10230:127::-;10291:10;10286:3;10282:20;10279:1;10272:31;10322:4;10319:1;10312:15;10346:4;10343:1;10336:15;10362:127;10423:10;10418:3;10414:20;10411:1;10404:31;10454:4;10451:1;10444:15;10478:4;10475:1;10468:15;10494:120;10534:1;10560;10550:35;;10565:18;;:::i;:::-;-1:-1:-1;10599:9:1;;10494:120::o;10619:125::-;10684:9;;;10705:10;;;10702:36;;;10718:18;;:::i;10749:455::-;10981:3;11019:6;11013:13;11035:66;11094:6;11089:3;11082:4;11074:6;11070:17;11035:66;:::i;:::-;-1:-1:-1;;;11123:16:1;;11148:21;;;-1:-1:-1;11196:1:1;11185:13;;10749:455;-1:-1:-1;10749:455:1:o;11209:559::-;-1:-1:-1;;;;;11422:32:1;;11404:51;;11486:2;11471:18;;11464:34;;;11534:2;11529;11514:18;;11507:30;;;11553:18;;11546:34;;;11573:6;11623;11617:3;11602:19;;11589:49;11688:1;11658:22;;;11682:3;11654:32;;;11647:43;;;;11751:2;11730:15;;;-1:-1:-1;;11726:29:1;11711:45;11707:55;;11209:559;-1:-1:-1;;;11209:559:1:o;11773:277::-;11840:6;11893:2;11881:9;11872:7;11868:23;11864:32;11861:52;;;11909:1;11906;11899:12;11861:52;11941:9;11935:16;11994:5;11987:13;11980:21;11973:5;11970:32;11960:60;;12016:1;12013;12006:12;12055:251;12125:6;12178:2;12166:9;12157:7;12153:23;12149:32;12146:52;;;12194:1;12191;12184:12;12146:52;12226:9;12220:16;12245:31;12270:5;12245:31;:::i;12888:245::-;12967:6;12975;13028:2;13016:9;13007:7;13003:23;12999:32;12996:52;;;13044:1;13041;13034:12;12996:52;-1:-1:-1;;13067:16:1;;13123:2;13108:18;;;13102:25;13067:16;;13102:25;;-1:-1:-1;12888:245:1:o;13138:168::-;13211:9;;;13242;;13259:15;;;13253:22;;13239:37;13229:71;;13280:18;;:::i;13311:452::-;13543:3;13581:6;13575:13;13597:66;13656:6;13651:3;13644:4;13636:6;13632:17;13597:66;:::i;:::-;-1:-1:-1;;;13685:16:1;;13710:18;;;-1:-1:-1;13755:1:1;13744:13;;13311:452;-1:-1:-1;13311:452:1:o;14580:1223::-;14798:13;;-1:-1:-1;;;;;80:31:1;68:44;;14766:3;14751:19;;14870:4;14862:6;14858:17;14852:24;14885:54;14933:4;14922:9;14918:20;14904:12;-1:-1:-1;;;;;80:31:1;68:44;;14:104;14885:54;;14988:4;14980:6;14976:17;14970:24;15003:60;15057:4;15046:9;15042:20;15026:14;13849:8;13838:20;13826:33;;13768:97;15003:60;;15112:4;15104:6;15100:17;15094:24;15127:54;15175:4;15164:9;15160:20;15144:14;14559:1;14548:20;14536:33;;14484:91;15127:54;;15230:4;15222:6;15218:17;15212:24;15245:54;15293:4;15282:9;15278:20;15262:14;14559:1;14548:20;14536:33;;14484:91;15245:54;;15355:4;15347:6;15343:17;15337:24;15330:4;15319:9;15315:20;15308:54;15418:4;15410:6;15406:17;15400:24;15393:4;15382:9;15378:20;15371:54;15481:4;15473:6;15469:17;15463:24;15456:4;15445:9;15441:20;15434:54;15507:6;15567:2;15559:6;15555:15;15549:22;15544:2;15533:9;15529:18;15522:50;;15591:6;15646:2;15638:6;15634:15;15628:22;15659:54;15709:2;15698:9;15694:18;15678:14;-1:-1:-1;;;;;80:31:1;68:44;;14:104;15659:54;-1:-1:-1;;15732:6:1;15780:15;;;15774:22;15754:18;;;;15747:50;14580:1223;:::o;15808:489::-;15905:6;15913;15921;15929;15982:3;15970:9;15961:7;15957:23;15953:33;15950:53;;;15999:1;15996;15989:12;15950:53;16028:9;16022:16;16012:26;;16081:2;16070:9;16066:18;16060:25;-1:-1:-1;;;;;16118:5:1;16114:46;16107:5;16104:57;16094:85;;16175:1;16172;16165:12;16094:85;16243:2;16228:18;;16222:25;16287:2;16272:18;;;16266:25;15808:489;;16198:5;;-1:-1:-1;15808:489:1;-1:-1:-1;;;15808:489:1:o;17035:184::-;17105:6;17158:2;17146:9;17137:7;17133:23;17129:32;17126:52;;;17174:1;17171;17164:12;17126:52;-1:-1:-1;17197:16:1;;17035:184;-1:-1:-1;17035:184:1:o;17224:128::-;17291:9;;;17312:11;;;17309:37;;;17326:18;;:::i;17357:416::-;17446:1;17483:5;17446:1;17497:270;17518:7;17508:8;17505:21;17497:270;;;17577:4;17573:1;17569:6;17565:17;17559:4;17556:27;17553:53;;;17586:18;;:::i;:::-;17636:7;17626:8;17622:22;17619:55;;;17656:16;;;;17619:55;17735:22;;;;17695:15;;;;17497:270;;;17501:3;17357:416;;;;;:::o;17778:806::-;17827:5;17857:8;17847:80;;-1:-1:-1;17898:1:1;17912:5;;17847:80;17946:4;17936:76;;-1:-1:-1;17983:1:1;17997:5;;17936:76;18028:4;18046:1;18041:59;;;;18114:1;18109:130;;;;18021:218;;18041:59;18071:1;18062:10;;18085:5;;;18109:130;18146:3;18136:8;18133:17;18130:43;;;18153:18;;:::i;:::-;-1:-1:-1;;18209:1:1;18195:16;;18224:5;;18021:218;;18323:2;18313:8;18310:16;18304:3;18298:4;18295:13;18291:36;18285:2;18275:8;18272:16;18267:2;18261:4;18258:12;18254:35;18251:77;18248:159;;;-1:-1:-1;18360:19:1;;;18392:5;;18248:159;18439:34;18464:8;18458:4;18439:34;:::i;:::-;18509:6;18505:1;18501:6;18497:19;18488:7;18485:32;18482:58;;;18520:18;;:::i;:::-;18558:20;;17778:806;-1:-1:-1;;;17778:806:1:o;18589:131::-;18649:5;18678:36;18705:8;18699:4;18678:36;:::i;18725:135::-;18764:3;18785:17;;;18782:43;;18805:18;;:::i;:::-;-1:-1:-1;18852:1:1;18841:13;;18725:135::o;18865:112::-;18897:1;18923;18913:35;;18928:18;;:::i;:::-;-1:-1:-1;18962:9:1;;18865:112::o;18982:148::-;19070:4;19049:12;;;19063;;;19045:31;;19088:13;;19085:39;;;19104:18;;:::i;19135:127::-;19196:10;19191:3;19187:20;19184:1;19177:31;19227:4;19224:1;19217:15;19251:4;19248:1;19241:15;19267:496;19446:3;19484:6;19478:13;19500:66;19559:6;19554:3;19547:4;19539:6;19535:17;19500:66;:::i;:::-;19629:13;;19588:16;;;;19651:70;19629:13;19588:16;19698:4;19686:17;;19651:70;:::i;:::-;19737:20;;19267:496;-1:-1:-1;;;;19267:496:1:o;19768:452::-;20000:3;20038:6;20032:13;20054:66;20113:6;20108:3;20101:4;20093:6;20089:17;20054:66;:::i;:::-;-1:-1:-1;;;20142:16:1;;20167:18;;;-1:-1:-1;20212:1:1;20201:13;;19768:452;-1:-1:-1;19768:452:1:o;20225:::-;20457:3;20495:6;20489:13;20511:66;20570:6;20565:3;20558:4;20550:6;20546:17;20511:66;:::i;:::-;-1:-1:-1;;;20599:16:1;;20624:18;;;-1:-1:-1;20669:1:1;20658:13;;20225:452;-1:-1:-1;20225:452:1:o;20682:166::-;20712:1;20753;20750;20739:16;20774:3;20764:37;;20781:18;;:::i;:::-;20838:3;20834:1;20831;20820:16;20815:27;20810:32;;;20682:166;;;;:::o;20853:193::-;20951:1;20940:16;;;20922;;;;20918:39;-1:-1:-1;;20972:23:1;;21007:8;20997:19;;20969:48;20966:74;;;21020:18;;:::i

Swarm Source

ipfs://d3b784ebb78494dacb3a79d1b15ab524e79f2c857812cf103095ac10b3ebc58d
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.