ERC-20
Overview
Max Total Supply
4,833,757.556930467226586409 Sandwich
Holders
146
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
3,178,439.54849830356363329 SandwichValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
Sandwich
Compiler Version
v0.8.19+commit.7dd6d404
Optimization Enabled:
No with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT //https://sandwich.bot/ //https://twitter.com/SandwichERC20 //https://t.me/SandwichChat //https://archives.sandwich.bot/ pragma solidity 0.8.19; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } } library SafeMath { function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "addition overflow"); return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "subtraction overflow"); } function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, " multiplication overflow"); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "division by zero"); } function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; return c; } } contract Ownable is Context { address private _owner; event OwnershipTransferred( address indexed previousOwner, address indexed newOwner ); constructor() payable { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } function owner() public view returns (address) { return _owner; } modifier onlyOwner() { require(_owner == _msgSender(), "caller is not the owner"); _; } function transferOwnership(address newOwner) public onlyOwner { require(newOwner != address(0), "new owner is zero address"); _owner = newOwner; emit OwnershipTransferred(_owner, newOwner); } function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } } interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer( address recipient, uint256 amount ) external returns (bool); function allowance( address owner, address spender ) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval( address indexed owner, address indexed spender, uint256 value ); } interface IUniswapV2Factory { function createPair( address tokenA, address tokenB ) external returns (address pair); } interface IUniswapV2Router02 { function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; } contract Sandwich is Context, IERC20, Ownable { using SafeMath for uint256; mapping(address => uint256) private _balance; mapping(address => bool) private _isExcludedWallet; mapping(address => mapping(address => uint256)) private _allowances; uint8 private constant _decimals = 18; uint256 private _totalSupply = 5_000_000 * 10 ** _decimals; string private constant _name = "Sandwich"; string private constant _symbol = "Sandwich"; uint256 public buyFee = 10; uint256 public sellFee = 10; uint256 public maxAmountPerTx = (_totalSupply * 1) / 100; uint256 public maxAmountPerWallet = (_totalSupply * 1) / 100; uint256 public phoenixPercent = 20; uint256 private maxSwapTokenAmount = 250_000 * 10 ** _decimals; IUniswapV2Router02 private constant uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); address public uniswapV2Pair; address public stakingWallet; address payable private taxWallet; address payable private phoenixWallet; address payable private devWallet1; address payable private devWallet2; bool private swapEnabled = false; bool private inSwapAndLiquify = false; modifier lockTheSwap() { inSwapAndLiquify = true; _; inSwapAndLiquify = false; } constructor( address owner, address _taxWallet, address _phoenixWallet ) payable { taxWallet = payable(_taxWallet); phoenixWallet = payable(_phoenixWallet); devWallet1 = payable(0xb5ef669ffB567d9fc6dBa54934fcf8618Edc003d); devWallet2 = payable(0xDb26CD2AB5968e7189201e50F332b80d1f9e2efc); address cexWallet = 0xbE51c0Aa0Fe35A16bDD1dB48c8Ef335B518c7912; stakingWallet = 0x687d8E292CecA0cB77d71490ed9682ccba71E27C; _isExcludedWallet[_msgSender()] = true; _isExcludedWallet[address(this)] = true; _isExcludedWallet[taxWallet] = true; _isExcludedWallet[phoenixWallet] = true; _isExcludedWallet[devWallet1] = true; _isExcludedWallet[devWallet2] = true; _isExcludedWallet[owner] = true; _mint(_msgSender(), _totalSupply); _transfer(_msgSender(), stakingWallet, _totalSupply.mul(11).div(100)); _transfer(_msgSender(), cexWallet, _totalSupply.mul(9).div(100)); _approve(address(this), address(uniswapV2Router), type(uint256).max); uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair( address(this), uniswapV2Router.WETH() ); IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max); } function name() public pure returns (string memory) { return _name; } function symbol() public pure returns (string memory) { return _symbol; } function decimals() public pure returns (uint8) { return _decimals; } function totalSupply() public view override returns (uint256) { return _totalSupply; } function balanceOf(address account) public view override returns (uint256) { return _balance[account]; } function transfer( address recipient, uint256 amount ) public override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance( address owner, address spender ) public view override returns (uint256) { return _allowances[owner][spender]; } function approve( address spender, uint256 amount ) public override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom( address sender, address recipient, uint256 amount ) public override returns (bool) { _transfer(sender, recipient, amount); _approve( sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "low allowance") ); return true; } function _approve(address owner, address spender, uint256 amount) private { require( owner != address(0) && spender != address(0), "approve zero address" ); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _transfer(address from, address to, uint256 amount) private { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); require(amount > 0, "Transfer amount must be greater than zero"); uint256 _tax = 0; if (from != owner() && to != owner()) { require(swapEnabled, "Trading is not allowed"); } if (!_isExcludedWallet[from] && !_isExcludedWallet[to]) { if (from == uniswapV2Pair && to != address(uniswapV2Router)) { require( _balance[to] + amount <= maxAmountPerWallet || maxAmountPerWallet == 0, "Exceed max amount per wallet" ); require( amount <= maxAmountPerTx || maxAmountPerTx == 0, "Exceed max amount per tx" ); _tax = buyFee; } else if (to == uniswapV2Pair) { require( amount <= maxAmountPerTx || maxAmountPerTx == 0, "Exceed max amount per tx" ); _tax = sellFee; } else { _tax = 0; } } uint256 taxAmount = amount.mul( _tax).div(100); uint256 transferAmount = amount.sub(taxAmount); _balance[from] = _balance[from].sub(amount); _balance[address(this)] = _balance[address(this)] + taxAmount; uint256 cAmount = _balance[address(this)]; if ( !inSwapAndLiquify && from != uniswapV2Pair && to == uniswapV2Pair && swapEnabled ) { if (cAmount >= maxSwapTokenAmount) { swapTokensForEth(cAmount); uint256 ethBalance = address(this).balance; if (ethBalance > 0) { sendETHToFee(ethBalance); } } } _balance[to] = _balance[to] + transferAmount; if (taxAmount > 0) { emit Transfer(from, address(this), taxAmount); } emit Transfer(from, to, transferAmount); } function _mint(address to, uint256 amount) private { _balance[to] = amount; emit Transfer(address(0), to, amount); } function swapTokensForEth(uint256 _tokenAmount) private lockTheSwap { address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( _tokenAmount, 0, path, address(this), block.timestamp ); } function buyBackAndBurn() public payable { address[] memory path = new address[](2); path[0] = uniswapV2Router.WETH(); path[1] = address(this); uniswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{ value: msg.value }(0, path, _msgSender(), block.timestamp); uint256 burnAmount = _balance[_msgSender()]; _burn(_msgSender(), burnAmount); } function burn(uint256 value) public { _burn(msg.sender, value); } function _burn(address account, uint256 value) internal { require(_balance[account] >= value, "Invalid amount"); unchecked { _totalSupply -= value; _balance[account] -= value; } emit Transfer(account, address(0), value); } function sendETHToFee(uint256 _amount) private { uint256 phoenixAmount = (_amount * phoenixPercent) / 100; uint256 feeAmount = _amount.sub(phoenixAmount); phoenixWallet.transfer(phoenixAmount); devWallet1.transfer(feeAmount * 19 / 100); devWallet2.transfer(feeAmount * 31 / 100); taxWallet.transfer(feeAmount * 50 / 100); } function manualSwap() external { require( _msgSender() == owner() || _msgSender() == taxWallet || _msgSender() == devWallet1 || _msgSender() == devWallet2, "Invalid permission" ); uint256 tokenBalance = _balance[address(this)]; if (tokenBalance > 0) { swapTokensForEth(tokenBalance); } uint256 ethBalance = address(this).balance; if (ethBalance > 0) { sendETHToFee(ethBalance); } } function openTrading() public onlyOwner { require(!swapEnabled, "token is already enabled for trading"); swapEnabled = true; } function _setFee(uint256 _buyFee, uint256 _sellFee) private { buyFee = _buyFee; sellFee = _sellFee; } function _setMaxAmountPerTx(uint256 _maxAmountPerTx) private { maxAmountPerTx = _maxAmountPerTx; } function _setMaxAmountPerWallet(uint256 _maxAmountPerWallet) private { maxAmountPerWallet = _maxAmountPerWallet; } function _setMaxSwapTokenAmount(uint256 _maxSwapTokenAmount) private { maxSwapTokenAmount = _maxSwapTokenAmount; } function _setPhoenixPercent(uint256 _phoenixPercent) private { phoenixPercent = _phoenixPercent; } function setFee(uint256 _buyFee, uint256 _sellFee) external { require( _msgSender() == owner() || _msgSender() == taxWallet || _msgSender() == devWallet1 || _msgSender() == devWallet2, "Invalid permission" ); require(_buyFee <= 5 && _sellFee <=5, "limited to 5 percent" ); _setFee(_buyFee, _sellFee); } function setMaxAmountPerTx(uint256 _maxAmountPerTx) external onlyOwner { require (_maxAmountPerTx >= _totalSupply.mul(5).div(1000), "maxTx is limited to 0.5%"); _setMaxAmountPerTx(_maxAmountPerTx); } function setMaxAmountPerWallet( uint256 _maxAmountPerWallet ) external onlyOwner { require (_maxAmountPerWallet >= _totalSupply.mul(5).div(1000), "maxWallet is limited to 0.5%"); _setMaxAmountPerWallet(_maxAmountPerWallet); } function setPhoenixPercent(uint256 _phoenixPercent) external { require( _msgSender() == owner() || _msgSender() == phoenixWallet, "Invalid permission" ); _setPhoenixPercent(_phoenixPercent); } function setMaxSwapTokenAmount( uint256 _maxSwapTokenAmount ) external { require( _msgSender() == owner() || _msgSender() == taxWallet || _msgSender() == devWallet1 || _msgSender() == devWallet2, "Invalid permission" ); _setMaxSwapTokenAmount(_maxSwapTokenAmount); } function setTaxWallet(address _taxWallet) external onlyOwner { taxWallet = payable(_taxWallet); } function setPhoenixWallet(address _phoenixWallet) external onlyOwner { phoenixWallet = payable(_phoenixWallet); } function setDevWallet1(address _devWallet) external { require(_msgSender() == devWallet1); devWallet1 = payable(_devWallet); } function setDevWallet2(address _devWallet) external { require(_msgSender() == devWallet2); devWallet2 = payable(_devWallet); } receive() external payable {} } contract Factory is Context, Ownable { Sandwich public sandwich; IUniswapV2Router02 private constant uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); event SandwichTokenDeployed(address tokenAddress); constructor(address _taxWallet, address _phoenixWallet) payable { sandwich = new Sandwich(_msgSender(), _taxWallet, _phoenixWallet); // creating new contract inside another parent contract emit SandwichTokenDeployed(address(sandwich)); sandwich.approve(address(uniswapV2Router), type(uint256).max); uniswapV2Router.addLiquidityETH{value: msg.value}( address(sandwich), sandwich.balanceOf(address(this)), 0, 0, _msgSender(), block.timestamp ); sandwich.transferOwnership(_msgSender()); } }
{ "optimizer": { "enabled": false, "runs": 200 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"_taxWallet","type":"address"},{"internalType":"address","name":"_phoenixWallet","type":"address"}],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":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":[{"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":"value","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"buyBackAndBurn","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"buyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxAmountPerTx","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxAmountPerWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"phoenixPercent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_devWallet","type":"address"}],"name":"setDevWallet1","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_devWallet","type":"address"}],"name":"setDevWallet2","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buyFee","type":"uint256"},{"internalType":"uint256","name":"_sellFee","type":"uint256"}],"name":"setFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxAmountPerTx","type":"uint256"}],"name":"setMaxAmountPerTx","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxAmountPerWallet","type":"uint256"}],"name":"setMaxAmountPerWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxSwapTokenAmount","type":"uint256"}],"name":"setMaxSwapTokenAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_phoenixPercent","type":"uint256"}],"name":"setPhoenixPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_phoenixWallet","type":"address"}],"name":"setPhoenixWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_taxWallet","type":"address"}],"name":"setTaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"stakingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040526012600a62000014919062001e08565b624c4b4062000024919062001e59565b600455600a600555600a6006556064600160045462000044919062001e59565b62000050919062001ed3565b6007556064600160045462000066919062001e59565b62000072919062001ed3565b60085560146009556012600a6200008a919062001e08565b6203d0906200009a919062001e59565b600a556000601060146101000a81548160ff0219169083151502179055506000601060156101000a81548160ff0219169083151502179055506040516200658c3803806200658c8339818101604052810190620000f8919062001f75565b60006200010a62000a1a60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35081600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073b5ef669ffb567d9fc6dba54934fcf8618edc003d600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073db26cd2ab5968e7189201e50f332b80d1f9e2efc601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600073be51c0aa0fe35a16bdd1db48c8ef335b518c7912905073687d8e292ceca0cb77d71490ed9682ccba71e27c600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600260006200035862000a1a60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160026000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160026000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160026000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160026000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620006646200065562000a1a60201b60201c565b60045462000a2260201b60201c565b620006d46200067862000a1a60201b60201c565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16620006c86064620006b9600b60045462000ad260201b90919060201c565b62000b5560201b90919060201c565b62000ba760201b60201c565b62000722620006e862000a1a60201b60201c565b8262000716606462000707600960045462000ad260201b90919060201c565b62000b5560201b90919060201c565b62000ba760201b60201c565b6200076930737a250d5630b4cf539739df2c5dacb4c659f2488d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6200150b60201b60201c565b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620007c9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620007ef919062001fd1565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200086b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000891919062001fd1565b6040518363ffffffff1660e01b8152600401620008b092919062002014565b6020604051808303816000875af1158015620008d0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620008f6919062001fd1565b600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3737a250d5630b4cf539739df2c5dacb4c659f2488d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401620009c992919062002052565b6020604051808303816000875af1158015620009e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000a0f9190620020bc565b50505050506200281e565b600033905090565b80600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000ac69190620020ee565b60405180910390a35050565b600080830362000ae6576000905062000b4f565b6000828462000af6919062001e59565b905082848262000b07919062001ed3565b1462000b4a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000b41906200216c565b60405180910390fd5b809150505b92915050565b600062000b9f83836040518060400160405280601081526020017f6469766973696f6e206279207a65726f00000000000000000000000000000000815250620016a560201b60201c565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160362000c19576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000c109062002204565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000c8b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000c82906200229c565b60405180910390fd5b6000811162000cd1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000cc89062002334565b60405180910390fd5b600062000ce36200170d60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801562000d5a575062000d2a6200170d60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1562000db357601060149054906101000a900460ff1662000db2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000da990620023a6565b60405180910390fd5b5b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801562000e585750600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15620010c357600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614801562000efc5750737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15620010055760085482600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205462000f529190620023c8565b11158062000f6257506000600854145b62000fa4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000f9b9062002453565b60405180910390fd5b6007548211158062000fb857506000600754145b62000ffa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000ff190620024c5565b60405180910390fd5b6005549050620010c2565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603620010bc57600754821115806200106f57506000600754145b620010b1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620010a890620024c5565b60405180910390fd5b6006549050620010c1565b600090505b5b5b6000620010ef6064620010e0848662000ad260201b90919060201c565b62000b5560201b90919060201c565b905060006200110882856200173660201b90919060201c565b90506200115e84600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546200173660201b90919060201c565b600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054620011ee9190620023c8565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050601060159054906101000a900460ff16158015620012e15750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614155b80156200133b5750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16145b8015620013545750601060149054906101000a900460ff165b156200139957600a548110620013985762001375816200178860201b60201c565b6000479050600081111562001396576200139581620019c960201b60201c565b5b505b5b81600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054620013e69190620023c8565b600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060008311156200149b573073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051620014929190620020ee565b60405180910390a35b8573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051620014fa9190620020ee565b60405180910390a350505050505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015620015765750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b620015b8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620015af9062002537565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051620016989190620020ee565b60405180910390a3505050565b60008083118290620016ef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620016e69190620025e2565b60405180910390fd5b506000838562001700919062001ed3565b9050809150509392505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60006200178083836040518060400160405280601481526020017f7375627472616374696f6e206f766572666c6f7700000000000000000000000081525062001c0560201b60201c565b905092915050565b6001601060156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115620017c357620017c262002606565b5b604051908082528060200260200182016040528015620017f25781602001602082028036833780820191505090505b50905030816000815181106200180d576200180c62002635565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620018a7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620018cd919062001fd1565b81600181518110620018e457620018e362002635565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401620019769594939291906200277f565b600060405180830381600087803b1580156200199157600080fd5b505af1158015620019a6573d6000803e3d6000fd5b50505050506000601060156101000a81548160ff02191690831515021790555050565b6000606460095483620019dd919062001e59565b620019e9919062001ed3565b9050600062001a0282846200173660201b90919060201c565b9050600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f1935050505015801562001a6d573d6000803e3d6000fd5b50600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc606460138462001abb919062001e59565b62001ac7919062001ed3565b9081150290604051600060405180830381858888f1935050505015801562001af3573d6000803e3d6000fd5b50601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6064601f8462001b41919062001e59565b62001b4d919062001ed3565b9081150290604051600060405180830381858888f1935050505015801562001b79573d6000803e3d6000fd5b50600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc606460328462001bc7919062001e59565b62001bd3919062001ed3565b9081150290604051600060405180830381858888f1935050505015801562001bff573d6000803e3d6000fd5b50505050565b600083831115829062001c50576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162001c479190620025e2565b60405180910390fd5b506000838562001c619190620027e3565b9050809150509392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562001cfc5780860481111562001cd45762001cd362001c6e565b5b600185161562001ce45780820291505b808102905062001cf48562001c9d565b945062001cb4565b94509492505050565b60008262001d17576001905062001dea565b8162001d27576000905062001dea565b816001811462001d40576002811462001d4b5762001d81565b600191505062001dea565b60ff84111562001d605762001d5f62001c6e565b5b8360020a91508482111562001d7a5762001d7962001c6e565b5b5062001dea565b5060208310610133831016604e8410600b841016171562001dbb5782820a90508381111562001db55762001db462001c6e565b5b62001dea565b62001dca848484600162001caa565b9250905081840481111562001de45762001de362001c6e565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b600062001e158262001df1565b915062001e228362001dfb565b925062001e517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462001d05565b905092915050565b600062001e668262001df1565b915062001e738362001df1565b925082820262001e838162001df1565b9150828204841483151762001e9d5762001e9c62001c6e565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062001ee08262001df1565b915062001eed8362001df1565b92508262001f005762001eff62001ea4565b5b828204905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062001f3d8262001f10565b9050919050565b62001f4f8162001f30565b811462001f5b57600080fd5b50565b60008151905062001f6f8162001f44565b92915050565b60008060006060848603121562001f915762001f9062001f0b565b5b600062001fa18682870162001f5e565b935050602062001fb48682870162001f5e565b925050604062001fc78682870162001f5e565b9150509250925092565b60006020828403121562001fea5762001fe962001f0b565b5b600062001ffa8482850162001f5e565b91505092915050565b6200200e8162001f30565b82525050565b60006040820190506200202b600083018562002003565b6200203a602083018462002003565b9392505050565b6200204c8162001df1565b82525050565b600060408201905062002069600083018562002003565b62002078602083018462002041565b9392505050565b60008115159050919050565b62002096816200207f565b8114620020a257600080fd5b50565b600081519050620020b6816200208b565b92915050565b600060208284031215620020d557620020d462001f0b565b5b6000620020e584828501620020a5565b91505092915050565b600060208201905062002105600083018462002041565b92915050565b600082825260208201905092915050565b7f206d756c7469706c69636174696f6e206f766572666c6f770000000000000000600082015250565b6000620021546018836200210b565b915062002161826200211c565b602082019050919050565b60006020820190508181036000830152620021878162002145565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000620021ec6025836200210b565b9150620021f9826200218e565b604082019050919050565b600060208201905081810360008301526200221f81620021dd565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000620022846023836200210b565b9150620022918262002226565b604082019050919050565b60006020820190508181036000830152620022b78162002275565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006200231c6029836200210b565b91506200232982620022be565b604082019050919050565b600060208201905081810360008301526200234f816200230d565b9050919050565b7f54726164696e67206973206e6f7420616c6c6f77656400000000000000000000600082015250565b60006200238e6016836200210b565b91506200239b8262002356565b602082019050919050565b60006020820190508181036000830152620023c1816200237f565b9050919050565b6000620023d58262001df1565b9150620023e28362001df1565b9250828201905080821115620023fd57620023fc62001c6e565b5b92915050565b7f457863656564206d617820616d6f756e74207065722077616c6c657400000000600082015250565b60006200243b601c836200210b565b9150620024488262002403565b602082019050919050565b600060208201905081810360008301526200246e816200242c565b9050919050565b7f457863656564206d617820616d6f756e74207065722074780000000000000000600082015250565b6000620024ad6018836200210b565b9150620024ba8262002475565b602082019050919050565b60006020820190508181036000830152620024e0816200249e565b9050919050565b7f617070726f7665207a65726f2061646472657373000000000000000000000000600082015250565b60006200251f6014836200210b565b91506200252c82620024e7565b602082019050919050565b60006020820190508181036000830152620025528162002510565b9050919050565b600081519050919050565b60005b838110156200258457808201518184015260208101905062002567565b60008484015250505050565b6000601f19601f8301169050919050565b6000620025ae8262002559565b620025ba81856200210b565b9350620025cc81856020860162002564565b620025d78162002590565b840191505092915050565b60006020820190508181036000830152620025fe8184620025a1565b905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000819050919050565b6000819050919050565b600062002699620026936200268d8462002664565b6200266e565b62001df1565b9050919050565b620026ab8162002678565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b620026e88162001f30565b82525050565b6000620026fc8383620026dd565b60208301905092915050565b6000602082019050919050565b60006200272282620026b1565b6200272e8185620026bc565b93506200273b83620026cd565b8060005b8381101562002772578151620027568882620026ee565b9750620027638362002708565b9250506001810190506200273f565b5085935050505092915050565b600060a08201905062002796600083018862002041565b620027a56020830187620026a0565b8181036040830152620027b9818662002715565b9050620027ca606083018562002003565b620027d9608083018462002041565b9695505050505050565b6000620027f08262001df1565b9150620027fd8362001df1565b925082820390508181111562002818576200281762001c6e565b5b92915050565b613d5e806200282e6000396000f3fe6080604052600436106101e75760003560e01c8063715018a611610102578063b906b1bf11610095578063ea414b2811610064578063ea414b2814610696578063f26a9816146106bf578063f2fde38b146106e8578063fcf03f5d14610711576101ee565b8063b906b1bf1461060f578063c9567bf914610638578063c970e99f1461064f578063dd62ed3e14610659576101ee565b80638da5cb5b116100d15780638da5cb5b1461055157806395d89b411461057c5780639f836d7b146105a7578063a9059cbb146105d2576101ee565b8063715018a6146104bd57806382eb71cd146104d457806385266ec6146104fd57806385b27c8514610526576101ee565b806336db71291161017a57806351bc3c851161014957806351bc3c851461041757806352f7c9881461042e57806364998def1461045757806370a0823114610480576101ee565b806336db71291461036d57806342966c681461039857806347062402146103c157806349bd5a5e146103ec576101ee565b806318160ddd116101b657806318160ddd146102af57806323b872dd146102da5780632b14ca5614610317578063313ce56714610342576101ee565b806306ee6ad8146101f357806306fdde031461021e578063095ea7b3146102495780630f23619414610286576101ee565b366101ee57005b600080fd5b3480156101ff57600080fd5b5061020861073a565b6040516102159190612f16565b60405180910390f35b34801561022a57600080fd5b50610233610760565b6040516102409190612fc1565b60405180910390f35b34801561025557600080fd5b50610270600480360381019061026b919061304a565b61079d565b60405161027d91906130a5565b60405180910390f35b34801561029257600080fd5b506102ad60048036038101906102a891906130c0565b6107bb565b005b3480156102bb57600080fd5b506102c4610860565b6040516102d191906130fc565b60405180910390f35b3480156102e657600080fd5b5061030160048036038101906102fc9190613117565b61086a565b60405161030e91906130a5565b60405180910390f35b34801561032357600080fd5b5061032c610960565b60405161033991906130fc565b60405180910390f35b34801561034e57600080fd5b50610357610966565b6040516103649190613186565b60405180910390f35b34801561037957600080fd5b5061038261096f565b60405161038f91906130fc565b60405180910390f35b3480156103a457600080fd5b506103bf60048036038101906103ba91906131a1565b610975565b005b3480156103cd57600080fd5b506103d6610982565b6040516103e391906130fc565b60405180910390f35b3480156103f857600080fd5b50610401610988565b60405161040e9190612f16565b60405180910390f35b34801561042357600080fd5b5061042c6109ae565b005b34801561043a57600080fd5b50610455600480360381019061045091906131ce565b610bba565b005b34801561046357600080fd5b5061047e600480360381019061047991906131a1565b610db2565b005b34801561048c57600080fd5b506104a760048036038101906104a291906130c0565b610f57565b6040516104b491906130fc565b60405180910390f35b3480156104c957600080fd5b506104d2610fa0565b005b3480156104e057600080fd5b506104fb60048036038101906104f691906130c0565b6110f3565b005b34801561050957600080fd5b50610524600480360381019061051f91906131a1565b611198565b005b34801561053257600080fd5b5061053b6112a5565b60405161054891906130fc565b60405180910390f35b34801561055d57600080fd5b506105666112ab565b6040516105739190612f16565b60405180910390f35b34801561058857600080fd5b506105916112d4565b60405161059e9190612fc1565b60405180910390f35b3480156105b357600080fd5b506105bc611311565b6040516105c991906130fc565b60405180910390f35b3480156105de57600080fd5b506105f960048036038101906105f4919061304a565b611317565b60405161060691906130a5565b60405180910390f35b34801561061b57600080fd5b50610636600480360381019061063191906131a1565b611335565b005b34801561064457600080fd5b5061064d61141c565b005b61065761151e565b005b34801561066557600080fd5b50610680600480360381019061067b919061320e565b61177a565b60405161068d91906130fc565b60405180910390f35b3480156106a257600080fd5b506106bd60048036038101906106b891906130c0565b611801565b005b3480156106cb57600080fd5b506106e660048036038101906106e191906131a1565b6118da565b005b3480156106f457600080fd5b5061070f600480360381019061070a91906130c0565b6119e7565b005b34801561071d57600080fd5b50610738600480360381019061073391906130c0565b611ba8565b005b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60606040518060400160405280600881526020017f53616e6477696368000000000000000000000000000000000000000000000000815250905090565b60006107b16107aa611c81565b8484611c89565b6001905092915050565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166107fc611c81565b73ffffffffffffffffffffffffffffffffffffffff161461081c57600080fd5b80601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600454905090565b6000610877848484611e1d565b61095584610883611c81565b610950856040518060400160405280600d81526020017f6c6f7720616c6c6f77616e636500000000000000000000000000000000000000815250600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610906611c81565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127279092919063ffffffff16565b611c89565b600190509392505050565b60065481565b60006012905090565b60085481565b61097f338261278b565b50565b60055481565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6109b66112ab565b73ffffffffffffffffffffffffffffffffffffffff166109d4611c81565b73ffffffffffffffffffffffffffffffffffffffff161480610a4a5750600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610a32611c81565b73ffffffffffffffffffffffffffffffffffffffff16145b80610aa95750600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610a91611c81565b73ffffffffffffffffffffffffffffffffffffffff16145b80610b085750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610af0611c81565b73ffffffffffffffffffffffffffffffffffffffff16145b610b47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3e9061329a565b60405180910390fd5b6000600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000811115610b9e57610b9d816128d4565b5b60004790506000811115610bb657610bb581612b04565b5b5050565b610bc26112ab565b73ffffffffffffffffffffffffffffffffffffffff16610be0611c81565b73ffffffffffffffffffffffffffffffffffffffff161480610c565750600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610c3e611c81565b73ffffffffffffffffffffffffffffffffffffffff16145b80610cb55750600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610c9d611c81565b73ffffffffffffffffffffffffffffffffffffffff16145b80610d145750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610cfc611c81565b73ffffffffffffffffffffffffffffffffffffffff16145b610d53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4a9061329a565b60405180910390fd5b60058211158015610d65575060058111155b610da4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9b90613306565b60405180910390fd5b610dae8282612d2a565b5050565b610dba6112ab565b73ffffffffffffffffffffffffffffffffffffffff16610dd8611c81565b73ffffffffffffffffffffffffffffffffffffffff161480610e4e5750600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610e36611c81565b73ffffffffffffffffffffffffffffffffffffffff16145b80610ead5750600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610e95611c81565b73ffffffffffffffffffffffffffffffffffffffff16145b80610f0c5750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610ef4611c81565b73ffffffffffffffffffffffffffffffffffffffff16145b610f4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f429061329a565b60405180910390fd5b610f5481612d3c565b50565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610fa8611c81565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611035576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102c90613372565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611134611c81565b73ffffffffffffffffffffffffffffffffffffffff161461115457600080fd5b80600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6111a0611c81565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461122d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161122490613372565b60405180910390fd5b6112576103e86112496005600454612d4690919063ffffffff16565b612dc090919063ffffffff16565b811015611299576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611290906133de565b60405180910390fd5b6112a281612e0a565b50565b60075481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600881526020017f53616e6477696368000000000000000000000000000000000000000000000000815250905090565b60095481565b600061132b611324611c81565b8484611e1d565b6001905092915050565b61133d6112ab565b73ffffffffffffffffffffffffffffffffffffffff1661135b611c81565b73ffffffffffffffffffffffffffffffffffffffff1614806113d15750600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166113b9611c81565b73ffffffffffffffffffffffffffffffffffffffff16145b611410576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114079061329a565b60405180910390fd5b61141981612e14565b50565b611424611c81565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114a890613372565b60405180910390fd5b601060149054906101000a900460ff1615611501576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114f890613470565b60405180910390fd5b6001601060146101000a81548160ff021916908315150217905550565b6000600267ffffffffffffffff81111561153b5761153a613490565b5b6040519080825280602002602001820160405280156115695781602001602082028036833780820191505090505b509050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156115cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115ef91906134d4565b8160008151811061160357611602613501565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050308160018151811061165257611651613501565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663b6f9de95346000846116c8611c81565b426040518663ffffffff1660e01b81526004016116e89493929190613633565b6000604051808303818588803b15801561170157600080fd5b505af1158015611715573d6000803e3d6000fd5b5050505050600060016000611728611c81565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050611776611770611c81565b8261278b565b5050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611809611c81565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611896576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188d90613372565b60405180910390fd5b80600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6118e2611c81565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461196f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161196690613372565b60405180910390fd5b6119996103e861198b6005600454612d4690919063ffffffff16565b612dc090919063ffffffff16565b8110156119db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119d2906136cb565b60405180910390fd5b6119e481612e1e565b50565b6119ef611c81565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a7390613372565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611aeb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ae290613737565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350565b611bb0611c81565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c3490613372565b60405180910390fd5b80600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611cf35750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b611d32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d29906137a3565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611e1091906130fc565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611e8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e8390613835565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611efb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ef2906138c7565b60405180910390fd5b60008111611f3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f3590613959565b60405180910390fd5b6000611f486112ab565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611fb65750611f866112ab565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561200b57601060149054906101000a900460ff1661200a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612001906139c5565b60405180910390fd5b5b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156120af5750600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561230657600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156121515750737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561224e5760085482600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546121a49190613a14565b1115806121b357506000600854145b6121f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121e990613a94565b60405180910390fd5b6007548211158061220557506000600754145b612244576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161223b90613b00565b60405180910390fd5b6005549050612305565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036122ff57600754821115806122b657506000600754145b6122f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122ec90613b00565b60405180910390fd5b6006549050612304565b600090505b5b5b600061232e60646123208486612d4690919063ffffffff16565b612dc090919063ffffffff16565b905060006123458285612e2890919063ffffffff16565b905061239984600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612e2890919063ffffffff16565b600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124279190613a14565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050601060159054906101000a900460ff161580156125195750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614155b80156125725750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16145b801561258a5750601060149054906101000a900460ff165b156125bc57600a5481106125bb576125a1816128d4565b600047905060008111156125b9576125b881612b04565b5b505b5b81600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126079190613a14565b600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060008311156126b9573073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516126b091906130fc565b60405180910390a35b8573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161271691906130fc565b60405180910390a350505050505050565b600083831115829061276f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127669190612fc1565b60405180910390fd5b506000838561277e9190613b20565b9050809150509392505050565b80600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561280d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161280490613ba0565b60405180910390fd5b8060046000828254039250508190555080600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540392505081905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516128c891906130fc565b60405180910390a35050565b6001601060156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff81111561290c5761290b613490565b5b60405190808252806020026020018201604052801561293a5781602001602082028036833780820191505090505b509050308160008151811061295257612951613501565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156129eb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a0f91906134d4565b81600181518110612a2357612a22613501565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612ab3959493929190613bc0565b600060405180830381600087803b158015612acd57600080fd5b505af1158015612ae1573d6000803e3d6000fd5b50505050506000601060156101000a81548160ff02191690831515021790555050565b6000606460095483612b169190613c1a565b612b209190613c8b565b90506000612b378284612e2890919063ffffffff16565b9050600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050158015612ba1573d6000803e3d6000fd5b50600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6064601384612bed9190613c1a565b612bf79190613c8b565b9081150290604051600060405180830381858888f19350505050158015612c22573d6000803e3d6000fd5b50601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6064601f84612c6e9190613c1a565b612c789190613c8b565b9081150290604051600060405180830381858888f19350505050158015612ca3573d6000803e3d6000fd5b50600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6064603284612cef9190613c1a565b612cf99190613c8b565b9081150290604051600060405180830381858888f19350505050158015612d24573d6000803e3d6000fd5b50505050565b81600581905550806006819055505050565b80600a8190555050565b6000808303612d585760009050612dba565b60008284612d669190613c1a565b9050828482612d759190613c8b565b14612db5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dac90613d08565b60405180910390fd5b809150505b92915050565b6000612e0283836040518060400160405280601081526020017f6469766973696f6e206279207a65726f00000000000000000000000000000000815250612e72565b905092915050565b8060088190555050565b8060098190555050565b8060078190555050565b6000612e6a83836040518060400160405280601481526020017f7375627472616374696f6e206f766572666c6f77000000000000000000000000815250612727565b905092915050565b60008083118290612eb9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612eb09190612fc1565b60405180910390fd5b5060008385612ec89190613c8b565b9050809150509392505050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612f0082612ed5565b9050919050565b612f1081612ef5565b82525050565b6000602082019050612f2b6000830184612f07565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612f6b578082015181840152602081019050612f50565b60008484015250505050565b6000601f19601f8301169050919050565b6000612f9382612f31565b612f9d8185612f3c565b9350612fad818560208601612f4d565b612fb681612f77565b840191505092915050565b60006020820190508181036000830152612fdb8184612f88565b905092915050565b600080fd5b612ff181612ef5565b8114612ffc57600080fd5b50565b60008135905061300e81612fe8565b92915050565b6000819050919050565b61302781613014565b811461303257600080fd5b50565b6000813590506130448161301e565b92915050565b6000806040838503121561306157613060612fe3565b5b600061306f85828601612fff565b925050602061308085828601613035565b9150509250929050565b60008115159050919050565b61309f8161308a565b82525050565b60006020820190506130ba6000830184613096565b92915050565b6000602082840312156130d6576130d5612fe3565b5b60006130e484828501612fff565b91505092915050565b6130f681613014565b82525050565b600060208201905061311160008301846130ed565b92915050565b6000806000606084860312156131305761312f612fe3565b5b600061313e86828701612fff565b935050602061314f86828701612fff565b925050604061316086828701613035565b9150509250925092565b600060ff82169050919050565b6131808161316a565b82525050565b600060208201905061319b6000830184613177565b92915050565b6000602082840312156131b7576131b6612fe3565b5b60006131c584828501613035565b91505092915050565b600080604083850312156131e5576131e4612fe3565b5b60006131f385828601613035565b925050602061320485828601613035565b9150509250929050565b6000806040838503121561322557613224612fe3565b5b600061323385828601612fff565b925050602061324485828601612fff565b9150509250929050565b7f496e76616c6964207065726d697373696f6e0000000000000000000000000000600082015250565b6000613284601283612f3c565b915061328f8261324e565b602082019050919050565b600060208201905081810360008301526132b381613277565b9050919050565b7f6c696d6974656420746f20352070657263656e74000000000000000000000000600082015250565b60006132f0601483612f3c565b91506132fb826132ba565b602082019050919050565b6000602082019050818103600083015261331f816132e3565b9050919050565b7f63616c6c6572206973206e6f7420746865206f776e6572000000000000000000600082015250565b600061335c601783612f3c565b915061336782613326565b602082019050919050565b6000602082019050818103600083015261338b8161334f565b9050919050565b7f6d617857616c6c6574206973206c696d6974656420746f20302e352500000000600082015250565b60006133c8601c83612f3c565b91506133d382613392565b602082019050919050565b600060208201905081810360008301526133f7816133bb565b9050919050565b7f746f6b656e20697320616c726561647920656e61626c656420666f722074726160008201527f64696e6700000000000000000000000000000000000000000000000000000000602082015250565b600061345a602483612f3c565b9150613465826133fe565b604082019050919050565b600060208201905081810360008301526134898161344d565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000815190506134ce81612fe8565b92915050565b6000602082840312156134ea576134e9612fe3565b5b60006134f8848285016134bf565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000819050919050565b6000819050919050565b600061355f61355a61355584613530565b61353a565b613014565b9050919050565b61356f81613544565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6135aa81612ef5565b82525050565b60006135bc83836135a1565b60208301905092915050565b6000602082019050919050565b60006135e082613575565b6135ea8185613580565b93506135f583613591565b8060005b8381101561362657815161360d88826135b0565b9750613618836135c8565b9250506001810190506135f9565b5085935050505092915050565b60006080820190506136486000830187613566565b818103602083015261365a81866135d5565b90506136696040830185612f07565b61367660608301846130ed565b95945050505050565b7f6d61785478206973206c696d6974656420746f20302e35250000000000000000600082015250565b60006136b5601883612f3c565b91506136c08261367f565b602082019050919050565b600060208201905081810360008301526136e4816136a8565b9050919050565b7f6e6577206f776e6572206973207a65726f206164647265737300000000000000600082015250565b6000613721601983612f3c565b915061372c826136eb565b602082019050919050565b6000602082019050818103600083015261375081613714565b9050919050565b7f617070726f7665207a65726f2061646472657373000000000000000000000000600082015250565b600061378d601483612f3c565b915061379882613757565b602082019050919050565b600060208201905081810360008301526137bc81613780565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061381f602583612f3c565b915061382a826137c3565b604082019050919050565b6000602082019050818103600083015261384e81613812565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006138b1602383612f3c565b91506138bc82613855565b604082019050919050565b600060208201905081810360008301526138e0816138a4565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000613943602983612f3c565b915061394e826138e7565b604082019050919050565b6000602082019050818103600083015261397281613936565b9050919050565b7f54726164696e67206973206e6f7420616c6c6f77656400000000000000000000600082015250565b60006139af601683612f3c565b91506139ba82613979565b602082019050919050565b600060208201905081810360008301526139de816139a2565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613a1f82613014565b9150613a2a83613014565b9250828201905080821115613a4257613a416139e5565b5b92915050565b7f457863656564206d617820616d6f756e74207065722077616c6c657400000000600082015250565b6000613a7e601c83612f3c565b9150613a8982613a48565b602082019050919050565b60006020820190508181036000830152613aad81613a71565b9050919050565b7f457863656564206d617820616d6f756e74207065722074780000000000000000600082015250565b6000613aea601883612f3c565b9150613af582613ab4565b602082019050919050565b60006020820190508181036000830152613b1981613add565b9050919050565b6000613b2b82613014565b9150613b3683613014565b9250828203905081811115613b4e57613b4d6139e5565b5b92915050565b7f496e76616c696420616d6f756e74000000000000000000000000000000000000600082015250565b6000613b8a600e83612f3c565b9150613b9582613b54565b602082019050919050565b60006020820190508181036000830152613bb981613b7d565b9050919050565b600060a082019050613bd560008301886130ed565b613be26020830187613566565b8181036040830152613bf481866135d5565b9050613c036060830185612f07565b613c1060808301846130ed565b9695505050505050565b6000613c2582613014565b9150613c3083613014565b9250828202613c3e81613014565b91508282048414831517613c5557613c546139e5565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613c9682613014565b9150613ca183613014565b925082613cb157613cb0613c5c565b5b828204905092915050565b7f206d756c7469706c69636174696f6e206f766572666c6f770000000000000000600082015250565b6000613cf2601883612f3c565b9150613cfd82613cbc565b602082019050919050565b60006020820190508181036000830152613d2181613ce5565b905091905056fea2646970667358221220453300510d092212db18b82e0c0cc524251e26fbaa2a6c54784474d6dcbbdf2864736f6c6343000813003300000000000000000000000016474f796fdcabd96f7df799abd821a18b96cfeb000000000000000000000000162cef44dd6eb82612499b918eaec568a23443d000000000000000000000000038cad30ea365c7cd2e821b235215983a36578452
Deployed Bytecode
0x6080604052600436106101e75760003560e01c8063715018a611610102578063b906b1bf11610095578063ea414b2811610064578063ea414b2814610696578063f26a9816146106bf578063f2fde38b146106e8578063fcf03f5d14610711576101ee565b8063b906b1bf1461060f578063c9567bf914610638578063c970e99f1461064f578063dd62ed3e14610659576101ee565b80638da5cb5b116100d15780638da5cb5b1461055157806395d89b411461057c5780639f836d7b146105a7578063a9059cbb146105d2576101ee565b8063715018a6146104bd57806382eb71cd146104d457806385266ec6146104fd57806385b27c8514610526576101ee565b806336db71291161017a57806351bc3c851161014957806351bc3c851461041757806352f7c9881461042e57806364998def1461045757806370a0823114610480576101ee565b806336db71291461036d57806342966c681461039857806347062402146103c157806349bd5a5e146103ec576101ee565b806318160ddd116101b657806318160ddd146102af57806323b872dd146102da5780632b14ca5614610317578063313ce56714610342576101ee565b806306ee6ad8146101f357806306fdde031461021e578063095ea7b3146102495780630f23619414610286576101ee565b366101ee57005b600080fd5b3480156101ff57600080fd5b5061020861073a565b6040516102159190612f16565b60405180910390f35b34801561022a57600080fd5b50610233610760565b6040516102409190612fc1565b60405180910390f35b34801561025557600080fd5b50610270600480360381019061026b919061304a565b61079d565b60405161027d91906130a5565b60405180910390f35b34801561029257600080fd5b506102ad60048036038101906102a891906130c0565b6107bb565b005b3480156102bb57600080fd5b506102c4610860565b6040516102d191906130fc565b60405180910390f35b3480156102e657600080fd5b5061030160048036038101906102fc9190613117565b61086a565b60405161030e91906130a5565b60405180910390f35b34801561032357600080fd5b5061032c610960565b60405161033991906130fc565b60405180910390f35b34801561034e57600080fd5b50610357610966565b6040516103649190613186565b60405180910390f35b34801561037957600080fd5b5061038261096f565b60405161038f91906130fc565b60405180910390f35b3480156103a457600080fd5b506103bf60048036038101906103ba91906131a1565b610975565b005b3480156103cd57600080fd5b506103d6610982565b6040516103e391906130fc565b60405180910390f35b3480156103f857600080fd5b50610401610988565b60405161040e9190612f16565b60405180910390f35b34801561042357600080fd5b5061042c6109ae565b005b34801561043a57600080fd5b50610455600480360381019061045091906131ce565b610bba565b005b34801561046357600080fd5b5061047e600480360381019061047991906131a1565b610db2565b005b34801561048c57600080fd5b506104a760048036038101906104a291906130c0565b610f57565b6040516104b491906130fc565b60405180910390f35b3480156104c957600080fd5b506104d2610fa0565b005b3480156104e057600080fd5b506104fb60048036038101906104f691906130c0565b6110f3565b005b34801561050957600080fd5b50610524600480360381019061051f91906131a1565b611198565b005b34801561053257600080fd5b5061053b6112a5565b60405161054891906130fc565b60405180910390f35b34801561055d57600080fd5b506105666112ab565b6040516105739190612f16565b60405180910390f35b34801561058857600080fd5b506105916112d4565b60405161059e9190612fc1565b60405180910390f35b3480156105b357600080fd5b506105bc611311565b6040516105c991906130fc565b60405180910390f35b3480156105de57600080fd5b506105f960048036038101906105f4919061304a565b611317565b60405161060691906130a5565b60405180910390f35b34801561061b57600080fd5b50610636600480360381019061063191906131a1565b611335565b005b34801561064457600080fd5b5061064d61141c565b005b61065761151e565b005b34801561066557600080fd5b50610680600480360381019061067b919061320e565b61177a565b60405161068d91906130fc565b60405180910390f35b3480156106a257600080fd5b506106bd60048036038101906106b891906130c0565b611801565b005b3480156106cb57600080fd5b506106e660048036038101906106e191906131a1565b6118da565b005b3480156106f457600080fd5b5061070f600480360381019061070a91906130c0565b6119e7565b005b34801561071d57600080fd5b50610738600480360381019061073391906130c0565b611ba8565b005b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60606040518060400160405280600881526020017f53616e6477696368000000000000000000000000000000000000000000000000815250905090565b60006107b16107aa611c81565b8484611c89565b6001905092915050565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166107fc611c81565b73ffffffffffffffffffffffffffffffffffffffff161461081c57600080fd5b80601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600454905090565b6000610877848484611e1d565b61095584610883611c81565b610950856040518060400160405280600d81526020017f6c6f7720616c6c6f77616e636500000000000000000000000000000000000000815250600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610906611c81565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127279092919063ffffffff16565b611c89565b600190509392505050565b60065481565b60006012905090565b60085481565b61097f338261278b565b50565b60055481565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6109b66112ab565b73ffffffffffffffffffffffffffffffffffffffff166109d4611c81565b73ffffffffffffffffffffffffffffffffffffffff161480610a4a5750600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610a32611c81565b73ffffffffffffffffffffffffffffffffffffffff16145b80610aa95750600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610a91611c81565b73ffffffffffffffffffffffffffffffffffffffff16145b80610b085750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610af0611c81565b73ffffffffffffffffffffffffffffffffffffffff16145b610b47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3e9061329a565b60405180910390fd5b6000600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000811115610b9e57610b9d816128d4565b5b60004790506000811115610bb657610bb581612b04565b5b5050565b610bc26112ab565b73ffffffffffffffffffffffffffffffffffffffff16610be0611c81565b73ffffffffffffffffffffffffffffffffffffffff161480610c565750600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610c3e611c81565b73ffffffffffffffffffffffffffffffffffffffff16145b80610cb55750600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610c9d611c81565b73ffffffffffffffffffffffffffffffffffffffff16145b80610d145750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610cfc611c81565b73ffffffffffffffffffffffffffffffffffffffff16145b610d53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4a9061329a565b60405180910390fd5b60058211158015610d65575060058111155b610da4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9b90613306565b60405180910390fd5b610dae8282612d2a565b5050565b610dba6112ab565b73ffffffffffffffffffffffffffffffffffffffff16610dd8611c81565b73ffffffffffffffffffffffffffffffffffffffff161480610e4e5750600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610e36611c81565b73ffffffffffffffffffffffffffffffffffffffff16145b80610ead5750600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610e95611c81565b73ffffffffffffffffffffffffffffffffffffffff16145b80610f0c5750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610ef4611c81565b73ffffffffffffffffffffffffffffffffffffffff16145b610f4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f429061329a565b60405180910390fd5b610f5481612d3c565b50565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610fa8611c81565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611035576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102c90613372565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611134611c81565b73ffffffffffffffffffffffffffffffffffffffff161461115457600080fd5b80600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6111a0611c81565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461122d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161122490613372565b60405180910390fd5b6112576103e86112496005600454612d4690919063ffffffff16565b612dc090919063ffffffff16565b811015611299576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611290906133de565b60405180910390fd5b6112a281612e0a565b50565b60075481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600881526020017f53616e6477696368000000000000000000000000000000000000000000000000815250905090565b60095481565b600061132b611324611c81565b8484611e1d565b6001905092915050565b61133d6112ab565b73ffffffffffffffffffffffffffffffffffffffff1661135b611c81565b73ffffffffffffffffffffffffffffffffffffffff1614806113d15750600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166113b9611c81565b73ffffffffffffffffffffffffffffffffffffffff16145b611410576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114079061329a565b60405180910390fd5b61141981612e14565b50565b611424611c81565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114a890613372565b60405180910390fd5b601060149054906101000a900460ff1615611501576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114f890613470565b60405180910390fd5b6001601060146101000a81548160ff021916908315150217905550565b6000600267ffffffffffffffff81111561153b5761153a613490565b5b6040519080825280602002602001820160405280156115695781602001602082028036833780820191505090505b509050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156115cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115ef91906134d4565b8160008151811061160357611602613501565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050308160018151811061165257611651613501565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663b6f9de95346000846116c8611c81565b426040518663ffffffff1660e01b81526004016116e89493929190613633565b6000604051808303818588803b15801561170157600080fd5b505af1158015611715573d6000803e3d6000fd5b5050505050600060016000611728611c81565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050611776611770611c81565b8261278b565b5050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611809611c81565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611896576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188d90613372565b60405180910390fd5b80600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6118e2611c81565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461196f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161196690613372565b60405180910390fd5b6119996103e861198b6005600454612d4690919063ffffffff16565b612dc090919063ffffffff16565b8110156119db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119d2906136cb565b60405180910390fd5b6119e481612e1e565b50565b6119ef611c81565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a7390613372565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611aeb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ae290613737565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350565b611bb0611c81565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c3490613372565b60405180910390fd5b80600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611cf35750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b611d32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d29906137a3565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611e1091906130fc565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611e8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e8390613835565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611efb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ef2906138c7565b60405180910390fd5b60008111611f3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f3590613959565b60405180910390fd5b6000611f486112ab565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611fb65750611f866112ab565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561200b57601060149054906101000a900460ff1661200a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612001906139c5565b60405180910390fd5b5b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156120af5750600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561230657600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156121515750737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561224e5760085482600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546121a49190613a14565b1115806121b357506000600854145b6121f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121e990613a94565b60405180910390fd5b6007548211158061220557506000600754145b612244576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161223b90613b00565b60405180910390fd5b6005549050612305565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036122ff57600754821115806122b657506000600754145b6122f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122ec90613b00565b60405180910390fd5b6006549050612304565b600090505b5b5b600061232e60646123208486612d4690919063ffffffff16565b612dc090919063ffffffff16565b905060006123458285612e2890919063ffffffff16565b905061239984600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612e2890919063ffffffff16565b600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124279190613a14565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050601060159054906101000a900460ff161580156125195750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614155b80156125725750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16145b801561258a5750601060149054906101000a900460ff165b156125bc57600a5481106125bb576125a1816128d4565b600047905060008111156125b9576125b881612b04565b5b505b5b81600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126079190613a14565b600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060008311156126b9573073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516126b091906130fc565b60405180910390a35b8573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161271691906130fc565b60405180910390a350505050505050565b600083831115829061276f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127669190612fc1565b60405180910390fd5b506000838561277e9190613b20565b9050809150509392505050565b80600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561280d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161280490613ba0565b60405180910390fd5b8060046000828254039250508190555080600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540392505081905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516128c891906130fc565b60405180910390a35050565b6001601060156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff81111561290c5761290b613490565b5b60405190808252806020026020018201604052801561293a5781602001602082028036833780820191505090505b509050308160008151811061295257612951613501565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156129eb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a0f91906134d4565b81600181518110612a2357612a22613501565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612ab3959493929190613bc0565b600060405180830381600087803b158015612acd57600080fd5b505af1158015612ae1573d6000803e3d6000fd5b50505050506000601060156101000a81548160ff02191690831515021790555050565b6000606460095483612b169190613c1a565b612b209190613c8b565b90506000612b378284612e2890919063ffffffff16565b9050600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050158015612ba1573d6000803e3d6000fd5b50600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6064601384612bed9190613c1a565b612bf79190613c8b565b9081150290604051600060405180830381858888f19350505050158015612c22573d6000803e3d6000fd5b50601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6064601f84612c6e9190613c1a565b612c789190613c8b565b9081150290604051600060405180830381858888f19350505050158015612ca3573d6000803e3d6000fd5b50600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6064603284612cef9190613c1a565b612cf99190613c8b565b9081150290604051600060405180830381858888f19350505050158015612d24573d6000803e3d6000fd5b50505050565b81600581905550806006819055505050565b80600a8190555050565b6000808303612d585760009050612dba565b60008284612d669190613c1a565b9050828482612d759190613c8b565b14612db5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dac90613d08565b60405180910390fd5b809150505b92915050565b6000612e0283836040518060400160405280601081526020017f6469766973696f6e206279207a65726f00000000000000000000000000000000815250612e72565b905092915050565b8060088190555050565b8060098190555050565b8060078190555050565b6000612e6a83836040518060400160405280601481526020017f7375627472616374696f6e206f766572666c6f77000000000000000000000000815250612727565b905092915050565b60008083118290612eb9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612eb09190612fc1565b60405180910390fd5b5060008385612ec89190613c8b565b9050809150509392505050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612f0082612ed5565b9050919050565b612f1081612ef5565b82525050565b6000602082019050612f2b6000830184612f07565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612f6b578082015181840152602081019050612f50565b60008484015250505050565b6000601f19601f8301169050919050565b6000612f9382612f31565b612f9d8185612f3c565b9350612fad818560208601612f4d565b612fb681612f77565b840191505092915050565b60006020820190508181036000830152612fdb8184612f88565b905092915050565b600080fd5b612ff181612ef5565b8114612ffc57600080fd5b50565b60008135905061300e81612fe8565b92915050565b6000819050919050565b61302781613014565b811461303257600080fd5b50565b6000813590506130448161301e565b92915050565b6000806040838503121561306157613060612fe3565b5b600061306f85828601612fff565b925050602061308085828601613035565b9150509250929050565b60008115159050919050565b61309f8161308a565b82525050565b60006020820190506130ba6000830184613096565b92915050565b6000602082840312156130d6576130d5612fe3565b5b60006130e484828501612fff565b91505092915050565b6130f681613014565b82525050565b600060208201905061311160008301846130ed565b92915050565b6000806000606084860312156131305761312f612fe3565b5b600061313e86828701612fff565b935050602061314f86828701612fff565b925050604061316086828701613035565b9150509250925092565b600060ff82169050919050565b6131808161316a565b82525050565b600060208201905061319b6000830184613177565b92915050565b6000602082840312156131b7576131b6612fe3565b5b60006131c584828501613035565b91505092915050565b600080604083850312156131e5576131e4612fe3565b5b60006131f385828601613035565b925050602061320485828601613035565b9150509250929050565b6000806040838503121561322557613224612fe3565b5b600061323385828601612fff565b925050602061324485828601612fff565b9150509250929050565b7f496e76616c6964207065726d697373696f6e0000000000000000000000000000600082015250565b6000613284601283612f3c565b915061328f8261324e565b602082019050919050565b600060208201905081810360008301526132b381613277565b9050919050565b7f6c696d6974656420746f20352070657263656e74000000000000000000000000600082015250565b60006132f0601483612f3c565b91506132fb826132ba565b602082019050919050565b6000602082019050818103600083015261331f816132e3565b9050919050565b7f63616c6c6572206973206e6f7420746865206f776e6572000000000000000000600082015250565b600061335c601783612f3c565b915061336782613326565b602082019050919050565b6000602082019050818103600083015261338b8161334f565b9050919050565b7f6d617857616c6c6574206973206c696d6974656420746f20302e352500000000600082015250565b60006133c8601c83612f3c565b91506133d382613392565b602082019050919050565b600060208201905081810360008301526133f7816133bb565b9050919050565b7f746f6b656e20697320616c726561647920656e61626c656420666f722074726160008201527f64696e6700000000000000000000000000000000000000000000000000000000602082015250565b600061345a602483612f3c565b9150613465826133fe565b604082019050919050565b600060208201905081810360008301526134898161344d565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000815190506134ce81612fe8565b92915050565b6000602082840312156134ea576134e9612fe3565b5b60006134f8848285016134bf565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000819050919050565b6000819050919050565b600061355f61355a61355584613530565b61353a565b613014565b9050919050565b61356f81613544565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6135aa81612ef5565b82525050565b60006135bc83836135a1565b60208301905092915050565b6000602082019050919050565b60006135e082613575565b6135ea8185613580565b93506135f583613591565b8060005b8381101561362657815161360d88826135b0565b9750613618836135c8565b9250506001810190506135f9565b5085935050505092915050565b60006080820190506136486000830187613566565b818103602083015261365a81866135d5565b90506136696040830185612f07565b61367660608301846130ed565b95945050505050565b7f6d61785478206973206c696d6974656420746f20302e35250000000000000000600082015250565b60006136b5601883612f3c565b91506136c08261367f565b602082019050919050565b600060208201905081810360008301526136e4816136a8565b9050919050565b7f6e6577206f776e6572206973207a65726f206164647265737300000000000000600082015250565b6000613721601983612f3c565b915061372c826136eb565b602082019050919050565b6000602082019050818103600083015261375081613714565b9050919050565b7f617070726f7665207a65726f2061646472657373000000000000000000000000600082015250565b600061378d601483612f3c565b915061379882613757565b602082019050919050565b600060208201905081810360008301526137bc81613780565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061381f602583612f3c565b915061382a826137c3565b604082019050919050565b6000602082019050818103600083015261384e81613812565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006138b1602383612f3c565b91506138bc82613855565b604082019050919050565b600060208201905081810360008301526138e0816138a4565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000613943602983612f3c565b915061394e826138e7565b604082019050919050565b6000602082019050818103600083015261397281613936565b9050919050565b7f54726164696e67206973206e6f7420616c6c6f77656400000000000000000000600082015250565b60006139af601683612f3c565b91506139ba82613979565b602082019050919050565b600060208201905081810360008301526139de816139a2565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613a1f82613014565b9150613a2a83613014565b9250828201905080821115613a4257613a416139e5565b5b92915050565b7f457863656564206d617820616d6f756e74207065722077616c6c657400000000600082015250565b6000613a7e601c83612f3c565b9150613a8982613a48565b602082019050919050565b60006020820190508181036000830152613aad81613a71565b9050919050565b7f457863656564206d617820616d6f756e74207065722074780000000000000000600082015250565b6000613aea601883612f3c565b9150613af582613ab4565b602082019050919050565b60006020820190508181036000830152613b1981613add565b9050919050565b6000613b2b82613014565b9150613b3683613014565b9250828203905081811115613b4e57613b4d6139e5565b5b92915050565b7f496e76616c696420616d6f756e74000000000000000000000000000000000000600082015250565b6000613b8a600e83612f3c565b9150613b9582613b54565b602082019050919050565b60006020820190508181036000830152613bb981613b7d565b9050919050565b600060a082019050613bd560008301886130ed565b613be26020830187613566565b8181036040830152613bf481866135d5565b9050613c036060830185612f07565b613c1060808301846130ed565b9695505050505050565b6000613c2582613014565b9150613c3083613014565b9250828202613c3e81613014565b91508282048414831517613c5557613c546139e5565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613c9682613014565b9150613ca183613014565b925082613cb157613cb0613c5c565b5b828204905092915050565b7f206d756c7469706c69636174696f6e206f766572666c6f770000000000000000600082015250565b6000613cf2601883612f3c565b9150613cfd82613cbc565b602082019050919050565b60006020820190508181036000830152613d2181613ce5565b905091905056fea2646970667358221220453300510d092212db18b82e0c0cc524251e26fbaa2a6c54784474d6dcbbdf2864736f6c63430008130033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000016474f796fdcabd96f7df799abd821a18b96cfeb000000000000000000000000162cef44dd6eb82612499b918eaec568a23443d000000000000000000000000038cad30ea365c7cd2e821b235215983a36578452
-----Decoded View---------------
Arg [0] : owner (address): 0x16474f796FDcaBD96f7Df799Abd821a18B96CfeB
Arg [1] : _taxWallet (address): 0x162cEF44dD6eb82612499b918eaEC568a23443d0
Arg [2] : _phoenixWallet (address): 0x38CAd30Ea365c7cd2e821b235215983A36578452
-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 00000000000000000000000016474f796fdcabd96f7df799abd821a18b96cfeb
Arg [1] : 000000000000000000000000162cef44dd6eb82612499b918eaec568a23443d0
Arg [2] : 00000000000000000000000038cad30ea365c7cd2e821b235215983a36578452
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.