Feature Tip: Add private address tag to any address under My Name Tag !
ERC-20
Overview
Max Total Supply
1,000,000,000 JODIE
Holders
168
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 8 Decimals)
Balance
915,180.50522993 JODIEValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
JODIE
Compiler Version
v0.8.20+commit.a1b79de6
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-10-19 */ // SPDX-License-Identifier: MIT /** https://jodiecoin.io https://t.me/jodiecoin https://twitter.com/jodiecoin **/ pragma solidity 0.8.20; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } } interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); } library SafeMath { function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; return c; } } contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor () { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } function owner() public view returns (address) { return _owner; } modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } } 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); } contract JODIE is Context, IERC20, Ownable { using SafeMath for uint256; mapping (address => uint256) private _balances; mapping (address => mapping (address => uint256)) private _allowances; mapping (address => bool) private _isExcludedFromFee; mapping (address => bool) private bots; mapping(address => uint256) private _holderLastTransferTimestamp; bool public transferDelayEnabled = true; address payable private _taxWallet; uint256 private _initialBuyTax=25; uint256 private _initialSellTax=15; uint256 private _finalBuyTax=0; uint256 private _finalSellTax=15; uint256 private _reduceBuyTaxAt=1; uint256 private _reduceSellTaxAt=20; uint256 private _preventSwapBefore=40; uint256 private _buyCount=0; uint8 private constant _decimals = 8; uint256 private constant _tTotal = 1000000000 * 10**_decimals; string private constant _name = unicode"Jodie"; string private constant _symbol = unicode"JODIE"; uint256 public _maxTxAmount = 1000000000 * 10**_decimals; uint256 public _maxWalletSize = 20000000 * 10**_decimals; uint256 public _taxSwapThreshold=100000 * 10**_decimals; uint256 public _maxTaxSwap=1000000000 * 10**_decimals; IUniswapV2Router02 private uniswapV2Router; address private uniswapV2Pair; bool private tradingOpen; bool private inSwap = false; bool private swapEnabled = false; event MaxTxAmountUpdated(uint _maxTxAmount); modifier lockTheSwap { inSwap = true; _; inSwap = false; } constructor () { _taxWallet = payable(_msgSender()); _balances[_msgSender()] = _tTotal; _isExcludedFromFee[owner()] = true; _isExcludedFromFee[address(this)] = true; _isExcludedFromFee[_taxWallet] = true; emit Transfer(address(0), _msgSender(), _tTotal); } 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 pure override returns (uint256) { return _tTotal; } function balanceOf(address account) public view override returns (uint256) { return _balances[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, "ERC20: transfer amount exceeds allowance")); return true; } function _approve(address owner, address spender, uint256 amount) private { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _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 taxAmount=0; if (from != owner() && to != owner()) { if (transferDelayEnabled) { if (to != address(uniswapV2Router) && to != address(uniswapV2Pair)) { require(_holderLastTransferTimestamp[tx.origin] < block.number,"Only one transfer per block allowed."); _holderLastTransferTimestamp[tx.origin] = block.number; } } if (from == uniswapV2Pair && to != address(uniswapV2Router) && ! _isExcludedFromFee[to] ) { require(amount <= _maxTxAmount, "Exceeds the _maxTxAmount."); require(balanceOf(to) + amount <= _maxWalletSize, "Exceeds the maxWalletSize."); if(_buyCount<_preventSwapBefore){ require(!isContract(to)); } _buyCount++; } taxAmount = amount.mul((_buyCount>_reduceBuyTaxAt)?_finalBuyTax:_initialBuyTax).div(100); if(to == uniswapV2Pair && from!= address(this) ){ require(amount <= _maxTxAmount, "Exceeds the _maxTxAmount."); taxAmount = amount.mul((_buyCount>_reduceSellTaxAt)?_finalSellTax:_initialSellTax).div(100); } uint256 contractTokenBalance = balanceOf(address(this)); if (!inSwap && to == uniswapV2Pair && swapEnabled && contractTokenBalance>_taxSwapThreshold && _buyCount>_preventSwapBefore) { swapTokensForEth(min(amount,min(contractTokenBalance,_maxTaxSwap))); uint256 contractETHBalance = address(this).balance; if(contractETHBalance > 0) { sendETHToFee(address(this).balance); } } } if(taxAmount>0){ _balances[address(this)]=_balances[address(this)].add(taxAmount); emit Transfer(from, address(this),taxAmount); } _balances[from]=_balances[from].sub(amount); _balances[to]=_balances[to].add(amount.sub(taxAmount)); emit Transfer(from, to, amount.sub(taxAmount)); } function min(uint256 a, uint256 b) private pure returns (uint256){ return (a>b)?b:a; } function swapTokensForEth(uint256 tokenAmount) private lockTheSwap { if(tokenAmount==0){return;} if(!tradingOpen){return;} address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, path, address(this), block.timestamp ); } function removeLimits() external onlyOwner{ _maxTxAmount = _tTotal; _maxWalletSize=_tTotal; _finalBuyTax=0; _finalSellTax=0; transferDelayEnabled=false; emit MaxTxAmountUpdated(_tTotal); } function setIsBot(address account, bool state) external onlyOwner{ bots[account] = state; } function sendETHToFee(uint256 amount) private { _taxWallet.transfer(amount); } function isBot(address a) public view returns (bool){ return bots[a]; } function reduceFee(uint256 _newFee) external{ require(_msgSender()==_taxWallet); require(_newFee<6); _finalBuyTax=_newFee; _finalSellTax=_newFee; } function openTrading() external onlyOwner() { require(!tradingOpen,"trading is already open"); uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); _approve(address(this), address(uniswapV2Router), _tTotal); uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH()); uniswapV2Router.addLiquidityETH{value: address(this).balance}(address(this),balanceOf(address(this)),0,0,owner(),block.timestamp); IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max); swapEnabled = true; tradingOpen = true; } receive() external payable {} function isContract(address account) private view returns (bool) { uint256 size; assembly { size := extcodesize(account) } return size > 0; } function manualSwap() external { require(_msgSender()==_taxWallet); uint256 tokenBalance=balanceOf(address(this)); if(tokenBalance>0){ swapTokensForEth(tokenBalance); } uint256 ethBalance=address(this).balance; if(ethBalance>0){ sendETHToFee(ethBalance); } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","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":[],"name":"_maxTaxSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxSwapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"a","type":"address"}],"name":"isBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","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":[{"internalType":"uint256","name":"_newFee","type":"uint256"}],"name":"reduceFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"state","type":"bool"}],"name":"setIsBot","outputs":[],"stateMutability":"nonpayable","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":"pure","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":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
6080604052600160065f6101000a81548160ff0219169083151502179055506019600755600f6008555f600955600f600a556001600b556014600c556028600d555f600e556008600a6200005491906200060e565b633b9aca006200006591906200065e565b600f556008600a6200007891906200060e565b6301312d006200008991906200065e565b6010556008600a6200009c91906200060e565b620186a0620000ac91906200065e565b6011556008600a620000bf91906200060e565b633b9aca00620000d091906200065e565b6012555f601460156101000a81548160ff0219169083151502179055505f601460166101000a81548160ff02191690831515021790555034801562000113575f80fd5b505f620001256200044e60201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350620001d16200044e60201b60201c565b600660016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506008600a6200022191906200060e565b633b9aca006200023291906200065e565b60015f620002456200044e60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600160035f620002976200045560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550620003c26200044e60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6008600a6200042091906200060e565b633b9aca006200043191906200065e565b604051620004409190620006b9565b60405180910390a3620006d4565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156200050657808604811115620004de57620004dd6200047c565b5b6001851615620004ee5780820291505b8081029050620004fe85620004a9565b9450620004be565b94509492505050565b5f82620005205760019050620005f2565b816200052f575f9050620005f2565b8160018114620005485760028114620005535762000589565b6001915050620005f2565b60ff8411156200056857620005676200047c565b5b8360020a9150848211156200058257620005816200047c565b5b50620005f2565b5060208310610133831016604e8410600b8410161715620005c35782820a905083811115620005bd57620005bc6200047c565b5b620005f2565b620005d28484846001620004b5565b92509050818404811115620005ec57620005eb6200047c565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f6200061a82620005f9565b9150620006278362000602565b9250620006567fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846200050f565b905092915050565b5f6200066a82620005f9565b91506200067783620005f9565b92508282026200068781620005f9565b91508282048414831517620006a157620006a06200047c565b5b5092915050565b620006b381620005f9565b82525050565b5f602082019050620006ce5f830184620006a8565b92915050565b6132ad80620006e25f395ff3fe608060405260043610610138575f3560e01c8063751039fc116100aa578063a9059cbb1161006e578063a9059cbb146103ed578063bf474bed14610429578063c876d0b914610453578063c9567bf91461047d578063dd62ed3e14610493578063ec1f3f63146104cf5761013f565b8063751039fc1461032f5780637d1db4a5146103455780638da5cb5b1461036f5780638f9a55c01461039957806395d89b41146103c35761013f565b806323b872dd116100fc57806323b872dd14610225578063313ce567146102615780633bbac5791461028b57806351bc3c85146102c757806370a08231146102dd578063715018a6146103195761013f565b806303c0f5d41461014357806306fdde031461016b578063095ea7b3146101955780630faee56f146101d157806318160ddd146101fb5761013f565b3661013f57005b5f80fd5b34801561014e575f80fd5b5061016960048036038101906101649190612351565b6104f7565b005b348015610176575f80fd5b5061017f6105e3565b60405161018c9190612419565b60405180910390f35b3480156101a0575f80fd5b506101bb60048036038101906101b6919061246c565b610620565b6040516101c891906124b9565b60405180910390f35b3480156101dc575f80fd5b506101e561063d565b6040516101f291906124e1565b60405180910390f35b348015610206575f80fd5b5061020f610643565b60405161021c91906124e1565b60405180910390f35b348015610230575f80fd5b5061024b600480360381019061024691906124fa565b610666565b60405161025891906124b9565b60405180910390f35b34801561026c575f80fd5b5061027561073a565b6040516102829190612565565b60405180910390f35b348015610296575f80fd5b506102b160048036038101906102ac919061257e565b610742565b6040516102be91906124b9565b60405180910390f35b3480156102d2575f80fd5b506102db610794565b005b3480156102e8575f80fd5b5061030360048036038101906102fe919061257e565b61082c565b60405161031091906124e1565b60405180910390f35b348015610324575f80fd5b5061032d610872565b005b34801561033a575f80fd5b506103436109c0565b005b348015610350575f80fd5b50610359610b16565b60405161036691906124e1565b60405180910390f35b34801561037a575f80fd5b50610383610b1c565b60405161039091906125b8565b60405180910390f35b3480156103a4575f80fd5b506103ad610b43565b6040516103ba91906124e1565b60405180910390f35b3480156103ce575f80fd5b506103d7610b49565b6040516103e49190612419565b60405180910390f35b3480156103f8575f80fd5b50610413600480360381019061040e919061246c565b610b86565b60405161042091906124b9565b60405180910390f35b348015610434575f80fd5b5061043d610ba3565b60405161044a91906124e1565b60405180910390f35b34801561045e575f80fd5b50610467610ba9565b60405161047491906124b9565b60405180910390f35b348015610488575f80fd5b50610491610bbb565b005b34801561049e575f80fd5b506104b960048036038101906104b491906125d1565b6110da565b6040516104c691906124e1565b60405180910390f35b3480156104da575f80fd5b506104f560048036038101906104f0919061260f565b61115c565b005b6104ff6111d9565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461058b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058290612684565b60405180910390fd5b8060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b60606040518060400160405280600581526020017f4a6f646965000000000000000000000000000000000000000000000000000000815250905090565b5f61063361062c6111d9565b84846111e0565b6001905092915050565b60125481565b5f6008600a61065291906127fe565b633b9aca006106619190612848565b905090565b5f6106728484846113a3565b61072f8461067e6111d9565b61072a856040518060600160405280602881526020016132506028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6106e16111d9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611d7c9092919063ffffffff16565b6111e0565b600190509392505050565b5f6008905090565b5f60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166107d56111d9565b73ffffffffffffffffffffffffffffffffffffffff16146107f4575f80fd5b5f6107fe3061082c565b90505f8111156108125761081181611dde565b5b5f4790505f8111156108285761082781612065565b5b5050565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b61087a6111d9565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610906576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108fd90612684565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6109c86111d9565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a4b90612684565b60405180910390fd5b6008600a610a6291906127fe565b633b9aca00610a719190612848565b600f819055506008600a610a8591906127fe565b633b9aca00610a949190612848565b6010819055505f6009819055505f600a819055505f60065f6101000a81548160ff0219169083151502179055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6008600a610af091906127fe565b633b9aca00610aff9190612848565b604051610b0c91906124e1565b60405180910390a1565b600f5481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60105481565b60606040518060400160405280600581526020017f4a4f444945000000000000000000000000000000000000000000000000000000815250905090565b5f610b99610b926111d9565b84846113a3565b6001905092915050565b60115481565b60065f9054906101000a900460ff1681565b610bc36111d9565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4690612684565b60405180910390fd5b60148054906101000a900460ff1615610c9d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c94906128d3565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d60135f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610d393060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166008600a610d2591906127fe565b633b9aca00610d349190612848565b6111e0565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610da3573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610dc79190612905565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e4d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e719190612905565b6040518363ffffffff1660e01b8152600401610e8e929190612930565b6020604051808303815f875af1158015610eaa573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ece9190612905565b60145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730610f553061082c565b5f80610f5f610b1c565b426040518863ffffffff1660e01b8152600401610f8196959493929190612999565b60606040518083038185885af1158015610f9d573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610fc29190612a0c565b50505060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401611062929190612a5c565b6020604051808303815f875af115801561107e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110a29190612a97565b506001601460166101000a81548160ff02191690831515021790555060016014806101000a81548160ff021916908315150217905550565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661119d6111d9565b73ffffffffffffffffffffffffffffffffffffffff16146111bc575f80fd5b600681106111c8575f80fd5b8060098190555080600a8190555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361124e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124590612b32565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036112bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112b390612bc0565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161139691906124e1565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611411576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140890612c4e565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361147f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147690612cdc565b60405180910390fd5b5f81116114c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114b890612d6a565b60405180910390fd5b5f6114ca610b1c565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156115385750611508610b1c565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611acc5760065f9054906101000a900460ff16156116c35760135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156115fb575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156116c2574360055f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541061167f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167690612df8565b60405180910390fd5b4360055f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b5b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614801561176c575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156117bf575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561189857600f54821115611809576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180090612e60565b60405180910390fd5b601054826118168561082c565b6118209190612e7e565b1115611861576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185890612efb565b60405180910390fd5b600d54600e54101561188057611876836120ce565b1561187f575f80fd5b5b600e5f81548092919061189290612f19565b91905055505b6118d460646118c6600b54600e54116118b3576007546118b7565b6009545b856120df90919063ffffffff16565b61215690919063ffffffff16565b905060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614801561195e57503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156119e757600f548211156119a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161199f90612e60565b60405180910390fd5b6119e460646119d6600c54600e54116119c3576008546119c7565b600a545b856120df90919063ffffffff16565b61215690919063ffffffff16565b90505b5f6119f13061082c565b9050601460159054906101000a900460ff16158015611a5c575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b8015611a745750601460169054906101000a900460ff165b8015611a81575060115481115b8015611a905750600d54600e54115b15611aca57611ab2611aad84611aa88460125461219f565b61219f565b611dde565b5f4790505f811115611ac857611ac747612065565b5b505b505b5f811115611bcb57611b248160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546121b790919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611bc291906124e1565b60405180910390a35b611c1b8260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461221490919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550611cbe611c72828461221490919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546121b790919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef611d61848661221490919063ffffffff16565b604051611d6e91906124e1565b60405180910390a350505050565b5f838311158290611dc3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dba9190612419565b60405180910390fd5b505f8385611dd19190612f60565b9050809150509392505050565b6001601460156101000a81548160ff0219169083151502179055505f8103156120485760148054906101000a900460ff1615612048575f600267ffffffffffffffff811115611e3057611e2f612f93565b5b604051908082528060200260200182016040528015611e5e5781602001602082028036833780820191505090505b50905030815f81518110611e7557611e74612fc0565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f19573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f3d9190612905565b81600181518110611f5157611f50612fc0565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611fb73060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846111e0565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016120199594939291906130a4565b5f604051808303815f87803b158015612030575f80fd5b505af1158015612042573d5f803e3d5ffd5b50505050505b5f601460156101000a81548160ff02191690831515021790555050565b600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f193505050501580156120ca573d5f803e3d5ffd5b5050565b5f80823b90505f8111915050919050565b5f8083036120ef575f9050612150565b5f82846120fc9190612848565b905082848261210b9190613129565b1461214b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612142906131c9565b60405180910390fd5b809150505b92915050565b5f61219783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061225d565b905092915050565b5f8183116121ad57826121af565b815b905092915050565b5f8082846121c59190612e7e565b90508381101561220a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161220190613231565b60405180910390fd5b8091505092915050565b5f61225583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611d7c565b905092915050565b5f80831182906122a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161229a9190612419565b60405180910390fd5b505f83856122b19190613129565b9050809150509392505050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6122eb826122c2565b9050919050565b6122fb816122e1565b8114612305575f80fd5b50565b5f81359050612316816122f2565b92915050565b5f8115159050919050565b6123308161231c565b811461233a575f80fd5b50565b5f8135905061234b81612327565b92915050565b5f8060408385031215612367576123666122be565b5b5f61237485828601612308565b92505060206123858582860161233d565b9150509250929050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156123c65780820151818401526020810190506123ab565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6123eb8261238f565b6123f58185612399565b93506124058185602086016123a9565b61240e816123d1565b840191505092915050565b5f6020820190508181035f83015261243181846123e1565b905092915050565b5f819050919050565b61244b81612439565b8114612455575f80fd5b50565b5f8135905061246681612442565b92915050565b5f8060408385031215612482576124816122be565b5b5f61248f85828601612308565b92505060206124a085828601612458565b9150509250929050565b6124b38161231c565b82525050565b5f6020820190506124cc5f8301846124aa565b92915050565b6124db81612439565b82525050565b5f6020820190506124f45f8301846124d2565b92915050565b5f805f60608486031215612511576125106122be565b5b5f61251e86828701612308565b935050602061252f86828701612308565b925050604061254086828701612458565b9150509250925092565b5f60ff82169050919050565b61255f8161254a565b82525050565b5f6020820190506125785f830184612556565b92915050565b5f60208284031215612593576125926122be565b5b5f6125a084828501612308565b91505092915050565b6125b2816122e1565b82525050565b5f6020820190506125cb5f8301846125a9565b92915050565b5f80604083850312156125e7576125e66122be565b5b5f6125f485828601612308565b925050602061260585828601612308565b9150509250929050565b5f60208284031215612624576126236122be565b5b5f61263184828501612458565b91505092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f61266e602083612399565b91506126798261263a565b602082019050919050565b5f6020820190508181035f83015261269b81612662565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b600185111561272457808604811115612700576126ff6126a2565b5b600185161561270f5780820291505b808102905061271d856126cf565b94506126e4565b94509492505050565b5f8261273c57600190506127f7565b81612749575f90506127f7565b816001811461275f576002811461276957612798565b60019150506127f7565b60ff84111561277b5761277a6126a2565b5b8360020a915084821115612792576127916126a2565b5b506127f7565b5060208310610133831016604e8410600b84101617156127cd5782820a9050838111156127c8576127c76126a2565b5b6127f7565b6127da84848460016126db565b925090508184048111156127f1576127f06126a2565b5b81810290505b9392505050565b5f61280882612439565b91506128138361254a565b92506128407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848461272d565b905092915050565b5f61285282612439565b915061285d83612439565b925082820261286b81612439565b91508282048414831517612882576128816126a2565b5b5092915050565b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f6128bd601783612399565b91506128c882612889565b602082019050919050565b5f6020820190508181035f8301526128ea816128b1565b9050919050565b5f815190506128ff816122f2565b92915050565b5f6020828403121561291a576129196122be565b5b5f612927848285016128f1565b91505092915050565b5f6040820190506129435f8301856125a9565b61295060208301846125a9565b9392505050565b5f819050919050565b5f819050919050565b5f61298361297e61297984612957565b612960565b612439565b9050919050565b61299381612969565b82525050565b5f60c0820190506129ac5f8301896125a9565b6129b960208301886124d2565b6129c6604083018761298a565b6129d3606083018661298a565b6129e060808301856125a9565b6129ed60a08301846124d2565b979650505050505050565b5f81519050612a0681612442565b92915050565b5f805f60608486031215612a2357612a226122be565b5b5f612a30868287016129f8565b9350506020612a41868287016129f8565b9250506040612a52868287016129f8565b9150509250925092565b5f604082019050612a6f5f8301856125a9565b612a7c60208301846124d2565b9392505050565b5f81519050612a9181612327565b92915050565b5f60208284031215612aac57612aab6122be565b5b5f612ab984828501612a83565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f612b1c602483612399565b9150612b2782612ac2565b604082019050919050565b5f6020820190508181035f830152612b4981612b10565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f612baa602283612399565b9150612bb582612b50565b604082019050919050565b5f6020820190508181035f830152612bd781612b9e565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f612c38602583612399565b9150612c4382612bde565b604082019050919050565b5f6020820190508181035f830152612c6581612c2c565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f612cc6602383612399565b9150612cd182612c6c565b604082019050919050565b5f6020820190508181035f830152612cf381612cba565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f612d54602983612399565b9150612d5f82612cfa565b604082019050919050565b5f6020820190508181035f830152612d8181612d48565b9050919050565b7f4f6e6c79206f6e65207472616e736665722070657220626c6f636b20616c6c6f5f8201527f7765642e00000000000000000000000000000000000000000000000000000000602082015250565b5f612de2602483612399565b9150612ded82612d88565b604082019050919050565b5f6020820190508181035f830152612e0f81612dd6565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f612e4a601983612399565b9150612e5582612e16565b602082019050919050565b5f6020820190508181035f830152612e7781612e3e565b9050919050565b5f612e8882612439565b9150612e9383612439565b9250828201905080821115612eab57612eaa6126a2565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f612ee5601a83612399565b9150612ef082612eb1565b602082019050919050565b5f6020820190508181035f830152612f1281612ed9565b9050919050565b5f612f2382612439565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612f5557612f546126a2565b5b600182019050919050565b5f612f6a82612439565b9150612f7583612439565b9250828203905081811115612f8d57612f8c6126a2565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61301f816122e1565b82525050565b5f6130308383613016565b60208301905092915050565b5f602082019050919050565b5f61305282612fed565b61305c8185612ff7565b935061306783613007565b805f5b8381101561309757815161307e8882613025565b97506130898361303c565b92505060018101905061306a565b5085935050505092915050565b5f60a0820190506130b75f8301886124d2565b6130c4602083018761298a565b81810360408301526130d68186613048565b90506130e560608301856125a9565b6130f260808301846124d2565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61313382612439565b915061313e83612439565b92508261314e5761314d6130fc565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f6131b3602183612399565b91506131be82613159565b604082019050919050565b5f6020820190508181035f8301526131e0816131a7565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f61321b601b83612399565b9150613226826131e7565b602082019050919050565b5f6020820190508181035f8301526132488161320f565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212204ab1747002f070e638d3400d3c2b27c9deb9fe53c370d67e656dbf0e2e57480c64736f6c63430008140033
Deployed Bytecode
0x608060405260043610610138575f3560e01c8063751039fc116100aa578063a9059cbb1161006e578063a9059cbb146103ed578063bf474bed14610429578063c876d0b914610453578063c9567bf91461047d578063dd62ed3e14610493578063ec1f3f63146104cf5761013f565b8063751039fc1461032f5780637d1db4a5146103455780638da5cb5b1461036f5780638f9a55c01461039957806395d89b41146103c35761013f565b806323b872dd116100fc57806323b872dd14610225578063313ce567146102615780633bbac5791461028b57806351bc3c85146102c757806370a08231146102dd578063715018a6146103195761013f565b806303c0f5d41461014357806306fdde031461016b578063095ea7b3146101955780630faee56f146101d157806318160ddd146101fb5761013f565b3661013f57005b5f80fd5b34801561014e575f80fd5b5061016960048036038101906101649190612351565b6104f7565b005b348015610176575f80fd5b5061017f6105e3565b60405161018c9190612419565b60405180910390f35b3480156101a0575f80fd5b506101bb60048036038101906101b6919061246c565b610620565b6040516101c891906124b9565b60405180910390f35b3480156101dc575f80fd5b506101e561063d565b6040516101f291906124e1565b60405180910390f35b348015610206575f80fd5b5061020f610643565b60405161021c91906124e1565b60405180910390f35b348015610230575f80fd5b5061024b600480360381019061024691906124fa565b610666565b60405161025891906124b9565b60405180910390f35b34801561026c575f80fd5b5061027561073a565b6040516102829190612565565b60405180910390f35b348015610296575f80fd5b506102b160048036038101906102ac919061257e565b610742565b6040516102be91906124b9565b60405180910390f35b3480156102d2575f80fd5b506102db610794565b005b3480156102e8575f80fd5b5061030360048036038101906102fe919061257e565b61082c565b60405161031091906124e1565b60405180910390f35b348015610324575f80fd5b5061032d610872565b005b34801561033a575f80fd5b506103436109c0565b005b348015610350575f80fd5b50610359610b16565b60405161036691906124e1565b60405180910390f35b34801561037a575f80fd5b50610383610b1c565b60405161039091906125b8565b60405180910390f35b3480156103a4575f80fd5b506103ad610b43565b6040516103ba91906124e1565b60405180910390f35b3480156103ce575f80fd5b506103d7610b49565b6040516103e49190612419565b60405180910390f35b3480156103f8575f80fd5b50610413600480360381019061040e919061246c565b610b86565b60405161042091906124b9565b60405180910390f35b348015610434575f80fd5b5061043d610ba3565b60405161044a91906124e1565b60405180910390f35b34801561045e575f80fd5b50610467610ba9565b60405161047491906124b9565b60405180910390f35b348015610488575f80fd5b50610491610bbb565b005b34801561049e575f80fd5b506104b960048036038101906104b491906125d1565b6110da565b6040516104c691906124e1565b60405180910390f35b3480156104da575f80fd5b506104f560048036038101906104f0919061260f565b61115c565b005b6104ff6111d9565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461058b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058290612684565b60405180910390fd5b8060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b60606040518060400160405280600581526020017f4a6f646965000000000000000000000000000000000000000000000000000000815250905090565b5f61063361062c6111d9565b84846111e0565b6001905092915050565b60125481565b5f6008600a61065291906127fe565b633b9aca006106619190612848565b905090565b5f6106728484846113a3565b61072f8461067e6111d9565b61072a856040518060600160405280602881526020016132506028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6106e16111d9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611d7c9092919063ffffffff16565b6111e0565b600190509392505050565b5f6008905090565b5f60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166107d56111d9565b73ffffffffffffffffffffffffffffffffffffffff16146107f4575f80fd5b5f6107fe3061082c565b90505f8111156108125761081181611dde565b5b5f4790505f8111156108285761082781612065565b5b5050565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b61087a6111d9565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610906576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108fd90612684565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6109c86111d9565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a4b90612684565b60405180910390fd5b6008600a610a6291906127fe565b633b9aca00610a719190612848565b600f819055506008600a610a8591906127fe565b633b9aca00610a949190612848565b6010819055505f6009819055505f600a819055505f60065f6101000a81548160ff0219169083151502179055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6008600a610af091906127fe565b633b9aca00610aff9190612848565b604051610b0c91906124e1565b60405180910390a1565b600f5481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60105481565b60606040518060400160405280600581526020017f4a4f444945000000000000000000000000000000000000000000000000000000815250905090565b5f610b99610b926111d9565b84846113a3565b6001905092915050565b60115481565b60065f9054906101000a900460ff1681565b610bc36111d9565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4690612684565b60405180910390fd5b60148054906101000a900460ff1615610c9d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c94906128d3565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d60135f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610d393060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166008600a610d2591906127fe565b633b9aca00610d349190612848565b6111e0565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610da3573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610dc79190612905565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e4d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e719190612905565b6040518363ffffffff1660e01b8152600401610e8e929190612930565b6020604051808303815f875af1158015610eaa573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ece9190612905565b60145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730610f553061082c565b5f80610f5f610b1c565b426040518863ffffffff1660e01b8152600401610f8196959493929190612999565b60606040518083038185885af1158015610f9d573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610fc29190612a0c565b50505060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401611062929190612a5c565b6020604051808303815f875af115801561107e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110a29190612a97565b506001601460166101000a81548160ff02191690831515021790555060016014806101000a81548160ff021916908315150217905550565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661119d6111d9565b73ffffffffffffffffffffffffffffffffffffffff16146111bc575f80fd5b600681106111c8575f80fd5b8060098190555080600a8190555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361124e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124590612b32565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036112bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112b390612bc0565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161139691906124e1565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611411576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140890612c4e565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361147f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147690612cdc565b60405180910390fd5b5f81116114c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114b890612d6a565b60405180910390fd5b5f6114ca610b1c565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156115385750611508610b1c565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611acc5760065f9054906101000a900460ff16156116c35760135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156115fb575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156116c2574360055f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541061167f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167690612df8565b60405180910390fd5b4360055f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b5b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614801561176c575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156117bf575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561189857600f54821115611809576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180090612e60565b60405180910390fd5b601054826118168561082c565b6118209190612e7e565b1115611861576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185890612efb565b60405180910390fd5b600d54600e54101561188057611876836120ce565b1561187f575f80fd5b5b600e5f81548092919061189290612f19565b91905055505b6118d460646118c6600b54600e54116118b3576007546118b7565b6009545b856120df90919063ffffffff16565b61215690919063ffffffff16565b905060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614801561195e57503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156119e757600f548211156119a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161199f90612e60565b60405180910390fd5b6119e460646119d6600c54600e54116119c3576008546119c7565b600a545b856120df90919063ffffffff16565b61215690919063ffffffff16565b90505b5f6119f13061082c565b9050601460159054906101000a900460ff16158015611a5c575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b8015611a745750601460169054906101000a900460ff165b8015611a81575060115481115b8015611a905750600d54600e54115b15611aca57611ab2611aad84611aa88460125461219f565b61219f565b611dde565b5f4790505f811115611ac857611ac747612065565b5b505b505b5f811115611bcb57611b248160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546121b790919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611bc291906124e1565b60405180910390a35b611c1b8260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461221490919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550611cbe611c72828461221490919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546121b790919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef611d61848661221490919063ffffffff16565b604051611d6e91906124e1565b60405180910390a350505050565b5f838311158290611dc3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dba9190612419565b60405180910390fd5b505f8385611dd19190612f60565b9050809150509392505050565b6001601460156101000a81548160ff0219169083151502179055505f8103156120485760148054906101000a900460ff1615612048575f600267ffffffffffffffff811115611e3057611e2f612f93565b5b604051908082528060200260200182016040528015611e5e5781602001602082028036833780820191505090505b50905030815f81518110611e7557611e74612fc0565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f19573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f3d9190612905565b81600181518110611f5157611f50612fc0565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611fb73060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846111e0565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016120199594939291906130a4565b5f604051808303815f87803b158015612030575f80fd5b505af1158015612042573d5f803e3d5ffd5b50505050505b5f601460156101000a81548160ff02191690831515021790555050565b600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f193505050501580156120ca573d5f803e3d5ffd5b5050565b5f80823b90505f8111915050919050565b5f8083036120ef575f9050612150565b5f82846120fc9190612848565b905082848261210b9190613129565b1461214b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612142906131c9565b60405180910390fd5b809150505b92915050565b5f61219783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061225d565b905092915050565b5f8183116121ad57826121af565b815b905092915050565b5f8082846121c59190612e7e565b90508381101561220a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161220190613231565b60405180910390fd5b8091505092915050565b5f61225583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611d7c565b905092915050565b5f80831182906122a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161229a9190612419565b60405180910390fd5b505f83856122b19190613129565b9050809150509392505050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6122eb826122c2565b9050919050565b6122fb816122e1565b8114612305575f80fd5b50565b5f81359050612316816122f2565b92915050565b5f8115159050919050565b6123308161231c565b811461233a575f80fd5b50565b5f8135905061234b81612327565b92915050565b5f8060408385031215612367576123666122be565b5b5f61237485828601612308565b92505060206123858582860161233d565b9150509250929050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156123c65780820151818401526020810190506123ab565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6123eb8261238f565b6123f58185612399565b93506124058185602086016123a9565b61240e816123d1565b840191505092915050565b5f6020820190508181035f83015261243181846123e1565b905092915050565b5f819050919050565b61244b81612439565b8114612455575f80fd5b50565b5f8135905061246681612442565b92915050565b5f8060408385031215612482576124816122be565b5b5f61248f85828601612308565b92505060206124a085828601612458565b9150509250929050565b6124b38161231c565b82525050565b5f6020820190506124cc5f8301846124aa565b92915050565b6124db81612439565b82525050565b5f6020820190506124f45f8301846124d2565b92915050565b5f805f60608486031215612511576125106122be565b5b5f61251e86828701612308565b935050602061252f86828701612308565b925050604061254086828701612458565b9150509250925092565b5f60ff82169050919050565b61255f8161254a565b82525050565b5f6020820190506125785f830184612556565b92915050565b5f60208284031215612593576125926122be565b5b5f6125a084828501612308565b91505092915050565b6125b2816122e1565b82525050565b5f6020820190506125cb5f8301846125a9565b92915050565b5f80604083850312156125e7576125e66122be565b5b5f6125f485828601612308565b925050602061260585828601612308565b9150509250929050565b5f60208284031215612624576126236122be565b5b5f61263184828501612458565b91505092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f61266e602083612399565b91506126798261263a565b602082019050919050565b5f6020820190508181035f83015261269b81612662565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b600185111561272457808604811115612700576126ff6126a2565b5b600185161561270f5780820291505b808102905061271d856126cf565b94506126e4565b94509492505050565b5f8261273c57600190506127f7565b81612749575f90506127f7565b816001811461275f576002811461276957612798565b60019150506127f7565b60ff84111561277b5761277a6126a2565b5b8360020a915084821115612792576127916126a2565b5b506127f7565b5060208310610133831016604e8410600b84101617156127cd5782820a9050838111156127c8576127c76126a2565b5b6127f7565b6127da84848460016126db565b925090508184048111156127f1576127f06126a2565b5b81810290505b9392505050565b5f61280882612439565b91506128138361254a565b92506128407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848461272d565b905092915050565b5f61285282612439565b915061285d83612439565b925082820261286b81612439565b91508282048414831517612882576128816126a2565b5b5092915050565b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f6128bd601783612399565b91506128c882612889565b602082019050919050565b5f6020820190508181035f8301526128ea816128b1565b9050919050565b5f815190506128ff816122f2565b92915050565b5f6020828403121561291a576129196122be565b5b5f612927848285016128f1565b91505092915050565b5f6040820190506129435f8301856125a9565b61295060208301846125a9565b9392505050565b5f819050919050565b5f819050919050565b5f61298361297e61297984612957565b612960565b612439565b9050919050565b61299381612969565b82525050565b5f60c0820190506129ac5f8301896125a9565b6129b960208301886124d2565b6129c6604083018761298a565b6129d3606083018661298a565b6129e060808301856125a9565b6129ed60a08301846124d2565b979650505050505050565b5f81519050612a0681612442565b92915050565b5f805f60608486031215612a2357612a226122be565b5b5f612a30868287016129f8565b9350506020612a41868287016129f8565b9250506040612a52868287016129f8565b9150509250925092565b5f604082019050612a6f5f8301856125a9565b612a7c60208301846124d2565b9392505050565b5f81519050612a9181612327565b92915050565b5f60208284031215612aac57612aab6122be565b5b5f612ab984828501612a83565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f612b1c602483612399565b9150612b2782612ac2565b604082019050919050565b5f6020820190508181035f830152612b4981612b10565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f612baa602283612399565b9150612bb582612b50565b604082019050919050565b5f6020820190508181035f830152612bd781612b9e565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f612c38602583612399565b9150612c4382612bde565b604082019050919050565b5f6020820190508181035f830152612c6581612c2c565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f612cc6602383612399565b9150612cd182612c6c565b604082019050919050565b5f6020820190508181035f830152612cf381612cba565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f612d54602983612399565b9150612d5f82612cfa565b604082019050919050565b5f6020820190508181035f830152612d8181612d48565b9050919050565b7f4f6e6c79206f6e65207472616e736665722070657220626c6f636b20616c6c6f5f8201527f7765642e00000000000000000000000000000000000000000000000000000000602082015250565b5f612de2602483612399565b9150612ded82612d88565b604082019050919050565b5f6020820190508181035f830152612e0f81612dd6565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f612e4a601983612399565b9150612e5582612e16565b602082019050919050565b5f6020820190508181035f830152612e7781612e3e565b9050919050565b5f612e8882612439565b9150612e9383612439565b9250828201905080821115612eab57612eaa6126a2565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f612ee5601a83612399565b9150612ef082612eb1565b602082019050919050565b5f6020820190508181035f830152612f1281612ed9565b9050919050565b5f612f2382612439565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612f5557612f546126a2565b5b600182019050919050565b5f612f6a82612439565b9150612f7583612439565b9250828203905081811115612f8d57612f8c6126a2565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61301f816122e1565b82525050565b5f6130308383613016565b60208301905092915050565b5f602082019050919050565b5f61305282612fed565b61305c8185612ff7565b935061306783613007565b805f5b8381101561309757815161307e8882613025565b97506130898361303c565b92505060018101905061306a565b5085935050505092915050565b5f60a0820190506130b75f8301886124d2565b6130c4602083018761298a565b81810360408301526130d68186613048565b90506130e560608301856125a9565b6130f260808301846124d2565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61313382612439565b915061313e83612439565b92508261314e5761314d6130fc565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f6131b3602183612399565b91506131be82613159565b604082019050919050565b5f6020820190508181035f8301526131e0816131a7565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f61321b601b83612399565b9150613226826131e7565b602082019050919050565b5f6020820190508181035f8301526132488161320f565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212204ab1747002f070e638d3400d3c2b27c9deb9fe53c370d67e656dbf0e2e57480c64736f6c63430008140033
Deployed Bytecode Sourcemap
3558:8759:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10531:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5488:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6321:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4762:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5765:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6490:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5674:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10744;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11946:348;;;;;;;;;;;;;:::i;:::-;;5868:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2639:148;;;;;;;;;;;;;:::i;:::-;;10272:247;;;;;;;;;;;;;:::i;:::-;;4572:58;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2425:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4637:56;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5579:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5995:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4700:55;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3945:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11027:671;;;;;;;;;;;;;:::i;:::-;;6170:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10839:180;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10531:105;2562:12;:10;:12::i;:::-;2552:22;;:6;;;;;;;;;;:22;;;2544:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10623:5:::1;10607:4;:13;10612:7;10607:13;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;10531:105:::0;;:::o;5488:83::-;5525:13;5558:5;;;;;;;;;;;;;;;;;5551:12;;5488:83;:::o;6321:161::-;6396:4;6413:39;6422:12;:10;:12::i;:::-;6436:7;6445:6;6413:8;:39::i;:::-;6470:4;6463:11;;6321:161;;;;:::o;4762:53::-;;;;:::o;5765:95::-;5818:7;4388:1;4444:2;:13;;;;:::i;:::-;4431:10;:26;;;;:::i;:::-;5838:14;;5765:95;:::o;6490:313::-;6588:4;6605:36;6615:6;6623:9;6634:6;6605:9;:36::i;:::-;6652:121;6661:6;6669:12;:10;:12::i;:::-;6683:89;6721:6;6683:89;;;;;;;;;;;;;;;;;:11;:19;6695:6;6683:19;;;;;;;;;;;;;;;:33;6703:12;:10;:12::i;:::-;6683:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;6652:8;:121::i;:::-;6791:4;6784:11;;6490:313;;;;;:::o;5674:83::-;5715:5;4388:1;5733:16;;5674:83;:::o;10744:::-;10791:4;10812;:7;10817:1;10812:7;;;;;;;;;;;;;;;;;;;;;;;;;10805:14;;10744:83;;;:::o;11946:348::-;12010:10;;;;;;;;;;;11996:24;;:12;:10;:12::i;:::-;:24;;;11988:33;;;;;;12032:20;12053:24;12071:4;12053:9;:24::i;:::-;12032:45;;12104:1;12091:12;:14;12088:73;;;12119:30;12136:12;12119:16;:30::i;:::-;12088:73;12171:18;12190:21;12171:40;;12236:1;12225:10;:12;12222:65;;;12251:24;12264:10;12251:12;:24::i;:::-;12222:65;11977:317;;11946:348::o;5868:119::-;5934:7;5961:9;:18;5971:7;5961:18;;;;;;;;;;;;;;;;5954:25;;5868:119;;;:::o;2639:148::-;2562:12;:10;:12::i;:::-;2552:22;;:6;;;;;;;;;;:22;;;2544:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2746:1:::1;2709:40;;2730:6;::::0;::::1;;;;;;;;2709:40;;;;;;;;;;;;2777:1;2760:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;2639:148::o:0;10272:247::-;2562:12;:10;:12::i;:::-;2552:22;;:6;;;;;;;;;;:22;;;2544:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4388:1:::1;4444:2;:13;;;;:::i;:::-;4431:10;:26;;;;:::i;:::-;10325:12;:22;;;;4388:1;4444:2;:13;;;;:::i;:::-;4431:10;:26;;;;:::i;:::-;10358:14;:22;;;;10404:1;10391:12;:14;;;;10430:1;10416:13;:15;;;;10463:5;10442:20;;:26;;;;;;;;;;;;;;;;;;10484:27;4388:1;4444:2;:13;;;;:::i;:::-;4431:10;:26;;;;:::i;:::-;10484:27;;;;;;:::i;:::-;;;;;;;;10272:247::o:0;4572:58::-;;;;:::o;2425:79::-;2463:7;2490:6;;;;;;;;;;;2483:13;;2425:79;:::o;4637:56::-;;;;:::o;5579:87::-;5618:13;5651:7;;;;;;;;;;;;;;;;;5644:14;;5579:87;:::o;5995:167::-;6073:4;6090:42;6100:12;:10;:12::i;:::-;6114:9;6125:6;6090:9;:42::i;:::-;6150:4;6143:11;;5995:167;;;;:::o;4700:55::-;;;;:::o;3945:39::-;;;;;;;;;;;;;:::o;11027:671::-;2562:12;:10;:12::i;:::-;2552:22;;:6;;;;;;;;;;:22;;;2544:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11091:11:::1;::::0;::::1;;;;;;;;11090:12;11082:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;11177:42;11140:15;;:80;;;;;;;;;;;;;;;;;;11231:58;11248:4;11263:15;;;;;;;;;;;4388:1;4444:2;:13;;;;:::i;:::-;4431:10;:26;;;;:::i;:::-;11231:8;:58::i;:::-;11334:15;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11316:55;;;11380:4;11387:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11316:94;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11300:13;;:110;;;;;;;;;;;;;;;;;;11421:15;;;;;;;;;;;:31;;;11460:21;11491:4;11497:24;11515:4;11497:9;:24::i;:::-;11522:1;11524::::0;11526:7:::1;:5;:7::i;:::-;11534:15;11421:129;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;11568:13;;;;;;;;;;;11561:29;;;11599:15;;;;;;;;;;;11617:14;11561:71;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;11657:4;11643:11;;:18;;;;;;;;;;;;;;;;;;11686:4;11672:11;::::0;:18:::1;;;;;;;;;;;;;;;;;;11027:671::o:0;6170:143::-;6251:7;6278:11;:18;6290:5;6278:18;;;;;;;;;;;;;;;:27;6297:7;6278:27;;;;;;;;;;;;;;;;6271:34;;6170:143;;;;:::o;10839:180::-;10914:10;;;;;;;;;;;10900:24;;:12;:10;:12::i;:::-;:24;;;10892:33;;;;;;10950:1;10942:7;:9;10934:18;;;;;;10974:7;10961:12;:20;;;;11004:7;10990:13;:21;;;;10839:180;:::o;180:98::-;233:7;260:10;253:17;;180:98;:::o;6811:335::-;6921:1;6904:19;;:5;:19;;;6896:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7002:1;6983:21;;:7;:21;;;6975:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7084:6;7054:11;:18;7066:5;7054:18;;;;;;;;;;;;;;;:27;7073:7;7054:27;;;;;;;;;;;;;;;:36;;;;7122:7;7106:32;;7115:5;7106:32;;;7131:6;7106:32;;;;;;:::i;:::-;;;;;;;;6811:335;;;:::o;7154:2439::-;7258:1;7242:18;;:4;:18;;;7234:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7335:1;7321:16;;:2;:16;;;7313:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;7405:1;7396:6;:10;7388:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;7463:17;7506:7;:5;:7::i;:::-;7498:15;;:4;:15;;;;:32;;;;;7523:7;:5;:7::i;:::-;7517:13;;:2;:13;;;;7498:32;7494:1743;;;7561:20;;;;;;;;;;;7557:346;;;7620:15;;;;;;;;;;;7606:30;;:2;:30;;;;:62;;;;;7654:13;;;;;;;;;;;7640:28;;:2;:28;;;;7606:62;7602:286;;;7741:12;7699:28;:39;7728:9;7699:39;;;;;;;;;;;;;;;;:54;7691:102;;;;;;;;;;;;:::i;:::-;;;;;;;;;7856:12;7814:28;:39;7843:9;7814:39;;;;;;;;;;;;;;;:54;;;;7602:286;7557:346;7931:13;;;;;;;;;;;7923:21;;:4;:21;;;:55;;;;;7962:15;;;;;;;;;;;7948:30;;:2;:30;;;;7923:55;:83;;;;;7984:18;:22;8003:2;7984:22;;;;;;;;;;;;;;;;;;;;;;;;;7982:24;7923:83;7919:428;;;8046:12;;8036:6;:22;;8028:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;8141:14;;8131:6;8115:13;8125:2;8115:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;8107:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;8218:18;;8208:9;;:28;8205:97;;;8267:14;8278:2;8267:10;:14::i;:::-;8266:15;8258:24;;;;;;8205:97;8320:9;;:11;;;;;;;;;:::i;:::-;;;;;;7919:428;8377:76;8449:3;8377:67;8399:15;;8389:9;;:25;8388:55;;8429:14;;8388:55;;;8416:12;;8388:55;8377:6;:10;;:67;;;;:::i;:::-;:71;;:76;;;;:::i;:::-;8365:88;;8477:13;;;;;;;;;;;8471:19;;:2;:19;;;:43;;;;;8509:4;8494:20;;:4;:20;;;;8471:43;8468:253;;;8553:12;;8543:6;:22;;8535:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;8626:79;8701:3;8626:70;8648:16;;8638:9;;:26;8637:58;;8680:15;;8637:58;;;8666:13;;8637:58;8626:6;:10;;:70;;;;:::i;:::-;:74;;:79;;;;:::i;:::-;8614:91;;8468:253;8737:28;8768:24;8786:4;8768:9;:24::i;:::-;8737:55;;8812:6;;;;;;;;;;;8811:7;:30;;;;;8828:13;;;;;;;;;;;8822:19;;:2;:19;;;8811:30;:45;;;;;8845:11;;;;;;;;;;;8811:45;:87;;;;;8881:17;;8860:20;:38;8811:87;:119;;;;;8912:18;;8902:9;;:28;8811:119;8807:419;;;8951:67;8968:49;8972:6;8979:37;8983:20;9004:11;;8979:3;:37::i;:::-;8968:3;:49::i;:::-;8951:16;:67::i;:::-;9037:26;9066:21;9037:50;;9130:1;9109:18;:22;9106:105;;;9156:35;9169:21;9156:12;:35::i;:::-;9106:105;8932:294;8807:419;7532:1705;7494:1743;9262:1;9252:9;:11;9249:161;;;9302:39;9331:9;9302;:24;9320:4;9302:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;9277:9;:24;9295:4;9277:24;;;;;;;;;;;;;;;:64;;;;9382:4;9359:39;;9368:4;9359:39;;;9388:9;9359:39;;;;;;:::i;:::-;;;;;;;;9249:161;9436:27;9456:6;9436:9;:15;9446:4;9436:15;;;;;;;;;;;;;;;;:19;;:27;;;;:::i;:::-;9420:9;:15;9430:4;9420:15;;;;;;;;;;;;;;;:43;;;;9488:40;9506:21;9517:9;9506:6;:10;;:21;;;;:::i;:::-;9488:9;:13;9498:2;9488:13;;;;;;;;;;;;;;;;:17;;:40;;;;:::i;:::-;9474:9;:13;9484:2;9474:13;;;;;;;;;;;;;;;:54;;;;9559:2;9544:41;;9553:4;9544:41;;;9563:21;9574:9;9563:6;:10;;:21;;;;:::i;:::-;9544:41;;;;;;:::i;:::-;;;;;;;;7223:2370;7154:2439;;;:::o;1317:190::-;1403:7;1436:1;1431;:6;;1439:12;1423:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1463:9;1479:1;1475;:5;;;;:::i;:::-;1463:17;;1498:1;1491:8;;;1317:190;;;;;:::o;9709:555::-;5106:4;5097:6;;:13;;;;;;;;;;;;;;;;;;9803:1:::1;9790:11;:14:::0;9787:27;9806:7:::1;9787:27;9828:11;::::0;::::1;;;;;;;;9824:25:::0;9841:7:::1;9824:25;9859:21;9897:1;9883:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9859:40;;9928:4;9910;9915:1;9910:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;9954:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9944:4;9949:1;9944:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;9987:62;10004:4;10019:15;;;;;;;;;;;10037:11;9987:8;:62::i;:::-;10060:15;;;;;;;;;;;:66;;;10141:11;10167:1;10183:4;10210;10230:15;10060:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;9776:488;5121:1;5142:5:::0;5133:6;;:14;;;;;;;;;;;;;;;;;;9709:555;:::o;10644:92::-;10701:10;;;;;;;;;;;:19;;:27;10721:6;10701:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10644:92;:::o;11743:195::-;11802:4;11819:12;11886:7;11874:20;11866:28;;11929:1;11922:4;:8;11915:15;;;11743:195;;;:::o;1515:246::-;1573:7;1602:1;1597;:6;1593:47;;1627:1;1620:8;;;;1593:47;1650:9;1666:1;1662;:5;;;;:::i;:::-;1650:17;;1695:1;1690;1686;:5;;;;:::i;:::-;:10;1678:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1752:1;1745:8;;;1515:246;;;;;:::o;1769:132::-;1827:7;1854:39;1858:1;1861;1854:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1847:46;;1769:132;;;;:::o;9603:98::-;9660:7;9687:1;9685;:3;9684:9;;9692:1;9684:9;;;9690:1;9684:9;9677:16;;9603:98;;;;:::o;986:179::-;1044:7;1064:9;1080:1;1076;:5;;;;:::i;:::-;1064:17;;1105:1;1100;:6;;1092:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1156:1;1149:8;;;986:179;;;;:::o;1173:136::-;1231:7;1258:43;1262:1;1265;1258:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1251:50;;1173:136;;;;:::o;1909:189::-;1995:7;2027:1;2023;:5;2030:12;2015:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2054:9;2070:1;2066;:5;;;;:::i;:::-;2054:17;;2089:1;2082:8;;;1909:189;;;;;:::o;88:117:1:-;197:1;194;187:12;334:126;371:7;411:42;404:5;400:54;389:65;;334:126;;;:::o;466:96::-;503:7;532:24;550:5;532:24;:::i;:::-;521:35;;466:96;;;:::o;568:122::-;641:24;659:5;641:24;:::i;:::-;634:5;631:35;621:63;;680:1;677;670:12;621:63;568:122;:::o;696:139::-;742:5;780:6;767:20;758:29;;796:33;823:5;796:33;:::i;:::-;696:139;;;;:::o;841:90::-;875:7;918:5;911:13;904:21;893:32;;841:90;;;:::o;937:116::-;1007:21;1022:5;1007:21;:::i;:::-;1000:5;997:32;987:60;;1043:1;1040;1033:12;987:60;937:116;:::o;1059:133::-;1102:5;1140:6;1127:20;1118:29;;1156:30;1180:5;1156:30;:::i;:::-;1059:133;;;;:::o;1198:468::-;1263:6;1271;1320:2;1308:9;1299:7;1295:23;1291:32;1288:119;;;1326:79;;:::i;:::-;1288:119;1446:1;1471:53;1516:7;1507:6;1496:9;1492:22;1471:53;:::i;:::-;1461:63;;1417:117;1573:2;1599:50;1641:7;1632:6;1621:9;1617:22;1599:50;:::i;:::-;1589:60;;1544:115;1198:468;;;;;:::o;1672:99::-;1724:6;1758:5;1752:12;1742:22;;1672:99;;;:::o;1777:169::-;1861:11;1895:6;1890:3;1883:19;1935:4;1930:3;1926:14;1911:29;;1777:169;;;;:::o;1952:246::-;2033:1;2043:113;2057:6;2054:1;2051:13;2043:113;;;2142:1;2137:3;2133:11;2127:18;2123:1;2118:3;2114:11;2107:39;2079:2;2076:1;2072:10;2067:15;;2043:113;;;2190:1;2181:6;2176:3;2172:16;2165:27;2014:184;1952:246;;;:::o;2204:102::-;2245:6;2296:2;2292:7;2287:2;2280:5;2276:14;2272:28;2262:38;;2204:102;;;:::o;2312:377::-;2400:3;2428:39;2461:5;2428:39;:::i;:::-;2483:71;2547:6;2542:3;2483:71;:::i;:::-;2476:78;;2563:65;2621:6;2616:3;2609:4;2602:5;2598:16;2563:65;:::i;:::-;2653:29;2675:6;2653:29;:::i;:::-;2648:3;2644:39;2637:46;;2404:285;2312:377;;;;:::o;2695:313::-;2808:4;2846:2;2835:9;2831:18;2823:26;;2895:9;2889:4;2885:20;2881:1;2870:9;2866:17;2859:47;2923:78;2996:4;2987:6;2923:78;:::i;:::-;2915:86;;2695:313;;;;:::o;3014:77::-;3051:7;3080:5;3069:16;;3014:77;;;:::o;3097:122::-;3170:24;3188:5;3170:24;:::i;:::-;3163:5;3160:35;3150:63;;3209:1;3206;3199:12;3150:63;3097:122;:::o;3225:139::-;3271:5;3309:6;3296:20;3287:29;;3325:33;3352:5;3325:33;:::i;:::-;3225:139;;;;:::o;3370:474::-;3438:6;3446;3495:2;3483:9;3474:7;3470:23;3466:32;3463:119;;;3501:79;;:::i;:::-;3463:119;3621:1;3646:53;3691:7;3682:6;3671:9;3667:22;3646:53;:::i;:::-;3636:63;;3592:117;3748:2;3774:53;3819:7;3810:6;3799:9;3795:22;3774:53;:::i;:::-;3764:63;;3719:118;3370:474;;;;;:::o;3850:109::-;3931:21;3946:5;3931:21;:::i;:::-;3926:3;3919:34;3850:109;;:::o;3965:210::-;4052:4;4090:2;4079:9;4075:18;4067:26;;4103:65;4165:1;4154:9;4150:17;4141:6;4103:65;:::i;:::-;3965:210;;;;:::o;4181:118::-;4268:24;4286:5;4268:24;:::i;:::-;4263:3;4256:37;4181:118;;:::o;4305:222::-;4398:4;4436:2;4425:9;4421:18;4413:26;;4449:71;4517:1;4506:9;4502:17;4493:6;4449:71;:::i;:::-;4305:222;;;;:::o;4533:619::-;4610:6;4618;4626;4675:2;4663:9;4654:7;4650:23;4646:32;4643:119;;;4681:79;;:::i;:::-;4643:119;4801:1;4826:53;4871:7;4862:6;4851:9;4847:22;4826:53;:::i;:::-;4816:63;;4772:117;4928:2;4954:53;4999:7;4990:6;4979:9;4975:22;4954:53;:::i;:::-;4944:63;;4899:118;5056:2;5082:53;5127:7;5118:6;5107:9;5103:22;5082:53;:::i;:::-;5072:63;;5027:118;4533:619;;;;;:::o;5158:86::-;5193:7;5233:4;5226:5;5222:16;5211:27;;5158:86;;;:::o;5250:112::-;5333:22;5349:5;5333:22;:::i;:::-;5328:3;5321:35;5250:112;;:::o;5368:214::-;5457:4;5495:2;5484:9;5480:18;5472:26;;5508:67;5572:1;5561:9;5557:17;5548:6;5508:67;:::i;:::-;5368:214;;;;:::o;5588:329::-;5647:6;5696:2;5684:9;5675:7;5671:23;5667:32;5664:119;;;5702:79;;:::i;:::-;5664:119;5822:1;5847:53;5892:7;5883:6;5872:9;5868:22;5847:53;:::i;:::-;5837:63;;5793:117;5588:329;;;;:::o;5923:118::-;6010:24;6028:5;6010:24;:::i;:::-;6005:3;5998:37;5923:118;;:::o;6047:222::-;6140:4;6178:2;6167:9;6163:18;6155:26;;6191:71;6259:1;6248:9;6244:17;6235:6;6191:71;:::i;:::-;6047:222;;;;:::o;6275:474::-;6343:6;6351;6400:2;6388:9;6379:7;6375:23;6371:32;6368:119;;;6406:79;;:::i;:::-;6368:119;6526:1;6551:53;6596:7;6587:6;6576:9;6572:22;6551:53;:::i;:::-;6541:63;;6497:117;6653:2;6679:53;6724:7;6715:6;6704:9;6700:22;6679:53;:::i;:::-;6669:63;;6624:118;6275:474;;;;;:::o;6755:329::-;6814:6;6863:2;6851:9;6842:7;6838:23;6834:32;6831:119;;;6869:79;;:::i;:::-;6831:119;6989:1;7014:53;7059:7;7050:6;7039:9;7035:22;7014:53;:::i;:::-;7004:63;;6960:117;6755:329;;;;:::o;7090:182::-;7230:34;7226:1;7218:6;7214:14;7207:58;7090:182;:::o;7278:366::-;7420:3;7441:67;7505:2;7500:3;7441:67;:::i;:::-;7434:74;;7517:93;7606:3;7517:93;:::i;:::-;7635:2;7630:3;7626:12;7619:19;;7278:366;;;:::o;7650:419::-;7816:4;7854:2;7843:9;7839:18;7831:26;;7903:9;7897:4;7893:20;7889:1;7878:9;7874:17;7867:47;7931:131;8057:4;7931:131;:::i;:::-;7923:139;;7650:419;;;:::o;8075:180::-;8123:77;8120:1;8113:88;8220:4;8217:1;8210:15;8244:4;8241:1;8234:15;8261:102;8303:8;8350:5;8347:1;8343:13;8322:34;;8261:102;;;:::o;8369:848::-;8430:5;8437:4;8461:6;8452:15;;8485:5;8476:14;;8499:712;8520:1;8510:8;8507:15;8499:712;;;8615:4;8610:3;8606:14;8600:4;8597:24;8594:50;;;8624:18;;:::i;:::-;8594:50;8674:1;8664:8;8660:16;8657:451;;;9089:4;9082:5;9078:16;9069:25;;8657:451;9139:4;9133;9129:15;9121:23;;9169:32;9192:8;9169:32;:::i;:::-;9157:44;;8499:712;;;8369:848;;;;;;;:::o;9223:1073::-;9277:5;9468:8;9458:40;;9489:1;9480:10;;9491:5;;9458:40;9517:4;9507:36;;9534:1;9525:10;;9536:5;;9507:36;9603:4;9651:1;9646:27;;;;9687:1;9682:191;;;;9596:277;;9646:27;9664:1;9655:10;;9666:5;;;9682:191;9727:3;9717:8;9714:17;9711:43;;;9734:18;;:::i;:::-;9711:43;9783:8;9780:1;9776:16;9767:25;;9818:3;9811:5;9808:14;9805:40;;;9825:18;;:::i;:::-;9805:40;9858:5;;;9596:277;;9982:2;9972:8;9969:16;9963:3;9957:4;9954:13;9950:36;9932:2;9922:8;9919:16;9914:2;9908:4;9905:12;9901:35;9885:111;9882:246;;;10038:8;10032:4;10028:19;10019:28;;10073:3;10066:5;10063:14;10060:40;;;10080:18;;:::i;:::-;10060:40;10113:5;;9882:246;10153:42;10191:3;10181:8;10175:4;10172:1;10153:42;:::i;:::-;10138:57;;;;10227:4;10222:3;10218:14;10211:5;10208:25;10205:51;;;10236:18;;:::i;:::-;10205:51;10285:4;10278:5;10274:16;10265:25;;9223:1073;;;;;;:::o;10302:281::-;10360:5;10384:23;10402:4;10384:23;:::i;:::-;10376:31;;10428:25;10444:8;10428:25;:::i;:::-;10416:37;;10472:104;10509:66;10499:8;10493:4;10472:104;:::i;:::-;10463:113;;10302:281;;;;:::o;10589:410::-;10629:7;10652:20;10670:1;10652:20;:::i;:::-;10647:25;;10686:20;10704:1;10686:20;:::i;:::-;10681:25;;10741:1;10738;10734:9;10763:30;10781:11;10763:30;:::i;:::-;10752:41;;10942:1;10933:7;10929:15;10926:1;10923:22;10903:1;10896:9;10876:83;10853:139;;10972:18;;:::i;:::-;10853:139;10637:362;10589:410;;;;:::o;11005:173::-;11145:25;11141:1;11133:6;11129:14;11122:49;11005:173;:::o;11184:366::-;11326:3;11347:67;11411:2;11406:3;11347:67;:::i;:::-;11340:74;;11423:93;11512:3;11423:93;:::i;:::-;11541:2;11536:3;11532:12;11525:19;;11184:366;;;:::o;11556:419::-;11722:4;11760:2;11749:9;11745:18;11737:26;;11809:9;11803:4;11799:20;11795:1;11784:9;11780:17;11773:47;11837:131;11963:4;11837:131;:::i;:::-;11829:139;;11556:419;;;:::o;11981:143::-;12038:5;12069:6;12063:13;12054:22;;12085:33;12112:5;12085:33;:::i;:::-;11981:143;;;;:::o;12130:351::-;12200:6;12249:2;12237:9;12228:7;12224:23;12220:32;12217:119;;;12255:79;;:::i;:::-;12217:119;12375:1;12400:64;12456:7;12447:6;12436:9;12432:22;12400:64;:::i;:::-;12390:74;;12346:128;12130:351;;;;:::o;12487:332::-;12608:4;12646:2;12635:9;12631:18;12623:26;;12659:71;12727:1;12716:9;12712:17;12703:6;12659:71;:::i;:::-;12740:72;12808:2;12797:9;12793:18;12784:6;12740:72;:::i;:::-;12487:332;;;;;:::o;12825:85::-;12870:7;12899:5;12888:16;;12825:85;;;:::o;12916:60::-;12944:3;12965:5;12958:12;;12916:60;;;:::o;12982:158::-;13040:9;13073:61;13091:42;13100:32;13126:5;13100:32;:::i;:::-;13091:42;:::i;:::-;13073:61;:::i;:::-;13060:74;;12982:158;;;:::o;13146:147::-;13241:45;13280:5;13241:45;:::i;:::-;13236:3;13229:58;13146:147;;:::o;13299:807::-;13548:4;13586:3;13575:9;13571:19;13563:27;;13600:71;13668:1;13657:9;13653:17;13644:6;13600:71;:::i;:::-;13681:72;13749:2;13738:9;13734:18;13725:6;13681:72;:::i;:::-;13763:80;13839:2;13828:9;13824:18;13815:6;13763:80;:::i;:::-;13853;13929:2;13918:9;13914:18;13905:6;13853:80;:::i;:::-;13943:73;14011:3;14000:9;13996:19;13987:6;13943:73;:::i;:::-;14026;14094:3;14083:9;14079:19;14070:6;14026:73;:::i;:::-;13299:807;;;;;;;;;:::o;14112:143::-;14169:5;14200:6;14194:13;14185:22;;14216:33;14243:5;14216:33;:::i;:::-;14112:143;;;;:::o;14261:663::-;14349:6;14357;14365;14414:2;14402:9;14393:7;14389:23;14385:32;14382:119;;;14420:79;;:::i;:::-;14382:119;14540:1;14565:64;14621:7;14612:6;14601:9;14597:22;14565:64;:::i;:::-;14555:74;;14511:128;14678:2;14704:64;14760:7;14751:6;14740:9;14736:22;14704:64;:::i;:::-;14694:74;;14649:129;14817:2;14843:64;14899:7;14890:6;14879:9;14875:22;14843:64;:::i;:::-;14833:74;;14788:129;14261:663;;;;;:::o;14930:332::-;15051:4;15089:2;15078:9;15074:18;15066:26;;15102:71;15170:1;15159:9;15155:17;15146:6;15102:71;:::i;:::-;15183:72;15251:2;15240:9;15236:18;15227:6;15183:72;:::i;:::-;14930:332;;;;;:::o;15268:137::-;15322:5;15353:6;15347:13;15338:22;;15369:30;15393:5;15369:30;:::i;:::-;15268:137;;;;:::o;15411:345::-;15478:6;15527:2;15515:9;15506:7;15502:23;15498:32;15495:119;;;15533:79;;:::i;:::-;15495:119;15653:1;15678:61;15731:7;15722:6;15711:9;15707:22;15678:61;:::i;:::-;15668:71;;15624:125;15411:345;;;;:::o;15762:223::-;15902:34;15898:1;15890:6;15886:14;15879:58;15971:6;15966:2;15958:6;15954:15;15947:31;15762:223;:::o;15991:366::-;16133:3;16154:67;16218:2;16213:3;16154:67;:::i;:::-;16147:74;;16230:93;16319:3;16230:93;:::i;:::-;16348:2;16343:3;16339:12;16332:19;;15991:366;;;:::o;16363:419::-;16529:4;16567:2;16556:9;16552:18;16544:26;;16616:9;16610:4;16606:20;16602:1;16591:9;16587:17;16580:47;16644:131;16770:4;16644:131;:::i;:::-;16636:139;;16363:419;;;:::o;16788:221::-;16928:34;16924:1;16916:6;16912:14;16905:58;16997:4;16992:2;16984:6;16980:15;16973:29;16788:221;:::o;17015:366::-;17157:3;17178:67;17242:2;17237:3;17178:67;:::i;:::-;17171:74;;17254:93;17343:3;17254:93;:::i;:::-;17372:2;17367:3;17363:12;17356:19;;17015:366;;;:::o;17387:419::-;17553:4;17591:2;17580:9;17576:18;17568:26;;17640:9;17634:4;17630:20;17626:1;17615:9;17611:17;17604:47;17668:131;17794:4;17668:131;:::i;:::-;17660:139;;17387:419;;;:::o;17812:224::-;17952:34;17948:1;17940:6;17936:14;17929:58;18021:7;18016:2;18008:6;18004:15;17997:32;17812:224;:::o;18042:366::-;18184:3;18205:67;18269:2;18264:3;18205:67;:::i;:::-;18198:74;;18281:93;18370:3;18281:93;:::i;:::-;18399:2;18394:3;18390:12;18383:19;;18042:366;;;:::o;18414:419::-;18580:4;18618:2;18607:9;18603:18;18595:26;;18667:9;18661:4;18657:20;18653:1;18642:9;18638:17;18631:47;18695:131;18821:4;18695:131;:::i;:::-;18687:139;;18414:419;;;:::o;18839:222::-;18979:34;18975:1;18967:6;18963:14;18956:58;19048:5;19043:2;19035:6;19031:15;19024:30;18839:222;:::o;19067:366::-;19209:3;19230:67;19294:2;19289:3;19230:67;:::i;:::-;19223:74;;19306:93;19395:3;19306:93;:::i;:::-;19424:2;19419:3;19415:12;19408:19;;19067:366;;;:::o;19439:419::-;19605:4;19643:2;19632:9;19628:18;19620:26;;19692:9;19686:4;19682:20;19678:1;19667:9;19663:17;19656:47;19720:131;19846:4;19720:131;:::i;:::-;19712:139;;19439:419;;;:::o;19864:228::-;20004:34;20000:1;19992:6;19988:14;19981:58;20073:11;20068:2;20060:6;20056:15;20049:36;19864:228;:::o;20098:366::-;20240:3;20261:67;20325:2;20320:3;20261:67;:::i;:::-;20254:74;;20337:93;20426:3;20337:93;:::i;:::-;20455:2;20450:3;20446:12;20439:19;;20098:366;;;:::o;20470:419::-;20636:4;20674:2;20663:9;20659:18;20651:26;;20723:9;20717:4;20713:20;20709:1;20698:9;20694:17;20687:47;20751:131;20877:4;20751:131;:::i;:::-;20743:139;;20470:419;;;:::o;20895:223::-;21035:34;21031:1;21023:6;21019:14;21012:58;21104:6;21099:2;21091:6;21087:15;21080:31;20895:223;:::o;21124:366::-;21266:3;21287:67;21351:2;21346:3;21287:67;:::i;:::-;21280:74;;21363:93;21452:3;21363:93;:::i;:::-;21481:2;21476:3;21472:12;21465:19;;21124:366;;;:::o;21496:419::-;21662:4;21700:2;21689:9;21685:18;21677:26;;21749:9;21743:4;21739:20;21735:1;21724:9;21720:17;21713:47;21777:131;21903:4;21777:131;:::i;:::-;21769:139;;21496:419;;;:::o;21921:175::-;22061:27;22057:1;22049:6;22045:14;22038:51;21921:175;:::o;22102:366::-;22244:3;22265:67;22329:2;22324:3;22265:67;:::i;:::-;22258:74;;22341:93;22430:3;22341:93;:::i;:::-;22459:2;22454:3;22450:12;22443:19;;22102:366;;;:::o;22474:419::-;22640:4;22678:2;22667:9;22663:18;22655:26;;22727:9;22721:4;22717:20;22713:1;22702:9;22698:17;22691:47;22755:131;22881:4;22755:131;:::i;:::-;22747:139;;22474:419;;;:::o;22899:191::-;22939:3;22958:20;22976:1;22958:20;:::i;:::-;22953:25;;22992:20;23010:1;22992:20;:::i;:::-;22987:25;;23035:1;23032;23028:9;23021:16;;23056:3;23053:1;23050:10;23047:36;;;23063:18;;:::i;:::-;23047:36;22899:191;;;;:::o;23096:176::-;23236:28;23232:1;23224:6;23220:14;23213:52;23096:176;:::o;23278:366::-;23420:3;23441:67;23505:2;23500:3;23441:67;:::i;:::-;23434:74;;23517:93;23606:3;23517:93;:::i;:::-;23635:2;23630:3;23626:12;23619:19;;23278:366;;;:::o;23650:419::-;23816:4;23854:2;23843:9;23839:18;23831:26;;23903:9;23897:4;23893:20;23889:1;23878:9;23874:17;23867:47;23931:131;24057:4;23931:131;:::i;:::-;23923:139;;23650:419;;;:::o;24075:233::-;24114:3;24137:24;24155:5;24137:24;:::i;:::-;24128:33;;24183:66;24176:5;24173:77;24170:103;;24253:18;;:::i;:::-;24170:103;24300:1;24293:5;24289:13;24282:20;;24075:233;;;:::o;24314:194::-;24354:4;24374:20;24392:1;24374:20;:::i;:::-;24369:25;;24408:20;24426:1;24408:20;:::i;:::-;24403:25;;24452:1;24449;24445:9;24437:17;;24476:1;24470:4;24467:11;24464:37;;;24481:18;;:::i;:::-;24464:37;24314:194;;;;:::o;24514:180::-;24562:77;24559:1;24552:88;24659:4;24656:1;24649:15;24683:4;24680:1;24673:15;24700:180;24748:77;24745:1;24738:88;24845:4;24842:1;24835:15;24869:4;24866:1;24859:15;24886:114;24953:6;24987:5;24981:12;24971:22;;24886:114;;;:::o;25006:184::-;25105:11;25139:6;25134:3;25127:19;25179:4;25174:3;25170:14;25155:29;;25006:184;;;;:::o;25196:132::-;25263:4;25286:3;25278:11;;25316:4;25311:3;25307:14;25299:22;;25196:132;;;:::o;25334:108::-;25411:24;25429:5;25411:24;:::i;:::-;25406:3;25399:37;25334:108;;:::o;25448:179::-;25517:10;25538:46;25580:3;25572:6;25538:46;:::i;:::-;25616:4;25611:3;25607:14;25593:28;;25448:179;;;;:::o;25633:113::-;25703:4;25735;25730:3;25726:14;25718:22;;25633:113;;;:::o;25782:732::-;25901:3;25930:54;25978:5;25930:54;:::i;:::-;26000:86;26079:6;26074:3;26000:86;:::i;:::-;25993:93;;26110:56;26160:5;26110:56;:::i;:::-;26189:7;26220:1;26205:284;26230:6;26227:1;26224:13;26205:284;;;26306:6;26300:13;26333:63;26392:3;26377:13;26333:63;:::i;:::-;26326:70;;26419:60;26472:6;26419:60;:::i;:::-;26409:70;;26265:224;26252:1;26249;26245:9;26240:14;;26205:284;;;26209:14;26505:3;26498:10;;25906:608;;;25782:732;;;;:::o;26520:831::-;26783:4;26821:3;26810:9;26806:19;26798:27;;26835:71;26903:1;26892:9;26888:17;26879:6;26835:71;:::i;:::-;26916:80;26992:2;26981:9;26977:18;26968:6;26916:80;:::i;:::-;27043:9;27037:4;27033:20;27028:2;27017:9;27013:18;27006:48;27071:108;27174:4;27165:6;27071:108;:::i;:::-;27063:116;;27189:72;27257:2;27246:9;27242:18;27233:6;27189:72;:::i;:::-;27271:73;27339:3;27328:9;27324:19;27315:6;27271:73;:::i;:::-;26520:831;;;;;;;;:::o;27357:180::-;27405:77;27402:1;27395:88;27502:4;27499:1;27492:15;27526:4;27523:1;27516:15;27543:185;27583:1;27600:20;27618:1;27600:20;:::i;:::-;27595:25;;27634:20;27652:1;27634:20;:::i;:::-;27629:25;;27673:1;27663:35;;27678:18;;:::i;:::-;27663:35;27720:1;27717;27713:9;27708:14;;27543:185;;;;:::o;27734:220::-;27874:34;27870:1;27862:6;27858:14;27851:58;27943:3;27938:2;27930:6;27926:15;27919:28;27734:220;:::o;27960:366::-;28102:3;28123:67;28187:2;28182:3;28123:67;:::i;:::-;28116:74;;28199:93;28288:3;28199:93;:::i;:::-;28317:2;28312:3;28308:12;28301:19;;27960:366;;;:::o;28332:419::-;28498:4;28536:2;28525:9;28521:18;28513:26;;28585:9;28579:4;28575:20;28571:1;28560:9;28556:17;28549:47;28613:131;28739:4;28613:131;:::i;:::-;28605:139;;28332:419;;;:::o;28757:177::-;28897:29;28893:1;28885:6;28881:14;28874:53;28757:177;:::o;28940:366::-;29082:3;29103:67;29167:2;29162:3;29103:67;:::i;:::-;29096:74;;29179:93;29268:3;29179:93;:::i;:::-;29297:2;29292:3;29288:12;29281:19;;28940:366;;;:::o;29312:419::-;29478:4;29516:2;29505:9;29501:18;29493:26;;29565:9;29559:4;29555:20;29551:1;29540:9;29536:17;29529:47;29593:131;29719:4;29593:131;:::i;:::-;29585:139;;29312:419;;;:::o
Swarm Source
ipfs://4ab1747002f070e638d3400d3c2b27c9deb9fe53c370d67e656dbf0e2e57480c
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.