Feature Tip: Add private address tag to any address under My Name Tag !
ERC-20
Overview
Max Total Supply
150,769.900290448167299218 2ND
Holders
96
Total Transfers
-
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Source Code Verified (Exact Match)
Contract Name:
Second_Chance
Compiler Version
v0.6.6+commit.6c089d02
Contract Source Code (Solidity Multiple files format)
// SPDX-License-Identifier: DEFIAT 2020 // thanks a million Gwei to MIT and Zeppelin. You guys rock!!! // MAINNET VERSION. /* *Website: www.defiat.net *Telegram: https://t.me/defiat_crypto *Twitter: https://twitter.com/DeFiatCrypto */ pragma solidity ^0.6.6; import "./ERC20.sol"; contract Second_Chance is ERC20 { using SafeMath for uint; using Address for address; //== Variables == mapping(address => bool) allowed; uint256 private _totalSupply; string private _name; string private _symbol; uint8 private _decimals; uint256 private contractInitialized; //External addresses IUniswapV2Router02 public uniswapRouterV2; IUniswapV2Factory public uniswapFactory; address public uniswapPair; //to determine. address public farm; address public DFT = address(0xB6eE603933E024d8d53dDE3faa0bf98fE2a3d6f1); //MainNet //Swapping metrics mapping(address => bool) public rugList; uint256 private ETHfee; uint256 private DFTRequirement; //TX metrics mapping (address => bool) public noFeeList; uint256 private feeOnTxMIN; // base 1000 uint256 private feeOnTxMAX; // base 1000 uint256 private burnOnSwap; // base 1000 uint8 private txCount; uint256 private cumulVol; uint256 private txBatchStartTime; uint256 private avgVolume; uint256 private txCycle = 20; uint256 public currentFee; event TokenUpdate(address sender, string eventType, uint256 newVariable); event TokenUpdate(address sender, string eventType, address newAddress, uint256 newVariable, bool newBool); //== Modifiers == modifier onlyAllowed { require(allowed[msg.sender], "only Allowed"); _; } modifier whitelisted(address _token) { require(rugList[_token] == true, "This token is not swappable"); _; } // ============================================================================================================================================================ constructor() public ERC20("2nd_Chance", "2ND") { //token requires that governance and points are up and running allowed[msg.sender] = true; } function initialSetup(address _farm) public payable onlyAllowed { require(msg.value >= 50*1e18, "50 ETH to LGE"); contractInitialized = block.timestamp; //holding DFT increases your swap reward maxDFTBoost = 200; //x3 max boost for 200 tokens held +200% setTXFeeBoundaries(8, 36); //0.8% - 3.6% setBurnOnSwap(1); // 0.1% uniBurn when swapping ETHfee = 5*1e16; //0.05 ETH at start currentFee = feeOnTxMIN; setFarm(_farm); CreateUniswapPair(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D, 0x5C69bEe701ef814a2B6a3EDD4B1652CB9cc5aA6f); //0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D = UniswapV2Router02 //0x5C69bEe701ef814a2B6a3EDD4B1652CB9cc5aA6f = UniswapV2Factory LGE(); TokenUpdate(msg.sender, "Initialization", block.number); } //Pool UniSwap pair creation method (called by initialSetup() ) function CreateUniswapPair(address router, address factory) internal returns (address) { require(contractInitialized > 0, "Requires intialization 1st"); uniswapRouterV2 = IUniswapV2Router02(router != address(0) ? router : 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); uniswapFactory = IUniswapV2Factory(factory != address(0) ? factory : 0x5C69bEe701ef814a2B6a3EDD4B1652CB9cc5aA6f); require(uniswapPair == address(0), "Token: pool already created"); uniswapPair = uniswapFactory.createPair(address(uniswapRouterV2.WETH()),address(this)); TokenUpdate(msg.sender, "Uniswap Pair Created", uniswapPair, block.timestamp, true); return uniswapPair; } function LGE() internal { ERC20._mint(msg.sender, 1e18 * 10000); //pre-mine 10,000 tokens for LGE rewards. ERC20._mint(address(this), 1e18 * 10000); //pre-mine 10,000 tokens to send to UniSwap -> 1st UNI liquidity uint256 _amount = address(this).balance; IUniswapV2Pair pair = IUniswapV2Pair(uniswapPair); //Wrap ETH address WETH = uniswapRouterV2.WETH(); IWETH(WETH).deposit{value : _amount}(); //send to UniSwap require(address(this).balance == 0 , "Transfer Failed"); IWETH(WETH).transfer(address(pair),_amount); //Second balances transfer ERC20._transfer(address(this), address(pair), balanceOf(address(this))); pair.mint(address(this)); //mint LP tokens. locked here... no rug pull possible IUniswapV2Pair(uniswapPair).sync(); } // ============================================================================================================================================================ uint8 public swapNumber; uint256 public swapCycleStart; uint256 public swapCycleDuration; function swapfor2NDChance(address _ERC20swapped, uint256 _amount) public payable { require(rugList[_ERC20swapped], "Token not swappable"); require(msg.value >= ETHfee, "pls add ETH in the payload"); require(_amount > 0, "Cannot swap zero tokens"); //limiting swaps to 2% of the total supply of a tokens if(_amount > IERC20(_ERC20swapped).totalSupply().div(50) ) {_amount = IERC20(_ERC20swapped).totalSupply().div(50);} // "can swap maximum 2% of your total supply" //bump price sendETHtoUNI(); //wraps ETH and sends to UNI takeShitCoins(_ERC20swapped, _amount); // basic transferFrom //mint 2ND tokens uint256 _toMint = toMint(msg.sender, _ERC20swapped, _amount); mintChances(msg.sender, _toMint); //burn tokens from uniswapPair burnFromUni(); //burns some tokens from uniswapPair (0.1%) IFarm(farm).massUpdatePools(); //updates user's rewards on farm. TokenUpdate(msg.sender, "Token Swap", _ERC20swapped, _amount, true); /*Dynamic ETHfee management, every 'txCycle' swaps *Note is multiple Swap occur on the same block and the txCycle is reached *users may experience errors du eto incorrect payload *next swap (next block) will be correct */ swapNumber++; if(swapNumber >= txCycle){ ETHfee = calculateETHfee(block.timestamp.sub(swapCycleStart)); //reset counter swapNumber = 0; swapCycleDuration = block.timestamp.sub(swapCycleStart); swapCycleStart = block.timestamp; } } // ============================================================================================================================================================ /* @dev mints function gives you a %age of the already minted 2nd * this %age is proportional to your %holdings of Shitcoin tokens */ function toMint(address _swapper, address _ERC20swapped, uint256 _amount) public view returns(uint256){ require(ERC20(_ERC20swapped).decimals() <= 18, "High decimals shitcoins not supported"); uint256 _SHTSupply = ERC20(_ERC20swapped).totalSupply(); uint256 _SHTswapped = _amount.mul(1e24).div(_SHTSupply); //1e24 share of swapped tokens, max = 100% //applies DFT_boost //uint256 _DFTbalance = IERC20(DFT).balanceOf(_swapper); //uint256 _DFTBoost = _DFTbalance.mul(maxDFTBoost).div(maxDFTBoost.mul(1e18)); //base 100 boost based on ration held vs. maxDFTtokens (= maxboost * 1e18) uint256 _DFTBoost = IERC20(DFT).balanceOf(_swapper).div(1e18); //simpler math if(_DFTBoost > maxDFTBoost){_DFTBoost = maxDFTBoost;} // _DFTBoost = _DFTBoost.add(100); //minimum - 100 = 1x rewards for non holders; return _SHTswapped.mul(1e18).mul(1000).div(1e24).mul(_DFTBoost).div(100); //holding 1% of the shitcoins gives you '10' 2ND tokens times the DFTboost } // ============================================================================================================================================================ function sendETHtoUNI() internal { uint256 _amount = address(this).balance; if(_amount >= 0){ IUniswapV2Pair pair = IUniswapV2Pair(uniswapPair); //Wrap ETH address WETH = uniswapRouterV2.WETH(); IWETH(WETH).deposit{value : _amount}(); //send to UniSwap require(address(this).balance == 0 , "Transfer Failed"); IWETH(WETH).transfer(address(pair),_amount); IUniswapV2Pair(uniswapPair).sync(); } } //adds liquidity, bumps price. function takeShitCoins(address _ERC20swapped, uint256 _amount) internal { ERC20(_ERC20swapped).transferFrom(msg.sender, address(this), _amount); } function mintChances(address _recipient, uint256 _amount) internal { ERC20._mint(_recipient, _amount); } function burnFromUni() internal { ERC20._burn(uniswapPair, balanceOf(uniswapPair).mul(burnOnSwap).div(1000)); //0.1% of 2ND on UNIv2 is burned IUniswapV2Pair(uniswapPair).sync(); } //========================================================================================================================================= //overriden _transfer to take Fees and burns per TX function _transfer(address sender, address recipient, uint256 amount) internal override { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); //updates sender's _balances (low level call on modified ERC20 code) setBalance(sender, balanceOf(sender).sub(amount, "ERC20: transfer amount exceeds balance")); //update feeOnTx dynamic variables if(amount > 0){txCount++;} cumulVol = cumulVol.add(amount); //calculate net amounts and fee (uint256 toAmount, uint256 toFee) = calculateAmountAndFee(sender, amount, currentFee); //Send Reward to Farm if(toFee > 0){ setBalance(farm, balanceOf(farm).add(toFee)); IFarm(farm).updateRewards(); //updates rewards emit Transfer(sender, farm, toFee); } //transfer of remainder to recipient (low level call on modified ERC20 code) setBalance(recipient, balanceOf(recipient).add(toAmount)); emit Transfer(sender, recipient, toAmount); //every 'txCycle' blocks = updates dynamic Fee variables if(txCount >= txCycle){ uint256 newAvgVolume = cumulVol.div( block.timestamp.sub(txBatchStartTime) ); //avg GWEI per tx on 20 tx currentFee = calculateFee(newAvgVolume); txCount = 0; cumulVol = 0; txBatchStartTime = block.timestamp; avgVolume = newAvgVolume; } //reset } //========================================================================================================================================= //dynamic fees calculations /* Every 10 swaps, we measure the time elapsed * if frequency increases, it incurs an increase of the ETHprice by 0.01 ETH * if frequency drops, price drops by 0.01 ETH * ETHfee is capped between 0.05 and 0.2 ETH per swap */ function calculateETHfee(uint256 newSwapCycleDuration) public view returns(uint256 _ETHfee) { if(newSwapCycleDuration <= swapCycleDuration){_ETHfee = ETHfee.add(0.01 ether);} if(newSwapCycleDuration > swapCycleDuration){_ETHfee = ETHfee.sub(0.01 ether);} //finalize if(_ETHfee > 0.2 ether){_ETHfee = 0.2 ether;} //hard coded. Cannot drop below this price if(_ETHfee < 0.02 ether){_ETHfee = 0.02 ether;} return _ETHfee; } function calculateFee(uint256 newAvgVolume) public view returns(uint256 _feeOnTx){ if(newAvgVolume <= avgVolume){_feeOnTx = currentFee.add(4);} // adds 0.4% if avgVolume drops if(newAvgVolume > avgVolume){_feeOnTx = currentFee.sub(2);} // subs 0.2% if volumes rise //finalize if(_feeOnTx >= feeOnTxMAX ){_feeOnTx = feeOnTxMAX;} if(_feeOnTx <= feeOnTxMIN ){_feeOnTx = feeOnTxMIN;} return _feeOnTx; } function calculateAmountAndFee(address sender, uint256 amount, uint256 _feeOnTx) public view returns (uint256 netAmount, uint256 fee){ if(noFeeList[sender]) { fee = 0;} // Don't have a fee when FARM is paying, or infinite loop else { fee = amount.mul(_feeOnTx).div(1000);} netAmount = amount.sub(fee); } //========================================================================================================================================= //onlyAllowed (ultra basic governance) function setAllowed(address _address, bool _bool) public onlyAllowed { allowed[_address] = _bool; TokenUpdate(msg.sender, "New user allowed/removed", _address, block.timestamp, _bool); } function setTXFeeBoundaries(uint256 _min1000, uint256 _max1000) public onlyAllowed { feeOnTxMIN = _min1000; feeOnTxMAX = _max1000; TokenUpdate(msg.sender, "New max Fee, base1000", _max1000); TokenUpdate(msg.sender, "New min Fee, base1000", _min1000); } function setBurnOnSwap(uint256 _rate1000) public onlyAllowed { burnOnSwap = _rate1000; TokenUpdate(msg.sender, "New burnOnSwap, base1000", _rate1000); } uint256 public maxDFTBoost; function setDFTBoost(uint256 _maxDFTBoost100) public onlyAllowed { maxDFTBoost = _maxDFTBoost100; // base100: 300 = 3x boost (for 300 tokens held) // 1200 = x12 for 1200 tokens held TokenUpdate(msg.sender, "New DFTBoost, base100", _maxDFTBoost100); } function setETHfee(uint256 _newFee) public onlyAllowed { require(_newFee >= 2*1e16 && _newFee <= 2*1e17); ETHfee = _newFee; } function whiteListToken(address _token, bool _bool) public onlyAllowed { rugList[_token] = _bool; TokenUpdate(msg.sender, "Rugged Token allowed/removed", _token, block.timestamp, _bool); } function setNoFeeList(address _address, bool _bool) public onlyAllowed { noFeeList[_address] = _bool; TokenUpdate(msg.sender, "NoFee Address change", _address, block.timestamp, _bool); } function setUNIV2(address _UNIV2) public onlyAllowed { uniswapPair = _UNIV2; TokenUpdate(msg.sender, "New UniV2 address", _UNIV2, block.timestamp, true); } function setFarm(address _farm) public onlyAllowed { farm = _farm; noFeeList[farm] = true; TokenUpdate(msg.sender, "New Farm address", _farm, block.timestamp, true); } function setDFT(address _DFT) public onlyAllowed { DFT = _DFT; } //GETTERS function viewUNIv2() public view returns(address) { return uniswapPair; } function viewFarm() public view returns(address) { return farm; } function viewMinMaxFees() public view returns(uint256, uint256) { return (feeOnTxMIN, feeOnTxMAX); } function viewcurrentFee() public view returns(uint256) { return currentFee; } function viewBurnOnSwap() public view returns(uint256) { return burnOnSwap; } function viewETHfee() public view returns(uint256) { return ETHfee; } function isAllowed(address _address) public view returns(bool) { return allowed[_address]; } //testing function burnTokens(address _ERC20address) external onlyAllowed { //burns all the rugged tokens that are on this contract require(_ERC20address != uniswapPair, "cannot burn Liquidity Tokens"); require(_ERC20address != address(this), "cannot burn second chance Tokens"); uint256 _amount = IERC20(_ERC20address).balanceOf(address(this)); ERC20(_ERC20address).burn(_amount); // may throw if function not setup for some tokens. } function getTokens(address _ERC20address) external onlyAllowed { require(_ERC20address != uniswapPair, "cannot remove Liquidity Tokens - UNRUGGABLE"); uint256 _amount = IERC20(_ERC20address).balanceOf(address(this)); IERC20(_ERC20address).transfer(msg.sender, _amount); //use of the _ERC20 traditional transfer } }
// SPDX-License-Identifier: MIT pragma solidity ^0.6.6; import "./Interfaces.sol"; import "./Libraries.sol"; contract ERC20 is Context, IERC20 { using SafeMath for uint256; using Address for address; mapping (address => uint256) private _balances; mapping (address => mapping (address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; uint8 private _decimals; /** * @dev Sets the values for {name} and {symbol}, initializes {decimals} with * a default value of 18. * * To select a different value for {decimals}, use {_setupDecimals}. * * All three of these values are immutable: they can only be set once during * construction. */ constructor(string memory name, string memory symbol) public { _name = name; _symbol = symbol; _decimals = 18; } //Public Functions /** * @dev Returns the name of the token. */ function name() public view returns (string memory) { return _name; } /** * @dev Returns the symbol of the token, usually a shorter version of the * name. */ function symbol() public view returns (string memory) { return _symbol; } /** * @dev Returns the number of decimals used to get its user representation. * For example, if `decimals` equals `2`, a balance of `505` tokens should * be displayed to a user as `5,05` (`505 / 10 ** 2`). * * Tokens usually opt for a value of 18, imitating the relationship between * Ether and Wei. This is the value {ERC20} uses, unless {_setupDecimals} is * called. * * NOTE: This information is only used for _display_ purposes: it in * no way affects any of the arithmetic of the contract, including * {IERC20-balanceOf} and {IERC20-transfer}. */ function decimals() public view returns (uint8) { return _decimals; } /** * @dev See {IERC20-totalSupply}. */ function totalSupply() public view override returns (uint256) { return _totalSupply; } /** * @dev See {IERC20-balanceOf}. */ function balanceOf(address account) public view override returns (uint256) { return _balances[account]; } function setBalance(address account, uint256 amount) internal returns(uint256) { _balances[account] = amount; return amount; } /** * @dev See {IERC20-transfer}. * * Requirements: * * - `recipient` cannot be the zero address. * - the caller must have a balance of at least `amount`. */ function transfer(address recipient, uint256 amount) public virtual override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } /** * @dev See {IERC20-allowance}. */ function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } /** * @dev See {IERC20-approve}. * * Requirements: * * - `spender` cannot be the zero address. */ function approve(address spender, uint256 amount) public virtual override returns (bool) { _approve(_msgSender(), spender, amount); return true; } /** * @dev See {IERC20-transferFrom}. * * Emits an {Approval} event indicating the updated allowance. This is not * required by the EIP. See the note at the beginning of {ERC20}; * * Requirements: * - `sender` and `recipient` cannot be the zero address. * - `sender` must have a balance of at least `amount`. * - the caller must have allowance for ``sender``'s tokens of at least * `amount`. */ function transferFrom(address sender, address recipient, uint256 amount) public virtual override returns (bool) { _transfer(sender, recipient, amount); _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance")); return true; } /** * @dev Atomically increases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. */ function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue)); return true; } /** * @dev Atomically decreases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. * - `spender` must have allowance for the caller of at least * `subtractedValue`. */ function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero")); return true; } //Internal Functions /** * @dev Moves tokens `amount` from `sender` to `recipient`. * * This is internal function is equivalent to {transfer}, and can be used to * e.g. implement automatic token fees, slashing mechanisms, etc. * * Emits a {Transfer} event. * * Requirements: * * - `sender` cannot be the zero address. * - `recipient` cannot be the zero address. * - `sender` must have a balance of at least `amount`. */ function _transfer(address sender, address recipient, uint256 amount) internal virtual { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(sender, recipient, amount); _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance"); _balances[recipient] = _balances[recipient].add(amount); emit Transfer(sender, recipient, amount); } //overriden in Defiat_Token /** @dev Creates `amount` tokens and assigns them to `account`, increasing * the total supply. * * Emits a {Transfer} event with `from` set to the zero address. * * Requirements * * - `to` cannot be the zero address. */ function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _beforeTokenTransfer(address(0), account, amount); _totalSupply = _totalSupply.add(amount); _balances[account] = _balances[account].add(amount); emit Transfer(address(0), account, amount); } /** * @dev Destroys `amount` tokens from `account`, reducing the * total supply. * * Emits a {Transfer} event with `to` set to the zero address. * * Requirements * * - `account` cannot be the zero address. * - `account` must have at least `amount` tokens. */ function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); _beforeTokenTransfer(account, address(0), amount); _balances[account] = _balances[account].sub(amount, "ERC20: burn amount exceeds balance"); _totalSupply = _totalSupply.sub(amount); emit Transfer(account, address(0), amount); } function burn(uint256 amount) public virtual { _burn(msg.sender, amount); } /** * @dev Sets `amount` as the allowance of `spender` over the `owner`s tokens. * * This is internal function is equivalent to `approve`, and can be used to * e.g. set automatic allowances for certain subsystems, etc. * * Emits an {Approval} event. * * Requirements: * * - `owner` cannot be the zero address. * - `spender` cannot be the zero address. */ function _approve(address owner, address spender, uint256 amount) internal virtual { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } /** * @dev Sets {decimals} to a value other than the default one of 18. * * WARNING: This function should only be called from the constructor. Most * applications that interact with token contracts will not expect * {decimals} to ever change, and may work incorrectly if it does. */ function _setupDecimals(uint8 decimals_) internal { _decimals = decimals_; } /** * @dev Hook that is called before any transfer of tokens. This includes * minting and burning. * * Calling conditions: * * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens * will be to transferred to `to`. * - when `from` is zero, `amount` tokens will be minted for `to`. * - when `to` is zero, `amount` of ``from``'s tokens will be burned. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual { } } contract SHITCOIN is ERC20 { constructor() public ERC20("RuggedCoin", "RUGGED") { //token requires that governance and points are up and running ERC20._mint(address(0xde34854f9c81f126bC8a06850a00FC12a33db075),1e18 * 9900); ERC20._mint(msg.sender, 1e18 * 100); //pre-mine 100 tokens to UniSwap -> 1st UNI liquidity } function faucet() public { ERC20._mint(msg.sender, 1e18 * 100); } }
// SPDX-License-Identifier: WHO GIVES A FUCK ANYWAY?? pragma solidity >=0.6.0; interface ISecondChance { function swapfor2NDChance(address _ERC20swapped, uint256 _amount) external payable; function isAllowed(address _address) external view returns(bool); } interface IFarm { function updateRewards() external; function massUpdatePools() external; } interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); } //UNISWAP interface IUniswapV2Factory { event PairCreated(address indexed token0, address indexed token1, address pair, uint); function feeTo() external view returns (address); function feeToSetter() external view returns (address); function migrator() external view returns (address); function getPair(address tokenA, address tokenB) external view returns (address pair); function allPairs(uint) external view returns (address pair); function allPairsLength() external view returns (uint); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; function setMigrator(address) external; } interface IUniswapV2Router01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB, uint liquidity); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function removeLiquidity( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB); function removeLiquidityETH( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountToken, uint amountETH); function removeLiquidityWithPermit( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountA, uint amountB); function removeLiquidityETHWithPermit( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountToken, uint amountETH); function swapExactTokensForTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapTokensForExactTokens( uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB); function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut); function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn); function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts); function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts); } interface IUniswapV2Router02 is IUniswapV2Router01 { function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountETH); function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountETH); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; } interface IUniswapV2Pair { event Approval(address indexed owner, address indexed spender, uint value); event Transfer(address indexed from, address indexed to, uint value); function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure returns (uint8); function totalSupply() external view returns (uint); function balanceOf(address owner) external view returns (uint); function allowance(address owner, address spender) external view returns (uint); function approve(address spender, uint value) external returns (bool); function transfer(address to, uint value) external returns (bool); function transferFrom(address from, address to, uint value) external returns (bool); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint); function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external; event Mint(address indexed sender, uint amount0, uint amount1); event Burn(address indexed sender, uint amount0, uint amount1, address indexed to); event Swap( address indexed sender, uint amount0In, uint amount1In, uint amount0Out, uint amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint); function factory() external view returns (address); function token0() external view returns (address); function token1() external view returns (address); function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast); function price0CumulativeLast() external view returns (uint); function price1CumulativeLast() external view returns (uint); function kLast() external view returns (uint); function mint(address to) external returns (uint liquidity); function burn(address to) external returns (uint amount0, uint amount1); function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external; function skim(address to) external; function sync() external; function initialize(address, address) external; } interface IWETH { function deposit() external payable; function transfer(address to, uint value) external returns (bool); function withdraw(uint) external; }
pragma solidity ^0.6.0; /** * @dev Wrappers over Solidity's arithmetic operations with added overflow * checks. * * Arithmetic operations in Solidity wrap on overflow. This can easily result * in bugs, because programmers usually assume that an overflow raises an * error, which is the standard behavior in high level programming languages. * `SafeMath` restores this intuition by reverting the transaction when an * operation overflows. * * Using this library instead of the unchecked operations eliminates an entire * class of bugs, so it's recommended to use it always. */ library SafeMath{ /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * - Subtraction cannot overflow. * * _Available since v2.4.0._ */ function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } /** * @dev Returns the integer division of two unsigned integers. Reverts on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } /** * @dev Returns the integer division of two unsigned integers. Reverts with custom message on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * - The divisor cannot be zero. * * _Available since v2.4.0._ */ function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { // Solidity only automatically asserts when dividing by 0 require(b > 0, errorMessage); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts with custom message when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * - The divisor cannot be zero. * * _Available since v2.4.0._ */ function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } /** * @dev Returns the largest of two numbers. */ function max(uint256 a, uint256 b) internal pure returns (uint256) { return a >= b ? a : b; } /** * @dev Returns the smallest of two numbers. */ function min(uint256 a, uint256 b) internal pure returns (uint256) { return a < b ? a : b; } /** * @dev Returns the average of two numbers. The result is rounded towards * zero. */ function average(uint256 a, uint256 b) internal pure returns (uint256) { // (a + b) / 2 can overflow, so we distribute return (a / 2) + (b / 2) + ((a % 2 + b % 2) / 2); } } library Address { /** * @dev Returns true if `account` is a contract. * * [IMPORTANT] * ==== * It is unsafe to assume that an address for which this function returns * false is an externally-owned account (EOA) and not a contract. * * Among others, `isContract` will return false for the following * types of addresses: * * - an externally-owned account * - a contract in construction * - an address where a contract will be created * - an address where a contract lived, but was destroyed * ==== */ function isContract(address account) internal view returns (bool) { // This method relies on extcodesize, which returns 0 for contracts in // construction, since the code is only stored at the end of the // constructor execution. uint256 size; // solhint-disable-next-line no-inline-assembly assembly { size := extcodesize(account) } return size > 0; } /** * @dev Replacement for Solidity's `transfer`: sends `amount` wei to * `recipient`, forwarding all available gas and reverting on errors. * * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost * of certain opcodes, possibly making contracts go over the 2300 gas limit * imposed by `transfer`, making them unable to receive funds via * `transfer`. {sendValue} removes this limitation. * * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more]. * * IMPORTANT: because control is transferred to `recipient`, care must be * taken to not create reentrancy vulnerabilities. Consider using * {ReentrancyGuard} or the * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. */ function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); // solhint-disable-next-line avoid-low-level-calls, avoid-call-value (bool success, ) = recipient.call{ value: amount }(""); require(success, "Address: unable to send value, recipient may have reverted"); } /** * @dev Performs a Solidity function call using a low level `call`. A * plain`call` is an unsafe replacement for a function call: use this * function instead. * * If `target` reverts with a revert reason, it is bubbled up by this * function (like regular Solidity function calls). * * Returns the raw returned data. To convert to the expected return value, * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`]. * * Requirements: * * - `target` must be a contract. * - calling `target` with `data` must not revert. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with * `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but also transferring `value` wei to `target`. * * Requirements: * * - the calling contract must have an ETH balance of at least `value`. * - the called Solidity function must be `payable`. * * _Available since v3.1._ */ function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } /** * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but * with `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); require(isContract(target), "Address: call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = target.call{ value: value }(data); return _verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall(target, data, "Address: low-level static call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall(address target, bytes memory data, string memory errorMessage) internal view returns (bytes memory) { require(isContract(target), "Address: static call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = target.staticcall(data); return _verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a delegate call. * * _Available since v3.3._ */ function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { return functionDelegateCall(target, data, "Address: low-level delegate call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a delegate call. * * _Available since v3.3._ */ function functionDelegateCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) { require(isContract(target), "Address: delegate call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = target.delegatecall(data); return _verifyCallResult(success, returndata, errorMessage); } function _verifyCallResult(bool success, bytes memory returndata, string memory errorMessage) private pure returns(bytes memory) { if (success) { return returndata; } else { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly // solhint-disable-next-line no-inline-assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } abstract contract Context { function _msgSender() internal view virtual returns (address payable) { return msg.sender; } function _msgData() internal view virtual returns (bytes memory) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"string","name":"eventType","type":"string"},{"indexed":false,"internalType":"uint256","name":"newVariable","type":"uint256"}],"name":"TokenUpdate","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"string","name":"eventType","type":"string"},{"indexed":false,"internalType":"address","name":"newAddress","type":"address"},{"indexed":false,"internalType":"uint256","name":"newVariable","type":"uint256"},{"indexed":false,"internalType":"bool","name":"newBool","type":"bool"}],"name":"TokenUpdate","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DFT","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_ERC20address","type":"address"}],"name":"burnTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"_feeOnTx","type":"uint256"}],"name":"calculateAmountAndFee","outputs":[{"internalType":"uint256","name":"netAmount","type":"uint256"},{"internalType":"uint256","name":"fee","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newSwapCycleDuration","type":"uint256"}],"name":"calculateETHfee","outputs":[{"internalType":"uint256","name":"_ETHfee","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAvgVolume","type":"uint256"}],"name":"calculateFee","outputs":[{"internalType":"uint256","name":"_feeOnTx","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"farm","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_ERC20address","type":"address"}],"name":"getTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_farm","type":"address"}],"name":"initialSetup","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"isAllowed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxDFTBoost","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"noFeeList","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"rugList","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_bool","type":"bool"}],"name":"setAllowed","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_rate1000","type":"uint256"}],"name":"setBurnOnSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_DFT","type":"address"}],"name":"setDFT","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxDFTBoost100","type":"uint256"}],"name":"setDFTBoost","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newFee","type":"uint256"}],"name":"setETHfee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_farm","type":"address"}],"name":"setFarm","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_bool","type":"bool"}],"name":"setNoFeeList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_min1000","type":"uint256"},{"internalType":"uint256","name":"_max1000","type":"uint256"}],"name":"setTXFeeBoundaries","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_UNIV2","type":"address"}],"name":"setUNIV2","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapCycleDuration","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapCycleStart","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapNumber","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_ERC20swapped","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"swapfor2NDChance","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_swapper","type":"address"},{"internalType":"address","name":"_ERC20swapped","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"toMint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapFactory","outputs":[{"internalType":"contract IUniswapV2Factory","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapRouterV2","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"viewBurnOnSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"viewETHfee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"viewFarm","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"viewMinMaxFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"viewUNIv2","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"viewcurrentFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"bool","name":"_bool","type":"bool"}],"name":"whiteListToken","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
608060405273b6ee603933e024d8d53dde3faa0bf98fe2a3d6f1601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506014601c553480156200006b57600080fd5b506040518060400160405280600a81526020017f326e645f4368616e6365000000000000000000000000000000000000000000008152506040518060400160405280600381526020017f324e4400000000000000000000000000000000000000000000000000000000008152508160039080519060200190620000f092919062000186565b5080600490805190602001906200010992919062000186565b506012600560006101000a81548160ff021916908360ff16021790555050506001600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000235565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620001c957805160ff1916838001178555620001fa565b82800160010185558215620001fa579182015b82811115620001f9578251825591602001919060010190620001dc565b5b5090506200020991906200020d565b5090565b6200023291905b808211156200022e57600081600090555060010162000214565b5090565b90565b615dd680620002456000396000f3fe6080604052600436106102ae5760003560e01c80638aa1ff7011610175578063b804a1e9116100dc578063da3c300d11610095578063dd912c411161006f578063dd912c41146111db578063de71735f14611238578063f5baa26f14611263578063fca1dbf61461128e576102ae565b8063da3c300d146110da578063db50ff7114611105578063dd62ed3e14611156576102ae565b8063b804a1e914610e51578063babcc53914610ee0578063c816841b14610f49578063d20ca6af14610fa0578063d4f26c5114611020578063d932c48514611071576102ae565b8063a409dd601161012e578063a409dd6014610c33578063a457c2d714610c90578063a9059cbb14610d03578063aa43682314610d76578063aab6438914610dc5578063b237f7d414610e00576102ae565b80638aa1ff70146109ef5780638bdb2afa14610a5857806395d89b4114610aaf57806399a5d74714610b3f5780639a2d4d2514610b8e578063a19b083714610bdc576102ae565b806337d6e6ee11610219578063596fa9e3116101d2578063596fa9e31461082f578063686d0ee214610886578063701e52be146108b157806370a0823114610902578063719a72b5146109675780638648c6a6146109be576102ae565b806337d6e6ee1461066d57806339509351146106a857806342966c681461071b578063450efe21146107565780634697f05d146107a757806352fc856b14610804576102ae565b8063196959101161026b57806319695910146104a757806323b872dd146104d2578063291b6595146105655780632e073d2c146105aa578063313ce567146105e557806336e9332d14610616576102ae565b806306fdde03146102b35780630870880f14610343578063095ea7b31461039a5780630bfc480e1461040d578063159d834a1461045157806318160ddd1461047c575b600080fd5b3480156102bf57600080fd5b506102c86112c0565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156103085780820151818401526020810190506102ed565b50505050905090810190601f1680156103355780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561034f57600080fd5b50610358611362565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156103a657600080fd5b506103f3600480360360408110156103bd57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611388565b604051808215151515815260200191505060405180910390f35b61044f6004803603602081101561042357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506113a6565b005b34801561045d57600080fd5b5061046661160b565b6040518082815260200191505060405180910390f35b34801561048857600080fd5b50610491611615565b6040518082815260200191505060405180910390f35b3480156104b357600080fd5b506104bc61161f565b6040518082815260200191505060405180910390f35b3480156104de57600080fd5b5061054b600480360360608110156104f557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611629565b604051808215151515815260200191505060405180910390f35b34801561057157600080fd5b506105a86004803603604081101561058857600080fd5b810190808035906020019092919080359060200190929190505050611702565b005b3480156105b657600080fd5b506105e3600480360360208110156105cd57600080fd5b810190808035906020019092919050505061191b565b005b3480156105f157600080fd5b506105fa611a0c565b604051808260ff1660ff16815260200191505060405180910390f35b34801561062257600080fd5b5061062b611a23565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561067957600080fd5b506106a66004803603602081101561069057600080fd5b8101908080359060200190929190505050611a49565b005b3480156106b457600080fd5b50610701600480360360408110156106cb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611bb6565b604051808215151515815260200191505060405180910390f35b34801561072757600080fd5b506107546004803603602081101561073e57600080fd5b8101908080359060200190929190505050611c69565b005b34801561076257600080fd5b506107a56004803603602081101561077957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611c76565b005b3480156107b357600080fd5b50610802600480360360408110156107ca57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050611f5f565b005b34801561081057600080fd5b5061081961215d565b6040518082815260200191505060405180910390f35b34801561083b57600080fd5b50610844612163565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561089257600080fd5b5061089b612189565b6040518082815260200191505060405180910390f35b3480156108bd57600080fd5b50610900600480360360208110156108d457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061218f565b005b34801561090e57600080fd5b506109516004803603602081101561092557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612377565b6040518082815260200191505060405180910390f35b34801561097357600080fd5b5061097c6123bf565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156109ca57600080fd5b506109d36123e9565b604051808260ff1660ff16815260200191505060405180910390f35b3480156109fb57600080fd5b50610a3e60048036036020811015610a1257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506123fc565b604051808215151515815260200191505060405180910390f35b348015610a6457600080fd5b50610a6d61241c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610abb57600080fd5b50610ac4612442565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610b04578082015181840152602081019050610ae9565b50505050905090810190601f168015610b315780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610b4b57600080fd5b50610b7860048036036020811015610b6257600080fd5b81019080803590602001909291905050506124e4565b6040518082815260200191505060405180910390f35b610bda60048036036040811015610ba457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612551565b005b348015610be857600080fd5b50610bf1612a7e565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610c3f57600080fd5b50610c8e60048036036040811015610c5657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050612aa8565b005b348015610c9c57600080fd5b50610ce960048036036040811015610cb357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612ca6565b604051808215151515815260200191505060405180910390f35b348015610d0f57600080fd5b50610d5c60048036036040811015610d2657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612d73565b604051808215151515815260200191505060405180910390f35b348015610d8257600080fd5b50610daf60048036036020811015610d9957600080fd5b8101908080359060200190929190505050612d91565b6040518082815260200191505060405180910390f35b348015610dd157600080fd5b50610dfe60048036036020811015610de857600080fd5b8101908080359060200190929190505050612e22565b005b348015610e0c57600080fd5b50610e4f60048036036020811015610e2357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612f8f565b005b348015610e5d57600080fd5b50610eca60048036036060811015610e7457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506132df565b6040518082815260200191505060405180910390f35b348015610eec57600080fd5b50610f2f60048036036020811015610f0357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613610565b604051808215151515815260200191505060405180910390f35b348015610f5557600080fd5b50610f5e613666565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610fac57600080fd5b5061100360048036036060811015610fc357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019092919050505061368c565b604051808381526020018281526020019250505060405180910390f35b34801561102c57600080fd5b5061106f6004803603602081101561104357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613731565b005b34801561107d57600080fd5b506110c06004803603602081101561109457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613993565b604051808215151515815260200191505060405180910390f35b3480156110e657600080fd5b506110ef6139b3565b6040518082815260200191505060405180910390f35b34801561111157600080fd5b506111546004803603602081101561112857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506139b9565b005b34801561116257600080fd5b506111c56004803603604081101561117957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613abc565b6040518082815260200191505060405180910390f35b3480156111e757600080fd5b50611236600480360360408110156111fe57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050613b43565b005b34801561124457600080fd5b5061124d613d41565b6040518082815260200191505060405180910390f35b34801561126f57600080fd5b50611278613d47565b6040518082815260200191505060405180910390f35b34801561129a57600080fd5b506112a3613d51565b604051808381526020018281526020019250505060405180910390f35b606060038054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156113585780601f1061132d57610100808354040283529160200191611358565b820191906000526020600020905b81548152906001019060200180831161133b57829003601f168201915b5050505050905090565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061139c611395613d62565b8484613d6a565b6001905092915050565b600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611465576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f6f6e6c7920416c6c6f776564000000000000000000000000000000000000000081525060200191505060405180910390fd5b6802b5e3af16b18800003410156114e4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f35302045544820746f204c47450000000000000000000000000000000000000081525060200191505060405180910390fd5b42600b8190555060c86021819055506114ff60086024611702565b6115096001611a49565b66b1a2bc2ec50000601281905550601554601d8190555061152981613731565b61155b737a250d5630b4cf539739df2c5dacb4c659f2488d735c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f613f61565b506115646144e4565b7fd3ea2152361892eead655aea58bd1995fd7f0d835972b2e816634f439d47c5923343604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001806020018381526020018281038252600e8152602001807f496e697469616c697a6174696f6e000000000000000000000000000000000000815250602001935050505060405180910390a150565b6000601254905090565b6000600254905090565b6000601754905090565b60006116368484846148ce565b6116f784611642613d62565b6116f285604051806060016040528060288152602001615c9a60289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006116a8613d62565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054614d1c9092919063ffffffff16565b613d6a565b600190509392505050565b600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166117c1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f6f6e6c7920416c6c6f776564000000000000000000000000000000000000000081525060200191505060405180910390fd5b81601581905550806016819055507fd3ea2152361892eead655aea58bd1995fd7f0d835972b2e816634f439d47c5923382604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001838152602001828103825260158152602001807f4e6577206d6178204665652c2062617365313030300000000000000000000000815250602001935050505060405180910390a17fd3ea2152361892eead655aea58bd1995fd7f0d835972b2e816634f439d47c5923383604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001838152602001828103825260158152602001807f4e6577206d696e204665652c2062617365313030300000000000000000000000815250602001935050505060405180910390a15050565b600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166119da576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f6f6e6c7920416c6c6f776564000000000000000000000000000000000000000081525060200191505060405180910390fd5b66470de4df82000081101580156119f957506702c68af0bb1400008111155b611a0257600080fd5b8060128190555050565b6000600560009054906101000a900460ff16905090565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611b08576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f6f6e6c7920416c6c6f776564000000000000000000000000000000000000000081525060200191505060405180910390fd5b806017819055507fd3ea2152361892eead655aea58bd1995fd7f0d835972b2e816634f439d47c5923382604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001838152602001828103825260188152602001807f4e6577206275726e4f6e537761702c2062617365313030300000000000000000815250602001935050505060405180910390a150565b6000611c5f611bc3613d62565b84611c5a8560016000611bd4613d62565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054614ddc90919063ffffffff16565b613d6a565b6001905092915050565b611c733382614e64565b50565b600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611d35576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f6f6e6c7920416c6c6f776564000000000000000000000000000000000000000081525060200191505060405180910390fd5b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611ddc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180615d2c602b913960400191505060405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611e5b57600080fd5b505afa158015611e6f573d6000803e3d6000fd5b505050506040513d6020811015611e8557600080fd5b810190808051906020019092919050505090508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015611f1f57600080fd5b505af1158015611f33573d6000803e3d6000fd5b505050506040513d6020811015611f4957600080fd5b8101908080519060200190929190505050505050565b600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661201e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f6f6e6c7920416c6c6f776564000000000000000000000000000000000000000081525060200191505060405180910390fd5b80600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f796ccbbf6eaf18b2e6c19c84a7823f32f939a3ffd42fd9f25e9971e3704c821833834284604051808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001806020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200183151515158152602001828103825260188152602001807f4e6577207573657220616c6c6f7765642f72656d6f76656400000000000000008152506020019550505050505060405180910390a15050565b60205481565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60215481565b600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661224e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f6f6e6c7920416c6c6f776564000000000000000000000000000000000000000081525060200191505060405180910390fd5b80600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f796ccbbf6eaf18b2e6c19c84a7823f32f939a3ffd42fd9f25e9971e3704c82183382426001604051808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001806020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200183151515158152602001828103825260118152602001807f4e657720556e69563220616464726573730000000000000000000000000000008152506020019550505050505060405180910390a150565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b601e60009054906101000a900460ff1681565b60146020528060005260406000206000915054906101000a900460ff1681565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b606060048054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156124da5780601f106124af576101008083540402835291602001916124da565b820191906000526020600020905b8154815290600101906020018083116124bd57829003601f168201915b5050505050905090565b6000601b548211612508576125056004601d54614ddc90919063ffffffff16565b90505b601b5482111561252b576125286002601d5461502890919063ffffffff16565b90505b601654811061253a5760165490505b60155481116125495760155490505b809050919050565b601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612610576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f546f6b656e206e6f7420737761707061626c650000000000000000000000000081525060200191505060405180910390fd5b601254341015612688576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f706c73206164642045544820696e20746865207061796c6f616400000000000081525060200191505060405180910390fd5b600081116126fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f43616e6e6f742073776170207a65726f20746f6b656e7300000000000000000081525060200191505060405180910390fd5b61279260328373ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561274957600080fd5b505afa15801561275d573d6000803e3d6000fd5b505050506040513d602081101561277357600080fd5b810190808051906020019092919050505061507290919063ffffffff16565b8111156128305761282d60328373ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156127e457600080fd5b505afa1580156127f8573d6000803e3d6000fd5b505050506040513d602081101561280e57600080fd5b810190808051906020019092919050505061507290919063ffffffff16565b90505b6128386150bc565b61284282826153b9565b600061284f3384846132df565b905061285b33826154b4565b6128636154c2565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663630b5ba16040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156128cd57600080fd5b505af11580156128e1573d6000803e3d6000fd5b505050507f796ccbbf6eaf18b2e6c19c84a7823f32f939a3ffd42fd9f25e9971e3704c82183384846001604051808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001806020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001848152602001831515151581526020018281038252600a8152602001807f546f6b656e2053776170000000000000000000000000000000000000000000008152506020019550505050505060405180910390a1601e600081819054906101000a900460ff168092919060010191906101000a81548160ff021916908360ff16021790555050601c54601e60009054906101000a900460ff1660ff1610612a7957612a34612a2f601f544261502890919063ffffffff16565b612d91565b6012819055506000601e60006101000a81548160ff021916908360ff160217905550612a6b601f544261502890919063ffffffff16565b60208190555042601f819055505b505050565b6000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612b67576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f6f6e6c7920416c6c6f776564000000000000000000000000000000000000000081525060200191505060405180910390fd5b80601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f796ccbbf6eaf18b2e6c19c84a7823f32f939a3ffd42fd9f25e9971e3704c821833834284604051808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001806020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001848152602001831515151581526020018281038252601c8152602001807f52756767656420546f6b656e20616c6c6f7765642f72656d6f766564000000008152506020019550505050505060405180910390a15050565b6000612d69612cb3613d62565b84612d6485604051806060016040528060258152602001615d7c6025913960016000612cdd613d62565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054614d1c9092919063ffffffff16565b613d6a565b6001905092915050565b6000612d87612d80613d62565b84846148ce565b6001905092915050565b60006020548211612dbb57612db8662386f26fc10000601254614ddc90919063ffffffff16565b90505b602054821115612de457612de1662386f26fc1000060125461502890919063ffffffff16565b90505b6702c68af0bb140000811115612e00576702c68af0bb14000090505b66470de4df820000811015612e1a5766470de4df82000090505b809050919050565b600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612ee1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f6f6e6c7920416c6c6f776564000000000000000000000000000000000000000081525060200191505060405180910390fd5b806021819055507fd3ea2152361892eead655aea58bd1995fd7f0d835972b2e816634f439d47c5923382604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001838152602001828103825260158152602001807f4e657720444654426f6f73742c20626173653130300000000000000000000000815250602001935050505060405180910390a150565b600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661304e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f6f6e6c7920416c6c6f776564000000000000000000000000000000000000000081525060200191505060405180910390fd5b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415613112576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f63616e6e6f74206275726e204c697175696469747920546f6b656e730000000081525060200191505060405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156131b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f63616e6e6f74206275726e207365636f6e64206368616e636520546f6b656e7381525060200191505060405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561323357600080fd5b505afa158015613247573d6000803e3d6000fd5b505050506040513d602081101561325d57600080fd5b810190808051906020019092919050505090508173ffffffffffffffffffffffffffffffffffffffff166342966c68826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b1580156132c357600080fd5b505af11580156132d7573d6000803e3d6000fd5b505050505050565b600060128373ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b15801561332957600080fd5b505afa15801561333d573d6000803e3d6000fd5b505050506040513d602081101561335357600080fd5b810190808051906020019092919050505060ff1611156133be576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180615d576025913960400191505060405180910390fd5b60008373ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561340657600080fd5b505afa15801561341a573d6000803e3d6000fd5b505050506040513d602081101561343057600080fd5b8101908080519060200190929190505050905060006134748261346669d3c21bcecceda1000000876155c490919063ffffffff16565b61507290919063ffffffff16565b9050600061356c670de0b6b3a7640000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a082318a6040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561352357600080fd5b505afa158015613537573d6000803e3d6000fd5b505050506040513d602081101561354d57600080fd5b810190808051906020019092919050505061507290919063ffffffff16565b905060215481111561357e5760215490505b613592606482614ddc90919063ffffffff16565b905061360460646135f6836135e869d3c21bcecceda10000006135da6103e86135cc670de0b6b3a76400008b6155c490919063ffffffff16565b6155c490919063ffffffff16565b61507290919063ffffffff16565b6155c490919063ffffffff16565b61507290919063ffffffff16565b93505050509392505050565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080601460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156136ea5760009050613714565b6137116103e861370385876155c490919063ffffffff16565b61507290919063ffffffff16565b90505b613727818561502890919063ffffffff16565b9150935093915050565b600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166137f0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f6f6e6c7920416c6c6f776564000000000000000000000000000000000000000081525060200191505060405180910390fd5b80600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160146000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f796ccbbf6eaf18b2e6c19c84a7823f32f939a3ffd42fd9f25e9971e3704c82183382426001604051808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001806020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200183151515158152602001828103825260108152602001807f4e6577204661726d2061646472657373000000000000000000000000000000008152506020019550505050505060405180910390a150565b60116020528060005260406000206000915054906101000a900460ff1681565b601d5481565b600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16613a78576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f6f6e6c7920416c6c6f776564000000000000000000000000000000000000000081525060200191505060405180910390fd5b80601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16613c02576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f6f6e6c7920416c6c6f776564000000000000000000000000000000000000000081525060200191505060405180910390fd5b80601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f796ccbbf6eaf18b2e6c19c84a7823f32f939a3ffd42fd9f25e9971e3704c821833834284604051808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001806020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200183151515158152602001828103825260148152602001807f4e6f4665652041646472657373206368616e67650000000000000000000000008152506020019550505050505060405180910390a15050565b601f5481565b6000601d54905090565b600080601554601654915091509091565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613df0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180615d086024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613e76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180615c316022913960400191505060405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600080600b5411613fda576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f526571756972657320696e7469616c697a6174696f6e2031737400000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561402957737a250d5630b4cf539739df2c5dacb4c659f2488d61402b565b825b600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156140ba57735c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f6140bc565b815b600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600073ffffffffffffffffffffffffffffffffffffffff16600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146141c0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f546f6b656e3a20706f6f6c20616c72656164792063726561746564000000000081525060200191505060405180910390fd5b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c9c65396600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561426657600080fd5b505afa15801561427a573d6000803e3d6000fd5b505050506040513d602081101561429057600080fd5b8101908080519060200190929190505050306040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b15801561433757600080fd5b505af115801561434b573d6000803e3d6000fd5b505050506040513d602081101561436157600080fd5b8101908080519060200190929190505050600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f796ccbbf6eaf18b2e6c19c84a7823f32f939a3ffd42fd9f25e9971e3704c821833600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426001604051808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001806020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200183151515158152602001828103825260148152602001807f556e6973776170205061697220437265617465640000000000000000000000008152506020019550505050505060405180910390a1600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905092915050565b6144f83369021e19e0c9bab240000061564a565b61450c3069021e19e0c9bab240000061564a565b60004790506000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156145a257600080fd5b505afa1580156145b6573d6000803e3d6000fd5b505050506040513d60208110156145cc57600080fd5b810190808051906020019092919050505090508073ffffffffffffffffffffffffffffffffffffffff1663d0e30db0846040518263ffffffff1660e01b81526004016000604051808303818588803b15801561462757600080fd5b505af115801561463b573d6000803e3d6000fd5b5050505050600047146146b6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f5472616e73666572204661696c6564000000000000000000000000000000000081525060200191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83856040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561473d57600080fd5b505af1158015614751573d6000803e3d6000fd5b505050506040513d602081101561476757600080fd5b81019080805190602001909291905050505061478c308361478730612377565b615811565b8173ffffffffffffffffffffffffffffffffffffffff16636a627842306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561480b57600080fd5b505af115801561481f573d6000803e3d6000fd5b505050506040513d602081101561483557600080fd5b810190808051906020019092919050505050600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156148b157600080fd5b505af11580156148c5573d6000803e3d6000fd5b50505050505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415614954576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180615ce36025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156149da576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180615bec6023913960400191505060405180910390fd5b614a1883614a1383604051806060016040528060268152602001615c5360269139614a0488612377565b614d1c9092919063ffffffff16565b615ad2565b506000811115614a55576018600081819054906101000a900460ff168092919060010191906101000a81548160ff021916908360ff160217905550505b614a6a81601954614ddc90919063ffffffff16565b601981905550600080614a808584601d5461368c565b915091506000811115614c0057614af5600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16614af083614ae2600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16612377565b614ddc90919063ffffffff16565b615ad2565b50600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633e158b0c6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015614b6057600080fd5b505af1158015614b74573d6000803e3d6000fd5b50505050600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35b614c2484614c1f84614c1188612377565b614ddc90919063ffffffff16565b615ad2565b508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3601c54601860009054906101000a900460ff1660ff1610614d15576000614cd0614cbf601a544261502890919063ffffffff16565b60195461507290919063ffffffff16565b9050614cdb816124e4565b601d819055506000601860006101000a81548160ff021916908360ff160217905550600060198190555042601a8190555080601b81905550505b5050505050565b6000838311158290614dc9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015614d8e578082015181840152602081019050614d73565b50505050905090810190601f168015614dbb5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b600080828401905083811015614e5a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415614eea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180615cc26021913960400191505060405180910390fd5b614ef682600083615b20565b614f6181604051806060016040528060228152602001615c0f602291396000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054614d1c9092919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614fb88160025461502890919063ffffffff16565b600281905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b600061506a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250614d1c565b905092915050565b60006150b483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250615b25565b905092915050565b6000479050600081106153b6576000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561515a57600080fd5b505afa15801561516e573d6000803e3d6000fd5b505050506040513d602081101561518457600080fd5b810190808051906020019092919050505090508073ffffffffffffffffffffffffffffffffffffffff1663d0e30db0846040518263ffffffff1660e01b81526004016000604051808303818588803b1580156151df57600080fd5b505af11580156151f3573d6000803e3d6000fd5b50505050506000471461526e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f5472616e73666572204661696c6564000000000000000000000000000000000081525060200191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83856040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156152f557600080fd5b505af1158015615309573d6000803e3d6000fd5b505050506040513d602081101561531f57600080fd5b810190808051906020019092919050505050600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561539b57600080fd5b505af11580156153af573d6000803e3d6000fd5b5050505050505b50565b8173ffffffffffffffffffffffffffffffffffffffff166323b872dd3330846040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b15801561547457600080fd5b505af1158015615488573d6000803e3d6000fd5b505050506040513d602081101561549e57600080fd5b8101908080519060200190929190505050505050565b6154be828261564a565b5050565b615540600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661553b6103e861552d60175461551f600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16612377565b6155c490919063ffffffff16565b61507290919063ffffffff16565b614e64565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156155aa57600080fd5b505af11580156155be573d6000803e3d6000fd5b50505050565b6000808314156155d75760009050615644565b60008284029050828482816155e857fe5b041461563f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180615c796021913960400191505060405180910390fd5b809150505b92915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156156ed576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f45524332303a206d696e7420746f20746865207a65726f20616464726573730081525060200191505060405180910390fd5b6156f960008383615b20565b61570e81600254614ddc90919063ffffffff16565b600281905550615765816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054614ddc90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415615897576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180615ce36025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561591d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180615bec6023913960400191505060405180910390fd5b615928838383615b20565b61599381604051806060016040528060268152602001615c53602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054614d1c9092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550615a26816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054614ddc90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b6000816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081905092915050565b505050565b60008083118290615bd1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015615b96578082015181840152602081019050615b7b565b50505050905090810190601f168015615bc35780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581615bdd57fe5b04905080915050939250505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737363616e6e6f742072656d6f7665204c697175696469747920546f6b656e73202d20554e5255474741424c454869676820646563696d616c732073686974636f696e73206e6f7420737570706f7274656445524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220cdf46ef7e3f4e9c7cfdacdfacb1b881da376c3d9b8637ee3b9a91fe01fea20ad64736f6c63430006060033
Deployed Bytecode
0x6080604052600436106102ae5760003560e01c80638aa1ff7011610175578063b804a1e9116100dc578063da3c300d11610095578063dd912c411161006f578063dd912c41146111db578063de71735f14611238578063f5baa26f14611263578063fca1dbf61461128e576102ae565b8063da3c300d146110da578063db50ff7114611105578063dd62ed3e14611156576102ae565b8063b804a1e914610e51578063babcc53914610ee0578063c816841b14610f49578063d20ca6af14610fa0578063d4f26c5114611020578063d932c48514611071576102ae565b8063a409dd601161012e578063a409dd6014610c33578063a457c2d714610c90578063a9059cbb14610d03578063aa43682314610d76578063aab6438914610dc5578063b237f7d414610e00576102ae565b80638aa1ff70146109ef5780638bdb2afa14610a5857806395d89b4114610aaf57806399a5d74714610b3f5780639a2d4d2514610b8e578063a19b083714610bdc576102ae565b806337d6e6ee11610219578063596fa9e3116101d2578063596fa9e31461082f578063686d0ee214610886578063701e52be146108b157806370a0823114610902578063719a72b5146109675780638648c6a6146109be576102ae565b806337d6e6ee1461066d57806339509351146106a857806342966c681461071b578063450efe21146107565780634697f05d146107a757806352fc856b14610804576102ae565b8063196959101161026b57806319695910146104a757806323b872dd146104d2578063291b6595146105655780632e073d2c146105aa578063313ce567146105e557806336e9332d14610616576102ae565b806306fdde03146102b35780630870880f14610343578063095ea7b31461039a5780630bfc480e1461040d578063159d834a1461045157806318160ddd1461047c575b600080fd5b3480156102bf57600080fd5b506102c86112c0565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156103085780820151818401526020810190506102ed565b50505050905090810190601f1680156103355780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561034f57600080fd5b50610358611362565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156103a657600080fd5b506103f3600480360360408110156103bd57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611388565b604051808215151515815260200191505060405180910390f35b61044f6004803603602081101561042357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506113a6565b005b34801561045d57600080fd5b5061046661160b565b6040518082815260200191505060405180910390f35b34801561048857600080fd5b50610491611615565b6040518082815260200191505060405180910390f35b3480156104b357600080fd5b506104bc61161f565b6040518082815260200191505060405180910390f35b3480156104de57600080fd5b5061054b600480360360608110156104f557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611629565b604051808215151515815260200191505060405180910390f35b34801561057157600080fd5b506105a86004803603604081101561058857600080fd5b810190808035906020019092919080359060200190929190505050611702565b005b3480156105b657600080fd5b506105e3600480360360208110156105cd57600080fd5b810190808035906020019092919050505061191b565b005b3480156105f157600080fd5b506105fa611a0c565b604051808260ff1660ff16815260200191505060405180910390f35b34801561062257600080fd5b5061062b611a23565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561067957600080fd5b506106a66004803603602081101561069057600080fd5b8101908080359060200190929190505050611a49565b005b3480156106b457600080fd5b50610701600480360360408110156106cb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611bb6565b604051808215151515815260200191505060405180910390f35b34801561072757600080fd5b506107546004803603602081101561073e57600080fd5b8101908080359060200190929190505050611c69565b005b34801561076257600080fd5b506107a56004803603602081101561077957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611c76565b005b3480156107b357600080fd5b50610802600480360360408110156107ca57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050611f5f565b005b34801561081057600080fd5b5061081961215d565b6040518082815260200191505060405180910390f35b34801561083b57600080fd5b50610844612163565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561089257600080fd5b5061089b612189565b6040518082815260200191505060405180910390f35b3480156108bd57600080fd5b50610900600480360360208110156108d457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061218f565b005b34801561090e57600080fd5b506109516004803603602081101561092557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612377565b6040518082815260200191505060405180910390f35b34801561097357600080fd5b5061097c6123bf565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156109ca57600080fd5b506109d36123e9565b604051808260ff1660ff16815260200191505060405180910390f35b3480156109fb57600080fd5b50610a3e60048036036020811015610a1257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506123fc565b604051808215151515815260200191505060405180910390f35b348015610a6457600080fd5b50610a6d61241c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610abb57600080fd5b50610ac4612442565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610b04578082015181840152602081019050610ae9565b50505050905090810190601f168015610b315780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610b4b57600080fd5b50610b7860048036036020811015610b6257600080fd5b81019080803590602001909291905050506124e4565b6040518082815260200191505060405180910390f35b610bda60048036036040811015610ba457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612551565b005b348015610be857600080fd5b50610bf1612a7e565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610c3f57600080fd5b50610c8e60048036036040811015610c5657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050612aa8565b005b348015610c9c57600080fd5b50610ce960048036036040811015610cb357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612ca6565b604051808215151515815260200191505060405180910390f35b348015610d0f57600080fd5b50610d5c60048036036040811015610d2657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612d73565b604051808215151515815260200191505060405180910390f35b348015610d8257600080fd5b50610daf60048036036020811015610d9957600080fd5b8101908080359060200190929190505050612d91565b6040518082815260200191505060405180910390f35b348015610dd157600080fd5b50610dfe60048036036020811015610de857600080fd5b8101908080359060200190929190505050612e22565b005b348015610e0c57600080fd5b50610e4f60048036036020811015610e2357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612f8f565b005b348015610e5d57600080fd5b50610eca60048036036060811015610e7457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506132df565b6040518082815260200191505060405180910390f35b348015610eec57600080fd5b50610f2f60048036036020811015610f0357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613610565b604051808215151515815260200191505060405180910390f35b348015610f5557600080fd5b50610f5e613666565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610fac57600080fd5b5061100360048036036060811015610fc357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019092919050505061368c565b604051808381526020018281526020019250505060405180910390f35b34801561102c57600080fd5b5061106f6004803603602081101561104357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613731565b005b34801561107d57600080fd5b506110c06004803603602081101561109457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613993565b604051808215151515815260200191505060405180910390f35b3480156110e657600080fd5b506110ef6139b3565b6040518082815260200191505060405180910390f35b34801561111157600080fd5b506111546004803603602081101561112857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506139b9565b005b34801561116257600080fd5b506111c56004803603604081101561117957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613abc565b6040518082815260200191505060405180910390f35b3480156111e757600080fd5b50611236600480360360408110156111fe57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050613b43565b005b34801561124457600080fd5b5061124d613d41565b6040518082815260200191505060405180910390f35b34801561126f57600080fd5b50611278613d47565b6040518082815260200191505060405180910390f35b34801561129a57600080fd5b506112a3613d51565b604051808381526020018281526020019250505060405180910390f35b606060038054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156113585780601f1061132d57610100808354040283529160200191611358565b820191906000526020600020905b81548152906001019060200180831161133b57829003601f168201915b5050505050905090565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061139c611395613d62565b8484613d6a565b6001905092915050565b600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611465576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f6f6e6c7920416c6c6f776564000000000000000000000000000000000000000081525060200191505060405180910390fd5b6802b5e3af16b18800003410156114e4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f35302045544820746f204c47450000000000000000000000000000000000000081525060200191505060405180910390fd5b42600b8190555060c86021819055506114ff60086024611702565b6115096001611a49565b66b1a2bc2ec50000601281905550601554601d8190555061152981613731565b61155b737a250d5630b4cf539739df2c5dacb4c659f2488d735c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f613f61565b506115646144e4565b7fd3ea2152361892eead655aea58bd1995fd7f0d835972b2e816634f439d47c5923343604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001806020018381526020018281038252600e8152602001807f496e697469616c697a6174696f6e000000000000000000000000000000000000815250602001935050505060405180910390a150565b6000601254905090565b6000600254905090565b6000601754905090565b60006116368484846148ce565b6116f784611642613d62565b6116f285604051806060016040528060288152602001615c9a60289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006116a8613d62565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054614d1c9092919063ffffffff16565b613d6a565b600190509392505050565b600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166117c1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f6f6e6c7920416c6c6f776564000000000000000000000000000000000000000081525060200191505060405180910390fd5b81601581905550806016819055507fd3ea2152361892eead655aea58bd1995fd7f0d835972b2e816634f439d47c5923382604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001838152602001828103825260158152602001807f4e6577206d6178204665652c2062617365313030300000000000000000000000815250602001935050505060405180910390a17fd3ea2152361892eead655aea58bd1995fd7f0d835972b2e816634f439d47c5923383604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001838152602001828103825260158152602001807f4e6577206d696e204665652c2062617365313030300000000000000000000000815250602001935050505060405180910390a15050565b600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166119da576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f6f6e6c7920416c6c6f776564000000000000000000000000000000000000000081525060200191505060405180910390fd5b66470de4df82000081101580156119f957506702c68af0bb1400008111155b611a0257600080fd5b8060128190555050565b6000600560009054906101000a900460ff16905090565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611b08576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f6f6e6c7920416c6c6f776564000000000000000000000000000000000000000081525060200191505060405180910390fd5b806017819055507fd3ea2152361892eead655aea58bd1995fd7f0d835972b2e816634f439d47c5923382604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001838152602001828103825260188152602001807f4e6577206275726e4f6e537761702c2062617365313030300000000000000000815250602001935050505060405180910390a150565b6000611c5f611bc3613d62565b84611c5a8560016000611bd4613d62565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054614ddc90919063ffffffff16565b613d6a565b6001905092915050565b611c733382614e64565b50565b600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611d35576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f6f6e6c7920416c6c6f776564000000000000000000000000000000000000000081525060200191505060405180910390fd5b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611ddc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180615d2c602b913960400191505060405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611e5b57600080fd5b505afa158015611e6f573d6000803e3d6000fd5b505050506040513d6020811015611e8557600080fd5b810190808051906020019092919050505090508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015611f1f57600080fd5b505af1158015611f33573d6000803e3d6000fd5b505050506040513d6020811015611f4957600080fd5b8101908080519060200190929190505050505050565b600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661201e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f6f6e6c7920416c6c6f776564000000000000000000000000000000000000000081525060200191505060405180910390fd5b80600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f796ccbbf6eaf18b2e6c19c84a7823f32f939a3ffd42fd9f25e9971e3704c821833834284604051808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001806020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200183151515158152602001828103825260188152602001807f4e6577207573657220616c6c6f7765642f72656d6f76656400000000000000008152506020019550505050505060405180910390a15050565b60205481565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60215481565b600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661224e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f6f6e6c7920416c6c6f776564000000000000000000000000000000000000000081525060200191505060405180910390fd5b80600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f796ccbbf6eaf18b2e6c19c84a7823f32f939a3ffd42fd9f25e9971e3704c82183382426001604051808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001806020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200183151515158152602001828103825260118152602001807f4e657720556e69563220616464726573730000000000000000000000000000008152506020019550505050505060405180910390a150565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b601e60009054906101000a900460ff1681565b60146020528060005260406000206000915054906101000a900460ff1681565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b606060048054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156124da5780601f106124af576101008083540402835291602001916124da565b820191906000526020600020905b8154815290600101906020018083116124bd57829003601f168201915b5050505050905090565b6000601b548211612508576125056004601d54614ddc90919063ffffffff16565b90505b601b5482111561252b576125286002601d5461502890919063ffffffff16565b90505b601654811061253a5760165490505b60155481116125495760155490505b809050919050565b601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612610576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f546f6b656e206e6f7420737761707061626c650000000000000000000000000081525060200191505060405180910390fd5b601254341015612688576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f706c73206164642045544820696e20746865207061796c6f616400000000000081525060200191505060405180910390fd5b600081116126fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f43616e6e6f742073776170207a65726f20746f6b656e7300000000000000000081525060200191505060405180910390fd5b61279260328373ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561274957600080fd5b505afa15801561275d573d6000803e3d6000fd5b505050506040513d602081101561277357600080fd5b810190808051906020019092919050505061507290919063ffffffff16565b8111156128305761282d60328373ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156127e457600080fd5b505afa1580156127f8573d6000803e3d6000fd5b505050506040513d602081101561280e57600080fd5b810190808051906020019092919050505061507290919063ffffffff16565b90505b6128386150bc565b61284282826153b9565b600061284f3384846132df565b905061285b33826154b4565b6128636154c2565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663630b5ba16040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156128cd57600080fd5b505af11580156128e1573d6000803e3d6000fd5b505050507f796ccbbf6eaf18b2e6c19c84a7823f32f939a3ffd42fd9f25e9971e3704c82183384846001604051808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001806020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001848152602001831515151581526020018281038252600a8152602001807f546f6b656e2053776170000000000000000000000000000000000000000000008152506020019550505050505060405180910390a1601e600081819054906101000a900460ff168092919060010191906101000a81548160ff021916908360ff16021790555050601c54601e60009054906101000a900460ff1660ff1610612a7957612a34612a2f601f544261502890919063ffffffff16565b612d91565b6012819055506000601e60006101000a81548160ff021916908360ff160217905550612a6b601f544261502890919063ffffffff16565b60208190555042601f819055505b505050565b6000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612b67576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f6f6e6c7920416c6c6f776564000000000000000000000000000000000000000081525060200191505060405180910390fd5b80601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f796ccbbf6eaf18b2e6c19c84a7823f32f939a3ffd42fd9f25e9971e3704c821833834284604051808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001806020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001848152602001831515151581526020018281038252601c8152602001807f52756767656420546f6b656e20616c6c6f7765642f72656d6f766564000000008152506020019550505050505060405180910390a15050565b6000612d69612cb3613d62565b84612d6485604051806060016040528060258152602001615d7c6025913960016000612cdd613d62565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054614d1c9092919063ffffffff16565b613d6a565b6001905092915050565b6000612d87612d80613d62565b84846148ce565b6001905092915050565b60006020548211612dbb57612db8662386f26fc10000601254614ddc90919063ffffffff16565b90505b602054821115612de457612de1662386f26fc1000060125461502890919063ffffffff16565b90505b6702c68af0bb140000811115612e00576702c68af0bb14000090505b66470de4df820000811015612e1a5766470de4df82000090505b809050919050565b600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612ee1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f6f6e6c7920416c6c6f776564000000000000000000000000000000000000000081525060200191505060405180910390fd5b806021819055507fd3ea2152361892eead655aea58bd1995fd7f0d835972b2e816634f439d47c5923382604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001838152602001828103825260158152602001807f4e657720444654426f6f73742c20626173653130300000000000000000000000815250602001935050505060405180910390a150565b600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661304e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f6f6e6c7920416c6c6f776564000000000000000000000000000000000000000081525060200191505060405180910390fd5b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415613112576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f63616e6e6f74206275726e204c697175696469747920546f6b656e730000000081525060200191505060405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156131b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f63616e6e6f74206275726e207365636f6e64206368616e636520546f6b656e7381525060200191505060405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561323357600080fd5b505afa158015613247573d6000803e3d6000fd5b505050506040513d602081101561325d57600080fd5b810190808051906020019092919050505090508173ffffffffffffffffffffffffffffffffffffffff166342966c68826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b1580156132c357600080fd5b505af11580156132d7573d6000803e3d6000fd5b505050505050565b600060128373ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b15801561332957600080fd5b505afa15801561333d573d6000803e3d6000fd5b505050506040513d602081101561335357600080fd5b810190808051906020019092919050505060ff1611156133be576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180615d576025913960400191505060405180910390fd5b60008373ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561340657600080fd5b505afa15801561341a573d6000803e3d6000fd5b505050506040513d602081101561343057600080fd5b8101908080519060200190929190505050905060006134748261346669d3c21bcecceda1000000876155c490919063ffffffff16565b61507290919063ffffffff16565b9050600061356c670de0b6b3a7640000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a082318a6040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561352357600080fd5b505afa158015613537573d6000803e3d6000fd5b505050506040513d602081101561354d57600080fd5b810190808051906020019092919050505061507290919063ffffffff16565b905060215481111561357e5760215490505b613592606482614ddc90919063ffffffff16565b905061360460646135f6836135e869d3c21bcecceda10000006135da6103e86135cc670de0b6b3a76400008b6155c490919063ffffffff16565b6155c490919063ffffffff16565b61507290919063ffffffff16565b6155c490919063ffffffff16565b61507290919063ffffffff16565b93505050509392505050565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080601460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156136ea5760009050613714565b6137116103e861370385876155c490919063ffffffff16565b61507290919063ffffffff16565b90505b613727818561502890919063ffffffff16565b9150935093915050565b600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166137f0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f6f6e6c7920416c6c6f776564000000000000000000000000000000000000000081525060200191505060405180910390fd5b80600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160146000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f796ccbbf6eaf18b2e6c19c84a7823f32f939a3ffd42fd9f25e9971e3704c82183382426001604051808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001806020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200183151515158152602001828103825260108152602001807f4e6577204661726d2061646472657373000000000000000000000000000000008152506020019550505050505060405180910390a150565b60116020528060005260406000206000915054906101000a900460ff1681565b601d5481565b600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16613a78576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f6f6e6c7920416c6c6f776564000000000000000000000000000000000000000081525060200191505060405180910390fd5b80601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16613c02576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f6f6e6c7920416c6c6f776564000000000000000000000000000000000000000081525060200191505060405180910390fd5b80601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f796ccbbf6eaf18b2e6c19c84a7823f32f939a3ffd42fd9f25e9971e3704c821833834284604051808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001806020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200183151515158152602001828103825260148152602001807f4e6f4665652041646472657373206368616e67650000000000000000000000008152506020019550505050505060405180910390a15050565b601f5481565b6000601d54905090565b600080601554601654915091509091565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613df0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180615d086024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613e76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180615c316022913960400191505060405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600080600b5411613fda576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f526571756972657320696e7469616c697a6174696f6e2031737400000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561402957737a250d5630b4cf539739df2c5dacb4c659f2488d61402b565b825b600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156140ba57735c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f6140bc565b815b600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600073ffffffffffffffffffffffffffffffffffffffff16600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146141c0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f546f6b656e3a20706f6f6c20616c72656164792063726561746564000000000081525060200191505060405180910390fd5b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c9c65396600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561426657600080fd5b505afa15801561427a573d6000803e3d6000fd5b505050506040513d602081101561429057600080fd5b8101908080519060200190929190505050306040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b15801561433757600080fd5b505af115801561434b573d6000803e3d6000fd5b505050506040513d602081101561436157600080fd5b8101908080519060200190929190505050600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f796ccbbf6eaf18b2e6c19c84a7823f32f939a3ffd42fd9f25e9971e3704c821833600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426001604051808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001806020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200183151515158152602001828103825260148152602001807f556e6973776170205061697220437265617465640000000000000000000000008152506020019550505050505060405180910390a1600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905092915050565b6144f83369021e19e0c9bab240000061564a565b61450c3069021e19e0c9bab240000061564a565b60004790506000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156145a257600080fd5b505afa1580156145b6573d6000803e3d6000fd5b505050506040513d60208110156145cc57600080fd5b810190808051906020019092919050505090508073ffffffffffffffffffffffffffffffffffffffff1663d0e30db0846040518263ffffffff1660e01b81526004016000604051808303818588803b15801561462757600080fd5b505af115801561463b573d6000803e3d6000fd5b5050505050600047146146b6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f5472616e73666572204661696c6564000000000000000000000000000000000081525060200191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83856040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561473d57600080fd5b505af1158015614751573d6000803e3d6000fd5b505050506040513d602081101561476757600080fd5b81019080805190602001909291905050505061478c308361478730612377565b615811565b8173ffffffffffffffffffffffffffffffffffffffff16636a627842306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561480b57600080fd5b505af115801561481f573d6000803e3d6000fd5b505050506040513d602081101561483557600080fd5b810190808051906020019092919050505050600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156148b157600080fd5b505af11580156148c5573d6000803e3d6000fd5b50505050505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415614954576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180615ce36025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156149da576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180615bec6023913960400191505060405180910390fd5b614a1883614a1383604051806060016040528060268152602001615c5360269139614a0488612377565b614d1c9092919063ffffffff16565b615ad2565b506000811115614a55576018600081819054906101000a900460ff168092919060010191906101000a81548160ff021916908360ff160217905550505b614a6a81601954614ddc90919063ffffffff16565b601981905550600080614a808584601d5461368c565b915091506000811115614c0057614af5600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16614af083614ae2600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16612377565b614ddc90919063ffffffff16565b615ad2565b50600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633e158b0c6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015614b6057600080fd5b505af1158015614b74573d6000803e3d6000fd5b50505050600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35b614c2484614c1f84614c1188612377565b614ddc90919063ffffffff16565b615ad2565b508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3601c54601860009054906101000a900460ff1660ff1610614d15576000614cd0614cbf601a544261502890919063ffffffff16565b60195461507290919063ffffffff16565b9050614cdb816124e4565b601d819055506000601860006101000a81548160ff021916908360ff160217905550600060198190555042601a8190555080601b81905550505b5050505050565b6000838311158290614dc9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015614d8e578082015181840152602081019050614d73565b50505050905090810190601f168015614dbb5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b600080828401905083811015614e5a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415614eea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180615cc26021913960400191505060405180910390fd5b614ef682600083615b20565b614f6181604051806060016040528060228152602001615c0f602291396000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054614d1c9092919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614fb88160025461502890919063ffffffff16565b600281905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b600061506a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250614d1c565b905092915050565b60006150b483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250615b25565b905092915050565b6000479050600081106153b6576000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561515a57600080fd5b505afa15801561516e573d6000803e3d6000fd5b505050506040513d602081101561518457600080fd5b810190808051906020019092919050505090508073ffffffffffffffffffffffffffffffffffffffff1663d0e30db0846040518263ffffffff1660e01b81526004016000604051808303818588803b1580156151df57600080fd5b505af11580156151f3573d6000803e3d6000fd5b50505050506000471461526e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f5472616e73666572204661696c6564000000000000000000000000000000000081525060200191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83856040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156152f557600080fd5b505af1158015615309573d6000803e3d6000fd5b505050506040513d602081101561531f57600080fd5b810190808051906020019092919050505050600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561539b57600080fd5b505af11580156153af573d6000803e3d6000fd5b5050505050505b50565b8173ffffffffffffffffffffffffffffffffffffffff166323b872dd3330846040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b15801561547457600080fd5b505af1158015615488573d6000803e3d6000fd5b505050506040513d602081101561549e57600080fd5b8101908080519060200190929190505050505050565b6154be828261564a565b5050565b615540600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661553b6103e861552d60175461551f600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16612377565b6155c490919063ffffffff16565b61507290919063ffffffff16565b614e64565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156155aa57600080fd5b505af11580156155be573d6000803e3d6000fd5b50505050565b6000808314156155d75760009050615644565b60008284029050828482816155e857fe5b041461563f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180615c796021913960400191505060405180910390fd5b809150505b92915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156156ed576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f45524332303a206d696e7420746f20746865207a65726f20616464726573730081525060200191505060405180910390fd5b6156f960008383615b20565b61570e81600254614ddc90919063ffffffff16565b600281905550615765816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054614ddc90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415615897576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180615ce36025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561591d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180615bec6023913960400191505060405180910390fd5b615928838383615b20565b61599381604051806060016040528060268152602001615c53602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054614d1c9092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550615a26816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054614ddc90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b6000816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081905092915050565b505050565b60008083118290615bd1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015615b96578082015181840152602081019050615b7b565b50505050905090810190601f168015615bc35780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581615bdd57fe5b04905080915050939250505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737363616e6e6f742072656d6f7665204c697175696469747920546f6b656e73202d20554e5255474741424c454869676820646563696d616c732073686974636f696e73206e6f7420737570706f7274656445524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220cdf46ef7e3f4e9c7cfdacdfacb1b881da376c3d9b8637ee3b9a91fe01fea20ad64736f6c63430006060033
Deployed Bytecode Sourcemap
287:16669:3:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;9;2:12;1004:81:0;;5:9:-1;2:2;;;27:1;24;17:12;2:2;1004:81:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;1004:81:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;819:72:3;;5:9:-1;2:2;;;27:1;24;17:12;2:2;819:72:3;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3198:166:0;;5:9:-1;2:2;;;27:1;24;17:12;2:2;3198:166:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;3198:166:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;2246:932:3;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;2246:932:3;;;;;;;;;;;;;;;;;;;:::i;:::-;;15896:81;;5:9:-1;2:2;;;27:1;24;17:12;2:2;15896:81:3;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2047:98:0;;5:9:-1;2:2;;;27:1;24;17:12;2:2;2047:98:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;15797:89:3;;5:9:-1;2:2;;;27:1;24;17:12;2:2;15797:89:3;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3824:317:0;;5:9:-1;2:2;;;27:1;24;17:12;2:2;3824:317:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;3824:317:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;13521:297:3;;5:9:-1;2:2;;;27:1;24;17:12;2:2;13521:297:3;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;13521:297:3;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;14337:145;;5:9:-1;2:2;;;27:1;24;17:12;2:2;14337:145:3;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;14337:145:3;;;;;;;;;;;;;;;;;:::i;:::-;;1906:81:0;;5:9:-1;2:2;;;27:1;24;17:12;2:2;1906:81:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;794:19:3;;5:9:-1;2:2;;;27:1;24;17:12;2:2;794:19:3;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;13828:172;;5:9:-1;2:2;;;27:1;24;17:12;2:2;13828:172:3;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;13828:172:3;;;;;;;;;;;;;;;;;:::i;:::-;;4536:215:0;;5:9:-1;2:2;;;27:1;24;17:12;2:2;4536:215:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;4536:215:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;7938:87;;5:9:-1;2:2;;;27:1;24;17:12;2:2;7938:87:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;7938:87:0;;;;;;;;;;;;;;;;;:::i;:::-;;16608:341:3;;5:9:-1;2:2;;;27:1;24;17:12;2:2;16608:341:3;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;16608:341:3;;;;;;;;;;;;;;;;;;;:::i;:::-;;13305:206;;5:9:-1;2:2;;;27:1;24;17:12;2:2;13305:206:3;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;13305:206:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;5132:32;;5:9:-1;2:2;;;27:1;24;17:12;2:2;5132:32:3;;;:::i;:::-;;;;;;;;;;;;;;;;;;;649:41;;5:9:-1;2:2;;;27:1;24;17:12;2:2;649:41:3;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;14006:26;;5:9:-1;2:2;;;27:1;24;17:12;2:2;14006:26:3;;;:::i;:::-;;;;;;;;;;;;;;;;;;;14926:175;;5:9:-1;2:2;;;27:1;24;17:12;2:2;14926:175:3;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;14926:175:3;;;;;;;;;;;;;;;;;;;:::i;:::-;;2203:117:0;;5:9:-1;2:2;;;27:1;24;17:12;2:2;2203:117:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;2203:117:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;15494:77:3;;5:9:-1;2:2;;;27:1;24;17:12;2:2;15494:77:3;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;5068:23;;5:9:-1;2:2;;;27:1;24;17:12;2:2;5068:23:3;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1072:42;;5:9:-1;2:2;;;27:1;24;17:12;2:2;1072:42:3;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;1072:42:3;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;696:39;;5:9:-1;2:2;;;27:1;24;17:12;2:2;696:39:3;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1198:85:0;;5:9:-1;2:2;;;27:1;24;17:12;2:2;1198:85:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;1198:85:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12293:469:3;;5:9:-1;2:2;;;27:1;24;17:12;2:2;12293:469:3;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;12293:469:3;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;5176:1728;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;5176:1728:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;15404:85;;5:9:-1;2:2;;;27:1;24;17:12;2:2;15404:85:3;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;14491:209;;5:9:-1;2:2;;;27:1;24;17:12;2:2;14491:209:3;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;14491:209:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;5238:266:0;;5:9:-1;2:2;;;27:1;24;17:12;2:2;5238:266:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;5238:266:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;2681:172;;5:9:-1;2:2;;;27:1;24;17:12;2:2;2681:172:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;2681:172:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;11792:491:3;;5:9:-1;2:2;;;27:1;24;17:12;2:2;11792:491:3;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;11792:491:3;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;14038:289;;5:9:-1;2:2;;;27:1;24;17:12;2:2;14038:289:3;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;14038:289:3;;;;;;;;;;;;;;;;;:::i;:::-;;16125:478;;5:9:-1;2:2;;;27:1;24;17:12;2:2;16125:478:3;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;16125:478:3;;;;;;;;;;;;;;;;;;;:::i;:::-;;7225:1065;;5:9:-1;2:2;;;27:1;24;17:12;2:2;7225:1065:3;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;7225:1065:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;15987:104;;5:9:-1;2:2;;;27:1;24;17:12;2:2;15987:104:3;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;15987:104:3;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;746:26;;5:9:-1;2:2;;;27:1;24;17:12;2:2;746:26:3;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;12772:331;;5:9:-1;2:2;;;27:1;24;17:12;2:2;12772:331:3;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;12772:331:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;15106:195;;5:9:-1;2:2;;;27:1;24;17:12;2:2;15106:195:3;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;15106:195:3;;;;;;;;;;;;;;;;;;;:::i;:::-;;936:39;;5:9:-1;2:2;;;27:1;24;17:12;2:2;936:39:3;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;936:39:3;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1420:25;;5:9:-1;2:2;;;27:1;24;17:12;2:2;1420:25:3;;;:::i;:::-;;;;;;;;;;;;;;;;;;;15311:76;;5:9:-1;2:2;;;27:1;24;17:12;2:2;15311:76:3;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;15311:76:3;;;;;;;;;;;;;;;;;;;:::i;:::-;;2911:149:0;;5:9:-1;2:2;;;27:1;24;17:12;2:2;2911:149:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;2911:149:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;14705:215:3;;5:9:-1;2:2;;;27:1;24;17:12;2:2;14705:215:3;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;14705:215:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;5097:29;;5:9:-1;2:2;;;27:1;24;17:12;2:2;5097:29:3;;;:::i;:::-;;;;;;;;;;;;;;;;;;;15698:89;;5:9:-1;2:2;;;27:1;24;17:12;2:2;15698:89:3;;;:::i;:::-;;;;;;;;;;;;;;;;;;;15581:112;;5:9:-1;2:2;;;27:1;24;17:12;2:2;15581:112:3;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;1004:81:0;1041:13;1073:5;1066:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1004:81;:::o;819:72:3:-;;;;;;;;;;;;;:::o;3198:166:0:-;3281:4;3297:39;3306:12;:10;:12::i;:::-;3320:7;3329:6;3297:8;:39::i;:::-;3353:4;3346:11;;3198:166;;;;:::o;2246:932:3:-;1713:7;:19;1721:10;1713:19;;;;;;;;;;;;;;;;;;;;;;;;;1705:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2341:7:::1;2328:9;:20;;2320:46;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;2398:15;2376:19;:37;;;;2495:3;2481:11;:17;;;;2563:25;2582:1;2585:2;2563:18;:25::i;:::-;2617:16;2631:1;2617:13;:16::i;:::-;2696:6;2687;:15;;;;2760:10;;2747;:23;;;;2789:14;2797:5;2789:7;:14::i;:::-;2823:105;2841:42;2885;2823:17;:105::i;:::-;;3092:5;:3;:5::i;:::-;3116:55;3128:10;3158:12;3116:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;2246:932:::0;:::o;15896:81::-;15938:7;15964:6;;15957:13;;15896:81;:::o;2047:98:0:-;2100:7;2126:12;;2119:19;;2047:98;:::o;15797:89:3:-;15843:7;15869:10;;15862:17;;15797:89;:::o;3824:317:0:-;3930:4;3946:36;3956:6;3964:9;3975:6;3946:9;:36::i;:::-;3992:121;4001:6;4009:12;:10;:12::i;:::-;4023:89;4061:6;4023:89;;;;;;;;;;;;;;;;;:11;:19;4035:6;4023:19;;;;;;;;;;;;;;;:33;4043:12;:10;:12::i;:::-;4023:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;3992:8;:121::i;:::-;4130:4;4123:11;;3824:317;;;;;:::o;13521:297:3:-;1713:7;:19;1721:10;1713:19;;;;;;;;;;;;;;;;;;;;;;;;;1705:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13627:8:::1;13614:10;:21;;;;13658:8;13645:10;:21;;;;13685:58;13697:10;13734:8;13685:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;13753;13765:10;13802:8;13753:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;13521:297:::0;;:::o;14337:145::-;1713:7;:19;1721:10;1713:19;;;;;;;;;;;;;;;;;;;;;;;;;1705:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14421:6:::1;14410:7;:17;;:38;;;;;14442:6;14431:7;:17;;14410:38;14402:47;;12:1:-1;9::::0;2:12:::1;14402:47:3;14468:7;14459:6;:16;;;;14337:145:::0;:::o;1906:81:0:-;1947:5;1971:9;;;;;;;;;;;1964:16;;1906:81;:::o;794:19:3:-;;;;;;;;;;;;;:::o;13828:172::-;1713:7;:19;1721:10;1713:19;;;;;;;;;;;;;;;;;;;;;;;;;1705:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13912:9:::1;13899:10;:22;;;;13931:62;13943:10;13983:9;13931:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;13828:172:::0;:::o;4536:215:0:-;4624:4;4640:83;4649:12;:10;:12::i;:::-;4663:7;4672:50;4711:10;4672:11;:25;4684:12;:10;:12::i;:::-;4672:25;;;;;;;;;;;;;;;:34;4698:7;4672:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;4640:8;:83::i;:::-;4740:4;4733:11;;4536:215;;;;:::o;7938:87::-;7993:25;7999:10;8011:6;7993:5;:25::i;:::-;7938:87;:::o;16608:341:3:-;1713:7;:19;1721:10;1713:19;;;;;;;;;;;;;;;;;;;;;;;;;1705:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16706:11:::1;;;;;;;;;;;16689:28;;:13;:28;;;;16681:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16776:15;16801:13;16794:31;;;16834:4;16794:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;16794:46:3;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;16794:46:3;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;16794:46:3;;;;;;;;;;;;;;;;16776:64;;16857:13;16850:30;;;16881:10;16893:7;16850:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;16850:51:3;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;16850:51:3;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;16850:51:3;;;;;;;;;;;;;;;;;1759:1;16608:341:::0;:::o;13305:206::-;1713:7;:19;1721:10;1713:19;;;;;;;;;;;;;;;;;;;;;;;;;1705:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13404:5:::1;13384:7;:17;13392:8;13384:17;;;;;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;13419:85;13431:10;13471:8;13481:15;13498:5;13419:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;13305:206:::0;;:::o;5132:32::-;;;;:::o;649:41::-;;;;;;;;;;;;;:::o;14006:26::-;;;;:::o;14926:175::-;1713:7;:19;1721:10;1713:19;;;;;;;;;;;;;;;;;;;;;;;;;1705:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15003:6:::1;14989:11;;:20;;;;;;;;;;;;;;;;;;15019:75;15031:10;15064:6;15072:15;15089:4;15019:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;14926:175:::0;:::o;2203:117:0:-;2269:7;2295:9;:18;2305:7;2295:18;;;;;;;;;;;;;;;;2288:25;;2203:117;;;:::o;15494:77:3:-;15534:7;15560:4;;;;;;;;;;;15553:11;;15494:77;:::o;5068:23::-;;;;;;;;;;;;;:::o;1072:42::-;;;;;;;;;;;;;;;;;;;;;;:::o;696:39::-;;;;;;;;;;;;;:::o;1198:85:0:-;1237:13;1269:7;1262:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1198:85;:::o;12293:469:3:-;12357:16;12403:9;;12387:12;:25;12384:60;;12425:17;12440:1;12425:10;;:14;;:17;;;;:::i;:::-;12414:28;;12384:60;12503:9;;12488:12;:24;12485:59;;;12525:17;12540:1;12525:10;;:14;;:17;;;;:::i;:::-;12514:28;;12485:59;12626:10;;12614:8;:22;12611:51;;12650:10;;12639:21;;12611:51;12686:10;;12674:8;:22;12671:51;;12710:10;;12699:21;;12671:51;12747:8;12740:15;;12293:469;;;:::o;5176:1728::-;5275:7;:22;5283:13;5275:22;;;;;;;;;;;;;;;;;;;;;;;;;5267:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5352:6;;5339:9;:19;;5331:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5417:1;5407:7;:11;5399:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5550:43;5590:2;5557:13;5550:33;;;:35;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;5550:35:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5550:35:3;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;5550:35:3;;;;;;;;;;;;;;;;:39;;:43;;;;:::i;:::-;5540:7;:53;5537:123;;;5615:43;5655:2;5622:13;5615:33;;;:35;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;5615:35:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5615:35:3;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;5615:35:3;;;;;;;;;;;;;;;;:39;;:43;;;;:::i;:::-;5605:53;;5537:123;5746:14;:12;:14::i;:::-;5808:37;5822:13;5837:7;5808:13;:37::i;:::-;5904:15;5922:42;5929:10;5941:13;5956:7;5922:6;:42::i;:::-;5904:60;;5974:32;5986:10;5998:7;5974:11;:32::i;:::-;6064:13;:11;:13::i;:::-;6146:4;;;;;;;;;;;6140:27;;;:29;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;6140:29:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6140:29:3;;;;6222:67;6234:10;6260:13;6275:7;6284:4;6222:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6580:10;;:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6619:7;;6605:10;;;;;;;;;;;:21;;;6602:295;;6650:52;6666:35;6686:14;;6666:15;:19;;:35;;;;:::i;:::-;6650:15;:52::i;:::-;6641:6;:61;;;;6770:1;6757:10;;:14;;;;;;;;;;;;;;;;;;6805:35;6825:14;;6805:15;:19;;:35;;;;:::i;:::-;6785:17;:55;;;;6871:15;6854:14;:32;;;;6602:295;5176:1728;;;:::o;15404:85::-;15445:7;15471:11;;;;;;;;;;;15464:18;;15404:85;:::o;14491:209::-;1713:7;:19;1721:10;1713:19;;;;;;;;;;;;;;;;;;;;;;;;;1705:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14590:5:::1;14572:7;:15;14580:6;14572:15;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;14605:87;14617:10;14661:6;14669:15;14686:5;14605:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;14491:209:::0;;:::o;5238:266:0:-;5331:4;5347:129;5356:12;:10;:12::i;:::-;5370:7;5379:96;5418:15;5379:96;;;;;;;;;;;;;;;;;:11;:25;5391:12;:10;:12::i;:::-;5379:25;;;;;;;;;;;;;;;:34;5405:7;5379:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;5347:8;:129::i;:::-;5493:4;5486:11;;5238:266;;;;:::o;2681:172::-;2767:4;2783:42;2793:12;:10;:12::i;:::-;2807:9;2818:6;2783:9;:42::i;:::-;2842:4;2835:11;;2681:172;;;;:::o;11792:491:3:-;11867:15;11921:17;;11897:20;:41;11894:80;;11950:22;11961:10;11950:6;;:10;;:22;;;;:::i;:::-;11940:32;;11894:80;12009:17;;11986:20;:40;11983:79;;;12038:22;12049:10;12038:6;;:10;;:22;;;;:::i;:::-;12028:32;;11983:79;12112:9;12102:7;:19;12099:45;;;12133:9;12123:19;;12099:45;12209:10;12199:7;:20;12196:47;;;12231:10;12221:20;;12196:47;12269:7;12262:14;;11792:491;;;:::o;14038:289::-;1713:7;:19;1721:10;1713:19;;;;;;;;;;;;;;;;;;;;;;;;;1705:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14127:15:::1;14113:11;:29;;;;14254:65;14266:10;14303:15;14254:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;14038:289:::0;:::o;16125:478::-;1713:7;:19;1721:10;1713:19;;;;;;;;;;;;;;;;;;;;;;;;;1705:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16280:11:::1;;;;;;;;;;;16263:28;;:13;:28;;;;16255:69;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;16367:4;16342:30;;:13;:30;;;;16334:75;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;16436:15;16461:13;16454:31;;;16494:4;16454:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;16454:46:3;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;16454:46:3;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;16454:46:3;;;;;;;;;;;;;;;;16436:64;;16516:13;16510:25;;;16536:7;16510:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;16510:34:3;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;16510:34:3;;;;1759:1;16125:478:::0;:::o;7225:1065::-;7319:7;7380:2;7351:13;7345:29;;;:31;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;7345:31:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7345:31:3;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;7345:31:3;;;;;;;;;;;;;;;;:37;;;;7337:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7443:18;7471:13;7465:32;;;:34;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;7465:34:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7465:34:3;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;7465:34:3;;;;;;;;;;;;;;;;7443:56;;7509:19;7531:33;7553:10;7531:17;7543:4;7531:7;:11;;:17;;;;:::i;:::-;:21;;:33;;;;:::i;:::-;7509:55;;7881:17;7901:41;7937:4;7908:3;;;;;;;;;;;7901:21;;;7923:8;7901:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;7901:31:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7901:31:3;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;7901:31:3;;;;;;;;;;;;;;;;:35;;:41;;;;:::i;:::-;7881:61;;7991:11;;7979:9;:23;7976:53;;;8016:11;;8004:23;;7976:53;8053:18;8067:3;8053:9;:13;;:18;;;;:::i;:::-;8041:30;;8143:65;8204:3;8143:56;8189:9;8143:41;8179:4;8143:31;8169:4;8143:21;8159:4;8143:11;:15;;:21;;;;:::i;:::-;:25;;:31;;;;:::i;:::-;:35;;:41;;;;:::i;:::-;:45;;:56;;;;:::i;:::-;:60;;:65;;;;:::i;:::-;8136:72;;;;;7225:1065;;;;;:::o;15987:104::-;16044:4;16067:7;:17;16075:8;16067:17;;;;;;;;;;;;;;;;;;;;;;;;;16060:24;;15987:104;;;:::o;746:26::-;;;;;;;;;;;;;:::o;12772:331::-;12874:17;12893:11;12918:9;:17;12928:6;12918:17;;;;;;;;;;;;;;;;;;;;;;;;;12915:145;;;12945:1;12939:7;;12915:145;;;13028:30;13053:4;13028:20;13039:8;13028:6;:10;;:20;;;;:::i;:::-;:24;;:30;;;;:::i;:::-;13022:36;;12915:145;13081:15;13092:3;13081:6;:10;;:15;;;;:::i;:::-;13069:27;;12772:331;;;;;;:::o;15106:195::-;1713:7;:19;1721:10;1713:19;;;;;;;;;;;;;;;;;;;;;;;;;1705:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15174:5:::1;15167:4;;:12;;;;;;;;;;;;;;;;;;15207:4;15189:9;:15;15199:4;;;;;;;;;;;15189:15;;;;;;;;;;;;;;;;:22;;;;;;;;;;;;;;;;;;15221:73;15233:10;15265:5;15272:15;15289:4;15221:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;15106:195:::0;:::o;936:39::-;;;;;;;;;;;;;;;;;;;;;;:::o;1420:25::-;;;;:::o;15311:76::-;1713:7;:19;1721:10;1713:19;;;;;;;;;;;;;;;;;;;;;;;;;1705:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15376:4:::1;15370:3;;:10;;;;;;;;;;;;;;;;;;15311:76:::0;:::o;2911:149:0:-;3000:7;3026:11;:18;3038:5;3026:18;;;;;;;;;;;;;;;:27;3045:7;3026:27;;;;;;;;;;;;;;;;3019:34;;2911:149;;;;:::o;14705:215:3:-;1713:7;:19;1721:10;1713:19;;;;;;;;;;;;;;;;;;;;;;;;;1705:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14808:5:::1;14786:9;:19;14796:8;14786:19;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;14823:81;14835:10;14871:8;14881:15;14898:5;14823:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;14705:215:::0;;:::o;5097:29::-;;;;:::o;15698:89::-;15744:7;15770:10;;15763:17;;15698:89;:::o;15581:112::-;15627:7;15636;15663:10;;15675;;15655:31;;;;15581:112;;:::o;13675:104:2:-;13728:15;13762:10;13755:17;;13675:104;:::o;8450:340:0:-;8568:1;8551:19;;:5;:19;;;;8543:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8648:1;8629:21;;:7;:21;;;;8621:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8730:6;8700:11;:18;8712:5;8700:18;;;;;;;;;;;;;;;:27;8719:7;8700:27;;;;;;;;;;;;;;;:36;;;;8767:7;8751:32;;8760:5;8751:32;;;8776:6;8751:32;;;;;;;;;;;;;;;;;;8450:340;;;:::o;3257:731:3:-;3335:7;3384:1;3362:19;;:23;3354:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3490:1;3472:20;;:6;:20;;;;:74;;3504:42;3472:74;;;3495:6;3472:74;3435:15;;:112;;;;;;;;;;;;;;;;;;3611:1;3592:21;;:7;:21;;;;:76;;3626:42;3592:76;;;3616:7;3592:76;3557:14;;:112;;;;;;;;;;;;;;;;;;3711:1;3688:25;;:11;;;;;;;;;;;:25;;;3680:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3778:14;;;;;;;;;;;:25;;;3812:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;3812:22:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3812:22:3;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;3812:22:3;;;;;;;;;;;;;;;;3844:4;3778:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;3778:72:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3778:72:3;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;3778:72:3;;;;;;;;;;;;;;;;3764:11;;:86;;;;;;;;;;;;;;;;;;3860:83;3872:10;3908:11;;;;;;;;;;;3921:15;3938:4;3860:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3969:11;;;;;;;;;;;3962:18;;3257:731;;;;:::o;3998:901::-;4032:37;4044:10;4056:12;4032:11;:37::i;:::-;4130:40;4150:4;4157:12;4130:11;:40::i;:::-;4245:15;4263:21;4245:39;;4295:19;4332:11;;;;;;;;;;;4295:49;;4382:12;4397:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;4397:22:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4397:22:3;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;4397:22:3;;;;;;;;;;;;;;;;4382:37;;4435:4;4429:19;;;4457:7;4429:38;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;4429:38:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4429:38:3;;;;;4545:1;4520:21;:26;4512:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4583:4;4577:20;;;4606:4;4612:7;4577:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;4577:43:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4577:43:3;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;4577:43:3;;;;;;;;;;;;;;;;;4674:71;4698:4;4713;4720:24;4738:4;4720:9;:24::i;:::-;4674:15;:71::i;:::-;4755:4;:9;;;4773:4;4755:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;4755:24:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4755:24:3;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;4755:24:3;;;;;;;;;;;;;;;;;4873:11;;;;;;;;;;;4858:32;;;:34;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;4858:34:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4858:34:3;;;;3998:901;;;:::o;9777:1577::-;9910:1;9892:20;;:6;:20;;;;9884:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9993:1;9972:23;;:9;:23;;;;9964:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10127:91;10138:6;10146:71;10168:6;10146:71;;;;;;;;;;;;;;;;;:17;10156:6;10146:9;:17::i;:::-;:21;;:71;;;;;:::i;:::-;10127:10;:91::i;:::-;;10284:1;10275:6;:10;10272:26;;;10287:7;;:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10272:26;10318:20;10331:6;10318:8;;:12;;:20;;;;:::i;:::-;10307:8;:31;;;;10390:16;10408:13;10425:49;10447:6;10455;10463:10;;10425:21;:49::i;:::-;10389:85;;;;10535:1;10527:5;:9;10524:189;;;10551:44;10562:4;;;;;;;;;;;10568:26;10588:5;10568:15;10578:4;;;;;;;;;;;10568:9;:15::i;:::-;:19;;:26;;;;:::i;:::-;10551:10;:44::i;:::-;;10615:4;;;;;;;;;;;10609:25;;;:27;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;10609:27:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;10609:27:3;;;;10690:4;;;;;;;;;;;10673:29;;10682:6;10673:29;;;10696:5;10673:29;;;;;;;;;;;;;;;;;;10524:189;10808:57;10819:9;10830:34;10855:8;10830:20;10840:9;10830;:20::i;:::-;:24;;:34;;;;:::i;:::-;10808:10;:57::i;:::-;;10897:9;10880:37;;10889:6;10880:37;;;10908:8;10880:37;;;;;;;;;;;;;;;;;;11008:7;;10997;;;;;;;;;;;:18;;;10994:346;;11039:20;11062:53;11076:37;11096:16;;11076:15;:19;;:37;;;;:::i;:::-;11062:8;;:12;;:53;;;;:::i;:::-;11039:76;;11169:26;11182:12;11169;:26::i;:::-;11156:10;:39;;;;11228:1;11218:7;;:11;;;;;;;;;;;;;;;;;;11242:1;11231:8;:12;;;;11276:15;11257:16;:34;;;;11317:12;11305:9;:24;;;;10994:346;;9777:1577;;;;;:::o;1730:187:2:-;1816:7;1848:1;1843;:6;;1851:12;1835:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;1835:29:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1874:9;1890:1;1886;:5;1874:17;;1909:1;1902:8;;;1730:187;;;;;:::o;832:176::-;890:7;909:9;925:1;921;:5;909:17;;949:1;944;:6;;936:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1000:1;993:8;;;832:176;;;;:::o;7518:410:0:-;7620:1;7601:21;;:7;:21;;;;7593:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7671:49;7692:7;7709:1;7713:6;7671:20;:49::i;:::-;7752:68;7775:6;7752:68;;;;;;;;;;;;;;;;;:9;:18;7762:7;7752:18;;;;;;;;;;;;;;;;:22;;:68;;;;;:::i;:::-;7731:9;:18;7741:7;7731:18;;;;;;;;;;;;;;;:89;;;;7845:24;7862:6;7845:12;;:16;;:24;;;;:::i;:::-;7830:12;:39;;;;7910:1;7884:37;;7893:7;7884:37;;;7914:6;7884:37;;;;;;;;;;;;;;;;;;7518:410;;:::o;1272:134:2:-;1330:7;1356:43;1360:1;1363;1356:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1349:50;;1272:134;;;;:::o;3071:130::-;3129:7;3155:39;3159:1;3162;3155:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;3148:46;;3071:130;;;;:::o;8466:567:3:-;8509:15;8527:21;8509:39;;8582:1;8571:7;:12;8568:459;;8598:19;8635:11;;;;;;;;;;;8598:49;;8697:12;8712:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;8712:22:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8712:22:3;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;8712:22:3;;;;;;;;;;;;;;;;8697:37;;8754:4;8748:19;;;8776:7;8748:38;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;8748:38:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8748:38:3;;;;;8876:1;8851:21;:26;8843:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8918:4;8912:20;;;8941:4;8947:7;8912:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;8912:43:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8912:43:3;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;8912:43:3;;;;;;;;;;;;;;;;;8997:11;;;;;;;;;;;8982:32;;;:34;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;8982:34:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8982:34:3;;;;8568:459;;;8466:567;:::o;9076:158::-;9164:13;9158:33;;;9192:10;9212:4;9219:7;9158:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;9158:69:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9158:69:3;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;9158:69:3;;;;;;;;;;;;;;;;;9076:158;;:::o;9244:116::-;9321:32;9333:10;9345:7;9321:11;:32::i;:::-;9244:116;;:::o;9370:200::-;9412:74;9424:11;;;;;;;;;;;9437:48;9480:4;9437:38;9464:10;;9437:22;9447:11;;;;;;;;;;;9437:9;:22::i;:::-;:26;;:38;;;;:::i;:::-;:42;;:48;;;;:::i;:::-;9412:11;:74::i;:::-;9544:11;;;;;;;;;;;9529:32;;;:34;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;9529:34:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9529:34:3;;;;9370:200::o;2157:459:2:-;2215:7;2461:1;2456;:6;2452:45;;;2485:1;2478:8;;;;2452:45;2507:9;2523:1;2519;:5;2507:17;;2551:1;2546;2542;:5;;;;;;:10;2534:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2608:1;2601:8;;;2157:459;;;;;:::o;6829:370:0:-;6931:1;6912:21;;:7;:21;;;;6904:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6980:49;7009:1;7013:7;7022:6;6980:20;:49::i;:::-;7055:24;7072:6;7055:12;;:16;;:24;;;;:::i;:::-;7040:12;:39;;;;7110:30;7133:6;7110:9;:18;7120:7;7110:18;;;;;;;;;;;;;;;;:22;;:30;;;;:::i;:::-;7089:9;:18;7099:7;7089:18;;;;;;;;;;;;;;;:51;;;;7176:7;7155:37;;7172:1;7155:37;;;7185:6;7155:37;;;;;;;;;;;;;;;;;;6829:370;;:::o;6000:530::-;6123:1;6105:20;;:6;:20;;;;6097:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6206:1;6185:23;;:9;:23;;;;6177:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6259:47;6280:6;6288:9;6299:6;6259:20;:47::i;:::-;6337:71;6359:6;6337:71;;;;;;;;;;;;;;;;;:9;:17;6347:6;6337:17;;;;;;;;;;;;;;;;:21;;:71;;;;;:::i;:::-;6317:9;:17;6327:6;6317:17;;;;;;;;;;;;;;;:91;;;;6441:32;6466:6;6441:9;:20;6451:9;6441:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;6418:9;:20;6428:9;6418:20;;;;;;;;;;;;;;;:55;;;;6505:9;6488:35;;6497:6;6488:35;;;6516:6;6488:35;;;;;;;;;;;;;;;;;;6000:530;;;:::o;2325:148::-;2395:7;2436:6;2415:9;:18;2425:7;2415:18;;;;;;;;;;;;;;;:27;;;;2460:6;2453:13;;2325:148;;;;:::o;9788:92::-;;;;:::o;3716:338:2:-;3802:7;3899:1;3895;:5;3902:12;3887:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;3887:28:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3925:9;3941:1;3937;:5;;;;;;3925:17;;4046:1;4039:8;;;3716:338;;;;;:::o
Swarm Source
ipfs://cdf46ef7e3f4e9c7cfdacdfacb1b881da376c3d9b8637ee3b9a91fe01fea20ad
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.