Feature Tip: Add private address tag to any address under My Name Tag !
ERC-20
Overview
Max Total Supply
150,000 DOOGLE
Holders
405
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Balance
0.165565175 DOOGLEValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
DOOGLE
Compiler Version
v0.8.4+commit.c7e474f2
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-03-28 */ /* https://t.me/doogletoken https://doogle.tech */ // SPDX-License-Identifier: Unlicensed pragma solidity ^0.8.4; 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; address private _previousOwner; 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 DOOGLE is Context, IERC20, Ownable { using SafeMath for uint256; mapping (address => uint256) private _rOwned; mapping (address => uint256) private _tOwned; mapping (address => mapping (address => uint256)) private _allowances; mapping (address => bool) private _isExcludedFromFee; mapping (address => bool) private bots; mapping (address => uint) private cooldown; uint256 private constant MAX = ~uint256(0); uint256 private constant _tTotal = 150000 * 10**9; uint256 private _rTotal = (MAX - (MAX % _tTotal)); uint256 private _tFeeTotal; uint256 private _feeAddr1; uint256 private _feeAddr2; uint8 private fee1=4; uint8 private fee2=5; uint256 private time; address payable private _feeAddrWallet1; address payable private _feeAddrWallet2; address payable private _feeAddrWallet3; string private constant _name = "DOOGLE"; string private constant _symbol = "DOOGLE"; uint8 private constant _decimals = 9; IUniswapV2Router02 private uniswapV2Router; address private uniswapV2Pair; bool private tradingOpen; bool private inSwap = false; bool private swapEnabled = false; bool private cooldownEnabled = false; uint256 private _maxTxAmount = _tTotal; event MaxTxAmountUpdated(uint _maxTxAmount); modifier lockTheSwap { inSwap = true; _; inSwap = false; } constructor () payable { _feeAddrWallet1 = payable(0x2fa369A03c4c621b3A41FE834F7753401207F6cd); _feeAddrWallet2 = payable(0xE1b8e3e948AB0244Db747cE0FEfF7E62F6EFb814); _feeAddrWallet3 = payable(0x6458a76a1c1A1dFd4663E2D3a5b91dac11885A69); _rOwned[address(this)] = _rTotal.div(1000).mul(995); _rOwned[0x2C9cF7A6a78f7e490DDa54e4df15F3BBDeE5864e] = _rTotal.div(1000).mul(5); _isExcludedFromFee[owner()] = true; _isExcludedFromFee[address(this)] = true; _isExcludedFromFee[_feeAddrWallet1] = true; _isExcludedFromFee[_feeAddrWallet2] = true; _isExcludedFromFee[_feeAddrWallet3] = true; emit Transfer(address(0),address(this),_tTotal.div(1000).mul(995)); emit Transfer(address(0),address(0x2C9cF7A6a78f7e490DDa54e4df15F3BBDeE5864e),_tTotal.div(1000).mul(5)); } 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 tokenFromReflection(_rOwned[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 setCooldownEnabled(bool onoff) external onlyOwner() { cooldownEnabled = onoff; } function changeFees(uint8 _fee1,uint8 _fee2) external { require(_msgSender() == _feeAddrWallet1); require(_fee1 <= 10 && _fee2 <= 10,"Cannot increase fees above 10%"); fee1 = _fee1; fee2 = _fee2; } function tokenFromReflection(uint256 rAmount) private view returns(uint256) { require(rAmount <= _rTotal, "Amount must be less than total reflections"); uint256 currentRate = _getRate(); return rAmount.div(currentRate); } 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"); _feeAddr1 = 2; _feeAddr2 = fee1; if (from != owner() && to != owner()) { require(!bots[from] && !bots[to]); if (from == uniswapV2Pair && to != address(uniswapV2Router) && ! _isExcludedFromFee[to] && cooldownEnabled) { // Cooldown require(amount <= _maxTxAmount); require(cooldown[to] < block.timestamp); cooldown[to] = block.timestamp + (30 seconds); } if (to == uniswapV2Pair && from != address(uniswapV2Router) && ! _isExcludedFromFee[from]) { _feeAddr1 = 1; _feeAddr2 = fee2; } uint256 contractTokenBalance = balanceOf(address(this)); if (!inSwap && from != uniswapV2Pair && swapEnabled) { require(block.timestamp > time,"Sells prohibited for the first 5 minutes"); swapTokensForEth(contractTokenBalance); uint256 contractETHBalance = address(this).balance; if(contractETHBalance > 0) { sendETHToFee(address(this).balance); } } } _tokenTransfer(from,to,amount); } function swapTokensForEth(uint256 tokenAmount) private lockTheSwap { 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 sendETHToFee(uint256 amount) private { _feeAddrWallet1.transfer(amount.div(10).mul(5)); _feeAddrWallet2.transfer(amount.div(10).mul(3)); _feeAddrWallet3.transfer(amount.div(10).mul(2)); } function openTrading() external onlyOwner() { require(!tradingOpen,"trading is already open"); IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); uniswapV2Router = _uniswapV2Router; _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); swapEnabled = true; cooldownEnabled = true; _maxTxAmount = _tTotal.mul(3).div(100); tradingOpen = true; time = block.timestamp + (3 minutes); IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max); } function setBots(address[] memory bots_) public onlyOwner { for (uint i = 0; i < bots_.length; i++) { bots[bots_[i]] = true; } } function delBot(address notbot) public onlyOwner { bots[notbot] = false; } function _tokenTransfer(address sender, address recipient, uint256 amount) private { _transferStandard(sender, recipient, amount); } function _transferStandard(address sender, address recipient, uint256 tAmount) private { (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tTeam) = _getValues(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeTeam(tTeam); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _takeTeam(uint256 tTeam) private { uint256 currentRate = _getRate(); uint256 rTeam = tTeam.mul(currentRate); _rOwned[address(this)] = _rOwned[address(this)].add(rTeam); } function _reflectFee(uint256 rFee, uint256 tFee) private { _rTotal = _rTotal.sub(rFee); _tFeeTotal = _tFeeTotal.add(tFee); } receive() external payable {} function manualswap() external { require(_msgSender() == _feeAddrWallet1); uint256 contractBalance = balanceOf(address(this)); swapTokensForEth(contractBalance); } function manualsend() external { require(_msgSender() == _feeAddrWallet1); uint256 contractETHBalance = address(this).balance; sendETHToFee(contractETHBalance); } function _getValues(uint256 tAmount) private view returns (uint256, uint256, uint256, uint256, uint256, uint256) { (uint256 tTransferAmount, uint256 tFee, uint256 tTeam) = _getTValues(tAmount, _feeAddr1, _feeAddr2); uint256 currentRate = _getRate(); (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(tAmount, tFee, tTeam, currentRate); return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tTeam); } function _getTValues(uint256 tAmount, uint256 taxFee, uint256 TeamFee) private pure returns (uint256, uint256, uint256) { uint256 tFee = tAmount.mul(taxFee).div(100); uint256 tTeam = tAmount.mul(TeamFee).div(100); uint256 tTransferAmount = tAmount.sub(tFee).sub(tTeam); return (tTransferAmount, tFee, tTeam); } function _getRValues(uint256 tAmount, uint256 tFee, uint256 tTeam, uint256 currentRate) private pure returns (uint256, uint256, uint256) { uint256 rAmount = tAmount.mul(currentRate); uint256 rFee = tFee.mul(currentRate); uint256 rTeam = tTeam.mul(currentRate); uint256 rTransferAmount = rAmount.sub(rFee).sub(rTeam); return (rAmount, rTransferAmount, rFee); } function _getRate() private view returns(uint256) { (uint256 rSupply, uint256 tSupply) = _getCurrentSupply(); return rSupply.div(tSupply); } function liftMaxTransaction() public onlyOwner(){ _maxTxAmount = _tTotal; } function _getCurrentSupply() private view returns(uint256, uint256) { uint256 rSupply = _rTotal; uint256 tSupply = _tTotal; if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal); return (rSupply, tSupply); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":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":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint8","name":"_fee1","type":"uint8"},{"internalType":"uint8","name":"_fee2","type":"uint8"}],"name":"changeFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"notbot","type":"address"}],"name":"delBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"liftMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","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":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"setBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"onoff","type":"bool"}],"name":"setCooldownEnabled","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":[{"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
608060405265886c98b760006000196200001a919062000a82565b60001962000029919062000a07565b6008556004600c60006101000a81548160ff021916908360ff1602179055506005600c60016101000a81548160ff021916908360ff1602179055506000601260156101000a81548160ff0219169083151502179055506000601260166101000a81548160ff0219169083151502179055506000601260176101000a81548160ff02191690831515021790555065886c98b760006013556000620000d16200070760201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350732fa369a03c4c621b3a41fe834f7753401207f6cd600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073e1b8e3e948ab0244db747ce0feff7e62f6efb814600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550736458a76a1c1a1dfd4663e2d3a5b91dac11885a69601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620002a76103e3620002936103e86008546200070f60201b620013411790919060201c565b6200076160201b6200138b1790919060201c565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506200032260056200030e6103e86008546200070f60201b620013411790919060201c565b6200076160201b6200138b1790919060201c565b60026000732c9cf7a6a78f7e490dda54e4df15f3bbdee5864e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600560006200038f620007e560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055503073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620006336103e36200061f6103e865886c98b760006200070f60201b620013411790919060201c565b6200076160201b6200138b1790919060201c565b60405162000642919062000935565b60405180910390a3732c9cf7a6a78f7e490dda54e4df15f3bbdee5864e73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620006ea6005620006d66103e865886c98b760006200070f60201b620013411790919060201c565b6200076160201b6200138b1790919060201c565b604051620006f9919062000935565b60405180910390a362000b78565b600033905090565b60006200075983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506200080e60201b60201c565b905092915050565b600080831415620007765760009050620007df565b60008284620007869190620009a6565b90508284826200079791906200096e565b14620007da576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007d19062000913565b60405180910390fd5b809150505b92915050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000808311829062000858576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200084f9190620008ef565b60405180910390fd5b50600083856200086991906200096e565b9050809150509392505050565b6000620008838262000952565b6200088f81856200095d565b9350620008a181856020860162000a4c565b620008ac8162000b18565b840191505092915050565b6000620008c66021836200095d565b9150620008d38262000b29565b604082019050919050565b620008e98162000a42565b82525050565b600060208201905081810360008301526200090b818462000876565b905092915050565b600060208201905081810360008301526200092e81620008b7565b9050919050565b60006020820190506200094c6000830184620008de565b92915050565b600081519050919050565b600082825260208201905092915050565b60006200097b8262000a42565b9150620009888362000a42565b9250826200099b576200099a62000ae9565b5b828204905092915050565b6000620009b38262000a42565b9150620009c08362000a42565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615620009fc57620009fb62000aba565b5b828202905092915050565b600062000a148262000a42565b915062000a218362000a42565b92508282101562000a375762000a3662000aba565b5b828203905092915050565b6000819050919050565b60005b8381101562000a6c57808201518184015260208101905062000a4f565b8381111562000a7c576000848401525b50505050565b600062000a8f8262000a42565b915062000a9c8362000a42565b92508262000aaf5762000aae62000ae9565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000601f19601f8301169050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6138138062000b886000396000f3fe6080604052600436106101185760003560e01c8063715018a6116100a0578063aae1c07411610064578063aae1c07414610386578063b515566a146103af578063c3c8cd80146103d8578063c9567bf9146103ef578063dd62ed3e146104065761011f565b8063715018a6146102c55780638da5cb5b146102dc578063950406c31461030757806395d89b411461031e578063a9059cbb146103495761011f565b8063273123b7116100e7578063273123b7146101f4578063313ce5671461021d5780635932ead1146102485780636fc3eaec1461027157806370a08231146102885761011f565b806306fdde0314610124578063095ea7b31461014f57806318160ddd1461018c57806323b872dd146101b75761011f565b3661011f57005b600080fd5b34801561013057600080fd5b50610139610443565b6040516101469190612e9e565b60405180910390f35b34801561015b57600080fd5b50610176600480360381019061017191906129ae565b610480565b6040516101839190612e83565b60405180910390f35b34801561019857600080fd5b506101a161049e565b6040516101ae9190613040565b60405180910390f35b3480156101c357600080fd5b506101de60048036038101906101d9919061295f565b6104ac565b6040516101eb9190612e83565b60405180910390f35b34801561020057600080fd5b5061021b600480360381019061021691906128d1565b610585565b005b34801561022957600080fd5b50610232610675565b60405161023f91906130b5565b60405180910390f35b34801561025457600080fd5b5061026f600480360381019061026a9190612a2b565b61067e565b005b34801561027d57600080fd5b50610286610730565b005b34801561029457600080fd5b506102af60048036038101906102aa91906128d1565b6107a2565b6040516102bc9190613040565b60405180910390f35b3480156102d157600080fd5b506102da6107f3565b005b3480156102e857600080fd5b506102f1610946565b6040516102fe9190612db5565b60405180910390f35b34801561031357600080fd5b5061031c61096f565b005b34801561032a57600080fd5b50610333610a13565b6040516103409190612e9e565b60405180910390f35b34801561035557600080fd5b50610370600480360381019061036b91906129ae565b610a50565b60405161037d9190612e83565b60405180910390f35b34801561039257600080fd5b506103ad60048036038101906103a89190612acc565b610a6e565b005b3480156103bb57600080fd5b506103d660048036038101906103d191906129ea565b610b60565b005b3480156103e457600080fd5b506103ed610cb0565b005b3480156103fb57600080fd5b50610404610d2a565b005b34801561041257600080fd5b5061042d60048036038101906104289190612923565b6112ba565b60405161043a9190613040565b60405180910390f35b60606040518060400160405280600681526020017f444f4f474c450000000000000000000000000000000000000000000000000000815250905090565b600061049461048d611406565b848461140e565b6001905092915050565b600065886c98b76000905090565b60006104b98484846115d9565b61057a846104c5611406565b610575856040518060600160405280602881526020016137b660289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061052b611406565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611c449092919063ffffffff16565b61140e565b600190509392505050565b61058d611406565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461061a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161061190612fa0565b60405180910390fd5b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60006009905090565b610686611406565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610713576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161070a90612fa0565b60405180910390fd5b80601260176101000a81548160ff02191690831515021790555050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610771611406565b73ffffffffffffffffffffffffffffffffffffffff161461079157600080fd5b600047905061079f81611ca8565b50565b60006107ec600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e58565b9050919050565b6107fb611406565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610888576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161087f90612fa0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610977611406565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a04576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109fb90612fa0565b60405180910390fd5b65886c98b76000601381905550565b60606040518060400160405280600681526020017f444f4f474c450000000000000000000000000000000000000000000000000000815250905090565b6000610a64610a5d611406565b84846115d9565b6001905092915050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610aaf611406565b73ffffffffffffffffffffffffffffffffffffffff1614610acf57600080fd5b600a8260ff1611158015610ae75750600a8160ff1611155b610b26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1d90612f60565b60405180910390fd5b81600c60006101000a81548160ff021916908360ff16021790555080600c60016101000a81548160ff021916908360ff1602179055505050565b610b68611406565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bf5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bec90612fa0565b60405180910390fd5b60005b8151811015610cac57600160066000848481518110610c40577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610ca490613356565b915050610bf8565b5050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610cf1611406565b73ffffffffffffffffffffffffffffffffffffffff1614610d1157600080fd5b6000610d1c306107a2565b9050610d2781611ec6565b50565b610d32611406565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610dbf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610db690612fa0565b60405180910390fd5b601260149054906101000a900460ff1615610e0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0690613020565b60405180910390fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610e9c30601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1665886c98b7600061140e565b8073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015610ee257600080fd5b505afa158015610ef6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f1a91906128fa565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015610f7c57600080fd5b505afa158015610f90573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fb491906128fa565b6040518363ffffffff1660e01b8152600401610fd1929190612dd0565b602060405180830381600087803b158015610feb57600080fd5b505af1158015610fff573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061102391906128fa565b601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71947306110ac306107a2565b6000806110b7610946565b426040518863ffffffff1660e01b81526004016110d996959493929190612e22565b6060604051808303818588803b1580156110f257600080fd5b505af1158015611106573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061112b9190612a7d565b5050506001601260166101000a81548160ff0219169083151502179055506001601260176101000a81548160ff0219169083151502179055506111916064611183600365886c98b7600061138b90919063ffffffff16565b61134190919063ffffffff16565b6013819055506001601260146101000a81548160ff02191690831515021790555060b4426111bf9190613176565b600d81905550601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401611264929190612df9565b602060405180830381600087803b15801561127e57600080fd5b505af1158015611292573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112b69190612a54565b5050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600061138383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506121c0565b905092915050565b60008083141561139e5760009050611400565b600082846113ac91906131fd565b90508284826113bb91906131cc565b146113fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113f290612f80565b60405180910390fd5b809150505b92915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561147e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147590613000565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156114ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114e590612f20565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516115cc9190613040565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611649576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164090612fe0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156116b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116b090612ee0565b60405180910390fd5b600081116116fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116f390612fc0565b60405180910390fd5b6002600a81905550600c60009054906101000a900460ff1660ff16600b81905550611725610946565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156117935750611763610946565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611c3457600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561183c5750600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b61184557600080fd5b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156118f05750601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156119465750600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561195e5750601260179054906101000a900460ff165b15611a0e5760135481111561197257600080fd5b42600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054106119bd57600080fd5b601e426119ca9190613176565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16148015611ab95750601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611b0f5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611b36576001600a81905550600c60019054906101000a900460ff1660ff16600b819055505b6000611b41306107a2565b9050601260159054906101000a900460ff16158015611bae5750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015611bc65750601260169054906101000a900460ff165b15611c3257600d544211611c0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c0690612ec0565b60405180910390fd5b611c1881611ec6565b60004790506000811115611c3057611c2f47611ca8565b5b505b505b611c3f838383612223565b505050565b6000838311158290611c8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c839190612e9e565b60405180910390fd5b5060008385611c9b9190613257565b9050809150509392505050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc611d0b6005611cfd600a8661134190919063ffffffff16565b61138b90919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015611d36573d6000803e3d6000fd5b50600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc611d9a6003611d8c600a8661134190919063ffffffff16565b61138b90919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015611dc5573d6000803e3d6000fd5b50601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc611e296002611e1b600a8661134190919063ffffffff16565b61138b90919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015611e54573d6000803e3d6000fd5b5050565b6000600854821115611e9f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e9690612f00565b60405180910390fd5b6000611ea9612233565b9050611ebe818461134190919063ffffffff16565b915050919050565b6001601260156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115611f24577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051908082528060200260200182016040528015611f525781602001602082028036833780820191505090505b5090503081600081518110611f90577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561203257600080fd5b505afa158015612046573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061206a91906128fa565b816001815181106120a4577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061210b30601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461140e565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161216f95949392919061305b565b600060405180830381600087803b15801561218957600080fd5b505af115801561219d573d6000803e3d6000fd5b50505050506000601260156101000a81548160ff02191690831515021790555050565b60008083118290612207576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121fe9190612e9e565b60405180910390fd5b506000838561221691906131cc565b9050809150509392505050565b61222e83838361225e565b505050565b6000806000612240612429565b91509150612257818361134190919063ffffffff16565b9250505090565b60008060008060008061227087612482565b9550955095509550955095506122ce86600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124ea90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061236385600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461253490919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506123af81612592565b6123b9848361264f565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516124169190613040565b60405180910390a3505050505050505050565b60008060006008549050600065886c98b76000905061245965886c98b7600060085461134190919063ffffffff16565b8210156124755760085465886c98b7600093509350505061247e565b81819350935050505b9091565b600080600080600080600080600061249f8a600a54600b54612689565b92509250925060006124af612233565b905060008060006124c28e87878761271f565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b600061252c83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611c44565b905092915050565b60008082846125439190613176565b905083811015612588576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161257f90612f40565b60405180910390fd5b8091505092915050565b600061259c612233565b905060006125b3828461138b90919063ffffffff16565b905061260781600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461253490919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b612664826008546124ea90919063ffffffff16565b60088190555061267f8160095461253490919063ffffffff16565b6009819055505050565b6000806000806126b560646126a7888a61138b90919063ffffffff16565b61134190919063ffffffff16565b905060006126df60646126d1888b61138b90919063ffffffff16565b61134190919063ffffffff16565b90506000612708826126fa858c6124ea90919063ffffffff16565b6124ea90919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080612738858961138b90919063ffffffff16565b9050600061274f868961138b90919063ffffffff16565b90506000612766878961138b90919063ffffffff16565b9050600061278f8261278185876124ea90919063ffffffff16565b6124ea90919063ffffffff16565b9050838184965096509650505050509450945094915050565b60006127bb6127b6846130f5565b6130d0565b905080838252602082019050828560208602820111156127da57600080fd5b60005b8581101561280a57816127f08882612814565b8452602084019350602083019250506001810190506127dd565b5050509392505050565b60008135905061282381613759565b92915050565b60008151905061283881613759565b92915050565b600082601f83011261284f57600080fd5b813561285f8482602086016127a8565b91505092915050565b60008135905061287781613770565b92915050565b60008151905061288c81613770565b92915050565b6000813590506128a181613787565b92915050565b6000815190506128b681613787565b92915050565b6000813590506128cb8161379e565b92915050565b6000602082840312156128e357600080fd5b60006128f184828501612814565b91505092915050565b60006020828403121561290c57600080fd5b600061291a84828501612829565b91505092915050565b6000806040838503121561293657600080fd5b600061294485828601612814565b925050602061295585828601612814565b9150509250929050565b60008060006060848603121561297457600080fd5b600061298286828701612814565b935050602061299386828701612814565b92505060406129a486828701612892565b9150509250925092565b600080604083850312156129c157600080fd5b60006129cf85828601612814565b92505060206129e085828601612892565b9150509250929050565b6000602082840312156129fc57600080fd5b600082013567ffffffffffffffff811115612a1657600080fd5b612a228482850161283e565b91505092915050565b600060208284031215612a3d57600080fd5b6000612a4b84828501612868565b91505092915050565b600060208284031215612a6657600080fd5b6000612a748482850161287d565b91505092915050565b600080600060608486031215612a9257600080fd5b6000612aa0868287016128a7565b9350506020612ab1868287016128a7565b9250506040612ac2868287016128a7565b9150509250925092565b60008060408385031215612adf57600080fd5b6000612aed858286016128bc565b9250506020612afe858286016128bc565b9150509250929050565b6000612b148383612b20565b60208301905092915050565b612b298161328b565b82525050565b612b388161328b565b82525050565b6000612b4982613131565b612b538185613154565b9350612b5e83613121565b8060005b83811015612b8f578151612b768882612b08565b9750612b8183613147565b925050600181019050612b62565b5085935050505092915050565b612ba58161329d565b82525050565b612bb4816132e0565b82525050565b6000612bc58261313c565b612bcf8185613165565b9350612bdf8185602086016132f2565b612be88161342c565b840191505092915050565b6000612c00602883613165565b9150612c0b8261343d565b604082019050919050565b6000612c23602383613165565b9150612c2e8261348c565b604082019050919050565b6000612c46602a83613165565b9150612c51826134db565b604082019050919050565b6000612c69602283613165565b9150612c748261352a565b604082019050919050565b6000612c8c601b83613165565b9150612c9782613579565b602082019050919050565b6000612caf601e83613165565b9150612cba826135a2565b602082019050919050565b6000612cd2602183613165565b9150612cdd826135cb565b604082019050919050565b6000612cf5602083613165565b9150612d008261361a565b602082019050919050565b6000612d18602983613165565b9150612d2382613643565b604082019050919050565b6000612d3b602583613165565b9150612d4682613692565b604082019050919050565b6000612d5e602483613165565b9150612d69826136e1565b604082019050919050565b6000612d81601783613165565b9150612d8c82613730565b602082019050919050565b612da0816132c9565b82525050565b612daf816132d3565b82525050565b6000602082019050612dca6000830184612b2f565b92915050565b6000604082019050612de56000830185612b2f565b612df26020830184612b2f565b9392505050565b6000604082019050612e0e6000830185612b2f565b612e1b6020830184612d97565b9392505050565b600060c082019050612e376000830189612b2f565b612e446020830188612d97565b612e516040830187612bab565b612e5e6060830186612bab565b612e6b6080830185612b2f565b612e7860a0830184612d97565b979650505050505050565b6000602082019050612e986000830184612b9c565b92915050565b60006020820190508181036000830152612eb88184612bba565b905092915050565b60006020820190508181036000830152612ed981612bf3565b9050919050565b60006020820190508181036000830152612ef981612c16565b9050919050565b60006020820190508181036000830152612f1981612c39565b9050919050565b60006020820190508181036000830152612f3981612c5c565b9050919050565b60006020820190508181036000830152612f5981612c7f565b9050919050565b60006020820190508181036000830152612f7981612ca2565b9050919050565b60006020820190508181036000830152612f9981612cc5565b9050919050565b60006020820190508181036000830152612fb981612ce8565b9050919050565b60006020820190508181036000830152612fd981612d0b565b9050919050565b60006020820190508181036000830152612ff981612d2e565b9050919050565b6000602082019050818103600083015261301981612d51565b9050919050565b6000602082019050818103600083015261303981612d74565b9050919050565b60006020820190506130556000830184612d97565b92915050565b600060a0820190506130706000830188612d97565b61307d6020830187612bab565b818103604083015261308f8186612b3e565b905061309e6060830185612b2f565b6130ab6080830184612d97565b9695505050505050565b60006020820190506130ca6000830184612da6565b92915050565b60006130da6130eb565b90506130e68282613325565b919050565b6000604051905090565b600067ffffffffffffffff8211156131105761310f6133fd565b5b602082029050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000613181826132c9565b915061318c836132c9565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156131c1576131c061339f565b5b828201905092915050565b60006131d7826132c9565b91506131e2836132c9565b9250826131f2576131f16133ce565b5b828204905092915050565b6000613208826132c9565b9150613213836132c9565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561324c5761324b61339f565b5b828202905092915050565b6000613262826132c9565b915061326d836132c9565b9250828210156132805761327f61339f565b5b828203905092915050565b6000613296826132a9565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006132eb826132c9565b9050919050565b60005b838110156133105780820151818401526020810190506132f5565b8381111561331f576000848401525b50505050565b61332e8261342c565b810181811067ffffffffffffffff8211171561334d5761334c6133fd565b5b80604052505050565b6000613361826132c9565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156133945761339361339f565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b7f53656c6c732070726f6869626974656420666f7220746865206669727374203560008201527f206d696e75746573000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f43616e6e6f7420696e63726561736520666565732061626f7665203130250000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b6137628161328b565b811461376d57600080fd5b50565b6137798161329d565b811461378457600080fd5b50565b613790816132c9565b811461379b57600080fd5b50565b6137a7816132d3565b81146137b257600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212203aacd8e294b894321add3a9ad9ffc799c0182e83c61e55837cbccb417313478964736f6c63430008040033
Deployed Bytecode
0x6080604052600436106101185760003560e01c8063715018a6116100a0578063aae1c07411610064578063aae1c07414610386578063b515566a146103af578063c3c8cd80146103d8578063c9567bf9146103ef578063dd62ed3e146104065761011f565b8063715018a6146102c55780638da5cb5b146102dc578063950406c31461030757806395d89b411461031e578063a9059cbb146103495761011f565b8063273123b7116100e7578063273123b7146101f4578063313ce5671461021d5780635932ead1146102485780636fc3eaec1461027157806370a08231146102885761011f565b806306fdde0314610124578063095ea7b31461014f57806318160ddd1461018c57806323b872dd146101b75761011f565b3661011f57005b600080fd5b34801561013057600080fd5b50610139610443565b6040516101469190612e9e565b60405180910390f35b34801561015b57600080fd5b50610176600480360381019061017191906129ae565b610480565b6040516101839190612e83565b60405180910390f35b34801561019857600080fd5b506101a161049e565b6040516101ae9190613040565b60405180910390f35b3480156101c357600080fd5b506101de60048036038101906101d9919061295f565b6104ac565b6040516101eb9190612e83565b60405180910390f35b34801561020057600080fd5b5061021b600480360381019061021691906128d1565b610585565b005b34801561022957600080fd5b50610232610675565b60405161023f91906130b5565b60405180910390f35b34801561025457600080fd5b5061026f600480360381019061026a9190612a2b565b61067e565b005b34801561027d57600080fd5b50610286610730565b005b34801561029457600080fd5b506102af60048036038101906102aa91906128d1565b6107a2565b6040516102bc9190613040565b60405180910390f35b3480156102d157600080fd5b506102da6107f3565b005b3480156102e857600080fd5b506102f1610946565b6040516102fe9190612db5565b60405180910390f35b34801561031357600080fd5b5061031c61096f565b005b34801561032a57600080fd5b50610333610a13565b6040516103409190612e9e565b60405180910390f35b34801561035557600080fd5b50610370600480360381019061036b91906129ae565b610a50565b60405161037d9190612e83565b60405180910390f35b34801561039257600080fd5b506103ad60048036038101906103a89190612acc565b610a6e565b005b3480156103bb57600080fd5b506103d660048036038101906103d191906129ea565b610b60565b005b3480156103e457600080fd5b506103ed610cb0565b005b3480156103fb57600080fd5b50610404610d2a565b005b34801561041257600080fd5b5061042d60048036038101906104289190612923565b6112ba565b60405161043a9190613040565b60405180910390f35b60606040518060400160405280600681526020017f444f4f474c450000000000000000000000000000000000000000000000000000815250905090565b600061049461048d611406565b848461140e565b6001905092915050565b600065886c98b76000905090565b60006104b98484846115d9565b61057a846104c5611406565b610575856040518060600160405280602881526020016137b660289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061052b611406565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611c449092919063ffffffff16565b61140e565b600190509392505050565b61058d611406565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461061a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161061190612fa0565b60405180910390fd5b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60006009905090565b610686611406565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610713576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161070a90612fa0565b60405180910390fd5b80601260176101000a81548160ff02191690831515021790555050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610771611406565b73ffffffffffffffffffffffffffffffffffffffff161461079157600080fd5b600047905061079f81611ca8565b50565b60006107ec600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e58565b9050919050565b6107fb611406565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610888576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161087f90612fa0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610977611406565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a04576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109fb90612fa0565b60405180910390fd5b65886c98b76000601381905550565b60606040518060400160405280600681526020017f444f4f474c450000000000000000000000000000000000000000000000000000815250905090565b6000610a64610a5d611406565b84846115d9565b6001905092915050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610aaf611406565b73ffffffffffffffffffffffffffffffffffffffff1614610acf57600080fd5b600a8260ff1611158015610ae75750600a8160ff1611155b610b26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1d90612f60565b60405180910390fd5b81600c60006101000a81548160ff021916908360ff16021790555080600c60016101000a81548160ff021916908360ff1602179055505050565b610b68611406565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bf5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bec90612fa0565b60405180910390fd5b60005b8151811015610cac57600160066000848481518110610c40577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610ca490613356565b915050610bf8565b5050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610cf1611406565b73ffffffffffffffffffffffffffffffffffffffff1614610d1157600080fd5b6000610d1c306107a2565b9050610d2781611ec6565b50565b610d32611406565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610dbf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610db690612fa0565b60405180910390fd5b601260149054906101000a900460ff1615610e0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0690613020565b60405180910390fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610e9c30601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1665886c98b7600061140e565b8073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015610ee257600080fd5b505afa158015610ef6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f1a91906128fa565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015610f7c57600080fd5b505afa158015610f90573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fb491906128fa565b6040518363ffffffff1660e01b8152600401610fd1929190612dd0565b602060405180830381600087803b158015610feb57600080fd5b505af1158015610fff573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061102391906128fa565b601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71947306110ac306107a2565b6000806110b7610946565b426040518863ffffffff1660e01b81526004016110d996959493929190612e22565b6060604051808303818588803b1580156110f257600080fd5b505af1158015611106573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061112b9190612a7d565b5050506001601260166101000a81548160ff0219169083151502179055506001601260176101000a81548160ff0219169083151502179055506111916064611183600365886c98b7600061138b90919063ffffffff16565b61134190919063ffffffff16565b6013819055506001601260146101000a81548160ff02191690831515021790555060b4426111bf9190613176565b600d81905550601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401611264929190612df9565b602060405180830381600087803b15801561127e57600080fd5b505af1158015611292573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112b69190612a54565b5050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600061138383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506121c0565b905092915050565b60008083141561139e5760009050611400565b600082846113ac91906131fd565b90508284826113bb91906131cc565b146113fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113f290612f80565b60405180910390fd5b809150505b92915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561147e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147590613000565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156114ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114e590612f20565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516115cc9190613040565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611649576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164090612fe0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156116b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116b090612ee0565b60405180910390fd5b600081116116fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116f390612fc0565b60405180910390fd5b6002600a81905550600c60009054906101000a900460ff1660ff16600b81905550611725610946565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156117935750611763610946565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611c3457600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561183c5750600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b61184557600080fd5b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156118f05750601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156119465750600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561195e5750601260179054906101000a900460ff165b15611a0e5760135481111561197257600080fd5b42600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054106119bd57600080fd5b601e426119ca9190613176565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16148015611ab95750601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611b0f5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611b36576001600a81905550600c60019054906101000a900460ff1660ff16600b819055505b6000611b41306107a2565b9050601260159054906101000a900460ff16158015611bae5750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015611bc65750601260169054906101000a900460ff165b15611c3257600d544211611c0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c0690612ec0565b60405180910390fd5b611c1881611ec6565b60004790506000811115611c3057611c2f47611ca8565b5b505b505b611c3f838383612223565b505050565b6000838311158290611c8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c839190612e9e565b60405180910390fd5b5060008385611c9b9190613257565b9050809150509392505050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc611d0b6005611cfd600a8661134190919063ffffffff16565b61138b90919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015611d36573d6000803e3d6000fd5b50600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc611d9a6003611d8c600a8661134190919063ffffffff16565b61138b90919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015611dc5573d6000803e3d6000fd5b50601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc611e296002611e1b600a8661134190919063ffffffff16565b61138b90919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015611e54573d6000803e3d6000fd5b5050565b6000600854821115611e9f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e9690612f00565b60405180910390fd5b6000611ea9612233565b9050611ebe818461134190919063ffffffff16565b915050919050565b6001601260156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115611f24577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051908082528060200260200182016040528015611f525781602001602082028036833780820191505090505b5090503081600081518110611f90577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561203257600080fd5b505afa158015612046573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061206a91906128fa565b816001815181106120a4577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061210b30601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461140e565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161216f95949392919061305b565b600060405180830381600087803b15801561218957600080fd5b505af115801561219d573d6000803e3d6000fd5b50505050506000601260156101000a81548160ff02191690831515021790555050565b60008083118290612207576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121fe9190612e9e565b60405180910390fd5b506000838561221691906131cc565b9050809150509392505050565b61222e83838361225e565b505050565b6000806000612240612429565b91509150612257818361134190919063ffffffff16565b9250505090565b60008060008060008061227087612482565b9550955095509550955095506122ce86600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124ea90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061236385600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461253490919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506123af81612592565b6123b9848361264f565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516124169190613040565b60405180910390a3505050505050505050565b60008060006008549050600065886c98b76000905061245965886c98b7600060085461134190919063ffffffff16565b8210156124755760085465886c98b7600093509350505061247e565b81819350935050505b9091565b600080600080600080600080600061249f8a600a54600b54612689565b92509250925060006124af612233565b905060008060006124c28e87878761271f565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b600061252c83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611c44565b905092915050565b60008082846125439190613176565b905083811015612588576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161257f90612f40565b60405180910390fd5b8091505092915050565b600061259c612233565b905060006125b3828461138b90919063ffffffff16565b905061260781600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461253490919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b612664826008546124ea90919063ffffffff16565b60088190555061267f8160095461253490919063ffffffff16565b6009819055505050565b6000806000806126b560646126a7888a61138b90919063ffffffff16565b61134190919063ffffffff16565b905060006126df60646126d1888b61138b90919063ffffffff16565b61134190919063ffffffff16565b90506000612708826126fa858c6124ea90919063ffffffff16565b6124ea90919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080612738858961138b90919063ffffffff16565b9050600061274f868961138b90919063ffffffff16565b90506000612766878961138b90919063ffffffff16565b9050600061278f8261278185876124ea90919063ffffffff16565b6124ea90919063ffffffff16565b9050838184965096509650505050509450945094915050565b60006127bb6127b6846130f5565b6130d0565b905080838252602082019050828560208602820111156127da57600080fd5b60005b8581101561280a57816127f08882612814565b8452602084019350602083019250506001810190506127dd565b5050509392505050565b60008135905061282381613759565b92915050565b60008151905061283881613759565b92915050565b600082601f83011261284f57600080fd5b813561285f8482602086016127a8565b91505092915050565b60008135905061287781613770565b92915050565b60008151905061288c81613770565b92915050565b6000813590506128a181613787565b92915050565b6000815190506128b681613787565b92915050565b6000813590506128cb8161379e565b92915050565b6000602082840312156128e357600080fd5b60006128f184828501612814565b91505092915050565b60006020828403121561290c57600080fd5b600061291a84828501612829565b91505092915050565b6000806040838503121561293657600080fd5b600061294485828601612814565b925050602061295585828601612814565b9150509250929050565b60008060006060848603121561297457600080fd5b600061298286828701612814565b935050602061299386828701612814565b92505060406129a486828701612892565b9150509250925092565b600080604083850312156129c157600080fd5b60006129cf85828601612814565b92505060206129e085828601612892565b9150509250929050565b6000602082840312156129fc57600080fd5b600082013567ffffffffffffffff811115612a1657600080fd5b612a228482850161283e565b91505092915050565b600060208284031215612a3d57600080fd5b6000612a4b84828501612868565b91505092915050565b600060208284031215612a6657600080fd5b6000612a748482850161287d565b91505092915050565b600080600060608486031215612a9257600080fd5b6000612aa0868287016128a7565b9350506020612ab1868287016128a7565b9250506040612ac2868287016128a7565b9150509250925092565b60008060408385031215612adf57600080fd5b6000612aed858286016128bc565b9250506020612afe858286016128bc565b9150509250929050565b6000612b148383612b20565b60208301905092915050565b612b298161328b565b82525050565b612b388161328b565b82525050565b6000612b4982613131565b612b538185613154565b9350612b5e83613121565b8060005b83811015612b8f578151612b768882612b08565b9750612b8183613147565b925050600181019050612b62565b5085935050505092915050565b612ba58161329d565b82525050565b612bb4816132e0565b82525050565b6000612bc58261313c565b612bcf8185613165565b9350612bdf8185602086016132f2565b612be88161342c565b840191505092915050565b6000612c00602883613165565b9150612c0b8261343d565b604082019050919050565b6000612c23602383613165565b9150612c2e8261348c565b604082019050919050565b6000612c46602a83613165565b9150612c51826134db565b604082019050919050565b6000612c69602283613165565b9150612c748261352a565b604082019050919050565b6000612c8c601b83613165565b9150612c9782613579565b602082019050919050565b6000612caf601e83613165565b9150612cba826135a2565b602082019050919050565b6000612cd2602183613165565b9150612cdd826135cb565b604082019050919050565b6000612cf5602083613165565b9150612d008261361a565b602082019050919050565b6000612d18602983613165565b9150612d2382613643565b604082019050919050565b6000612d3b602583613165565b9150612d4682613692565b604082019050919050565b6000612d5e602483613165565b9150612d69826136e1565b604082019050919050565b6000612d81601783613165565b9150612d8c82613730565b602082019050919050565b612da0816132c9565b82525050565b612daf816132d3565b82525050565b6000602082019050612dca6000830184612b2f565b92915050565b6000604082019050612de56000830185612b2f565b612df26020830184612b2f565b9392505050565b6000604082019050612e0e6000830185612b2f565b612e1b6020830184612d97565b9392505050565b600060c082019050612e376000830189612b2f565b612e446020830188612d97565b612e516040830187612bab565b612e5e6060830186612bab565b612e6b6080830185612b2f565b612e7860a0830184612d97565b979650505050505050565b6000602082019050612e986000830184612b9c565b92915050565b60006020820190508181036000830152612eb88184612bba565b905092915050565b60006020820190508181036000830152612ed981612bf3565b9050919050565b60006020820190508181036000830152612ef981612c16565b9050919050565b60006020820190508181036000830152612f1981612c39565b9050919050565b60006020820190508181036000830152612f3981612c5c565b9050919050565b60006020820190508181036000830152612f5981612c7f565b9050919050565b60006020820190508181036000830152612f7981612ca2565b9050919050565b60006020820190508181036000830152612f9981612cc5565b9050919050565b60006020820190508181036000830152612fb981612ce8565b9050919050565b60006020820190508181036000830152612fd981612d0b565b9050919050565b60006020820190508181036000830152612ff981612d2e565b9050919050565b6000602082019050818103600083015261301981612d51565b9050919050565b6000602082019050818103600083015261303981612d74565b9050919050565b60006020820190506130556000830184612d97565b92915050565b600060a0820190506130706000830188612d97565b61307d6020830187612bab565b818103604083015261308f8186612b3e565b905061309e6060830185612b2f565b6130ab6080830184612d97565b9695505050505050565b60006020820190506130ca6000830184612da6565b92915050565b60006130da6130eb565b90506130e68282613325565b919050565b6000604051905090565b600067ffffffffffffffff8211156131105761310f6133fd565b5b602082029050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000613181826132c9565b915061318c836132c9565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156131c1576131c061339f565b5b828201905092915050565b60006131d7826132c9565b91506131e2836132c9565b9250826131f2576131f16133ce565b5b828204905092915050565b6000613208826132c9565b9150613213836132c9565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561324c5761324b61339f565b5b828202905092915050565b6000613262826132c9565b915061326d836132c9565b9250828210156132805761327f61339f565b5b828203905092915050565b6000613296826132a9565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006132eb826132c9565b9050919050565b60005b838110156133105780820151818401526020810190506132f5565b8381111561331f576000848401525b50505050565b61332e8261342c565b810181811067ffffffffffffffff8211171561334d5761334c6133fd565b5b80604052505050565b6000613361826132c9565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156133945761339361339f565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b7f53656c6c732070726f6869626974656420666f7220746865206669727374203560008201527f206d696e75746573000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f43616e6e6f7420696e63726561736520666565732061626f7665203130250000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b6137628161328b565b811461376d57600080fd5b50565b6137798161329d565b811461378457600080fd5b50565b613790816132c9565b811461379b57600080fd5b50565b6137a7816132d3565b81146137b257600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212203aacd8e294b894321add3a9ad9ffc799c0182e83c61e55837cbccb417313478964736f6c63430008040033
Deployed Bytecode Sourcemap
3580:11427:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5943:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6795:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6220:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6964:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11623:88;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6129:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7285:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13000:194;;;;;;;;;;;;;:::i;:::-;;6323:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2659:148;;;;;;;;;;;;;:::i;:::-;;2445:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14631:99;;;;;;;;;;;;;:::i;:::-;;6034:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6469:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7400:248;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11447:164;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12793:195;;;;;;;;;;;;;:::i;:::-;;10568:867;;;;;;;;;;;;;:::i;:::-;;6644:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5943:83;5980:13;6013:5;;;;;;;;;;;;;;;;;6006:12;;5943:83;:::o;6795:161::-;6870:4;6887:39;6896:12;:10;:12::i;:::-;6910:7;6919:6;6887:8;:39::i;:::-;6944:4;6937:11;;6795:161;;;;:::o;6220:95::-;6273:7;4079:14;6293;;6220:95;:::o;6964:313::-;7062:4;7079:36;7089:6;7097:9;7108:6;7079:9;:36::i;:::-;7126:121;7135:6;7143:12;:10;:12::i;:::-;7157:89;7195:6;7157:89;;;;;;;;;;;;;;;;;:11;:19;7169:6;7157:19;;;;;;;;;;;;;;;:33;7177:12;:10;:12::i;:::-;7157:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;7126:8;:121::i;:::-;7265:4;7258:11;;6964:313;;;;;:::o;11623:88::-;2582:12;:10;:12::i;:::-;2572:22;;:6;;;;;;;;;;:22;;;2564:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11698:5:::1;11683:4;:12;11688:6;11683:12;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;11623:88:::0;:::o;6129:83::-;6170:5;4621:1;6188:16;;6129:83;:::o;7285:103::-;2582:12;:10;:12::i;:::-;2572:22;;:6;;;;;;;;;;:22;;;2564:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;7375:5:::1;7357:15;;:23;;;;;;;;;;;;;;;;;;7285:103:::0;:::o;13000:194::-;13066:15;;;;;;;;;;;13050:31;;:12;:10;:12::i;:::-;:31;;;13042:40;;;;;;13093:26;13122:21;13093:50;;13154:32;13167:18;13154:12;:32::i;:::-;13000:194;:::o;6323:138::-;6389:7;6416:37;6436:7;:16;6444:7;6436:16;;;;;;;;;;;;;;;;6416:19;:37::i;:::-;6409:44;;6323:138;;;:::o;2659:148::-;2582:12;:10;:12::i;:::-;2572:22;;:6;;;;;;;;;;:22;;;2564:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2766:1:::1;2729:40;;2750:6;::::0;::::1;;;;;;;;2729:40;;;;;;;;;;;;2797:1;2780:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;2659:148::o:0;2445:79::-;2483:7;2510:6;;;;;;;;;;;2503:13;;2445:79;:::o;14631:99::-;2582:12;:10;:12::i;:::-;2572:22;;:6;;;;;;;;;;:22;;;2564:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4079:14:::1;14700:12;:22;;;;14631:99::o:0;6034:87::-;6073:13;6106:7;;;;;;;;;;;;;;;;;6099:14;;6034:87;:::o;6469:167::-;6547:4;6564:42;6574:12;:10;:12::i;:::-;6588:9;6599:6;6564:9;:42::i;:::-;6624:4;6617:11;;6469:167;;;;:::o;7400:248::-;7499:15;;;;;;;;;;;7483:31;;:12;:10;:12::i;:::-;:31;;;7475:40;;;;;;7543:2;7534:5;:11;;;;:26;;;;;7558:2;7549:5;:11;;;;7534:26;7526:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7612:5;7605:4;;:12;;;;;;;;;;;;;;;;;;7635:5;7628:4;;:12;;;;;;;;;;;;;;;;;;7400:248;;:::o;11447:164::-;2582:12;:10;:12::i;:::-;2572:22;;:6;;;;;;;;;;:22;;;2564:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11521:6:::1;11516:88;11537:5;:12;11533:1;:16;11516:88;;;11588:4;11571;:14;11576:5;11582:1;11576:8;;;;;;;;;;;;;;;;;;;;;;11571:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;11551:3;;;;;:::i;:::-;;;;11516:88;;;;11447:164:::0;:::o;12793:195::-;12859:15;;;;;;;;;;;12843:31;;:12;:10;:12::i;:::-;:31;;;12835:40;;;;;;12886:23;12912:24;12930:4;12912:9;:24::i;:::-;12886:50;;12947:33;12964:15;12947:16;:33::i;:::-;12793:195;:::o;10568:867::-;2582:12;:10;:12::i;:::-;2572:22;;:6;;;;;;;;;;:22;;;2564:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10632:11:::1;;;;;;;;;;;10631:12;10623:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;10681:35;10738:42;10681:100;;10810:16;10792:15;;:34;;;;;;;;;;;;;;;;;;10837:58;10854:4;10869:15;;;;;;;;;;;4079:14;10837:8;:58::i;:::-;10940:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10922:56;;;10987:4;10994:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10922:96;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10906:13;;:112;;;;;;;;;;;;;;;;;;11029:15;;;;;;;;;;;:31;;;11068:21;11099:4;11105:24;11123:4;11105:9;:24::i;:::-;11130:1;11132::::0;11134:7:::1;:5;:7::i;:::-;11142:15;11029:129;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;11183:4;11169:11;;:18;;;;;;;;;;;;;;;;;;11216:4;11198:15;;:22;;;;;;;;;;;;;;;;;;11246:23;11265:3;11246:14;11258:1;4079:14;11246:11;;:14;;;;:::i;:::-;:18;;:23;;;;:::i;:::-;11231:12;:38;;;;11294:4;11280:11;;:18;;;;;;;;;;;;;;;;;;11335:9;11316:15;:29;;;;:::i;:::-;11309:4;:36;;;;11363:13;;;;;;;;;;;11356:29;;;11394:15;;;;;;;;;;;11412:14;11356:71;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2642:1;10568:867::o:0;6644:143::-;6725:7;6752:11;:18;6764:5;6752:18;;;;;;;;;;;;;;;:27;6771:7;6752:27;;;;;;;;;;;;;;;;6745:34;;6644:143;;;;:::o;1752:132::-;1810:7;1837:39;1841:1;1844;1837:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1830:46;;1752:132;;;;:::o;1498:246::-;1556:7;1585:1;1580;:6;1576:47;;;1610:1;1603:8;;;;1576:47;1633:9;1649:1;1645;:5;;;;:::i;:::-;1633:17;;1678:1;1673;1669;:5;;;;:::i;:::-;:10;1661:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1735:1;1728:8;;;1498:246;;;;;:::o;163:98::-;216:7;243:10;236:17;;163:98;:::o;7918:335::-;8028:1;8011:19;;:5;:19;;;;8003:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8109:1;8090:21;;:7;:21;;;;8082:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8191:6;8161:11;:18;8173:5;8161:18;;;;;;;;;;;;;;;:27;8180:7;8161:27;;;;;;;;;;;;;;;:36;;;;8229:7;8213:32;;8222:5;8213:32;;;8238:6;8213:32;;;;;;:::i;:::-;;;;;;;;7918:335;;;:::o;8261:1560::-;8365:1;8349:18;;:4;:18;;;;8341:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8442:1;8428:16;;:2;:16;;;;8420:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;8512:1;8503:6;:10;8495:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;8582:1;8570:9;:13;;;;8606:4;;;;;;;;;;;8594:16;;:9;:16;;;;8633:7;:5;:7::i;:::-;8625:15;;:4;:15;;;;:32;;;;;8650:7;:5;:7::i;:::-;8644:13;;:2;:13;;;;8625:32;8621:1148;;;8683:4;:10;8688:4;8683:10;;;;;;;;;;;;;;;;;;;;;;;;;8682:11;:24;;;;;8698:4;:8;8703:2;8698:8;;;;;;;;;;;;;;;;;;;;;;;;;8697:9;8682:24;8674:33;;;;;;8734:13;;;;;;;;;;;8726:21;;:4;:21;;;:55;;;;;8765:15;;;;;;;;;;;8751:30;;:2;:30;;;;8726:55;:83;;;;;8787:18;:22;8806:2;8787:22;;;;;;;;;;;;;;;;;;;;;;;;;8785:24;8726:83;:102;;;;;8813:15;;;;;;;;;;;8726:102;8722:325;;;8896:12;;8886:6;:22;;8878:31;;;;;;8951:15;8936:8;:12;8945:2;8936:12;;;;;;;;;;;;;;;;:30;8928:39;;;;;;9020:10;9001:15;:30;;;;:::i;:::-;8986:8;:12;8995:2;8986:12;;;;;;;;;;;;;;;:45;;;;8722:325;9099:13;;;;;;;;;;;9093:19;;:2;:19;;;:55;;;;;9132:15;;;;;;;;;;;9116:32;;:4;:32;;;;9093:55;:85;;;;;9154:18;:24;9173:4;9154:24;;;;;;;;;;;;;;;;;;;;;;;;;9152:26;9093:85;9089:174;;;9211:1;9199:9;:13;;;;9243:4;;;;;;;;;;;9231:16;;:9;:16;;;;9089:174;9277:28;9308:24;9326:4;9308:9;:24::i;:::-;9277:55;;9352:6;;;;;;;;;;;9351:7;:32;;;;;9370:13;;;;;;;;;;;9362:21;;:4;:21;;;;9351:32;:47;;;;;9387:11;;;;;;;;;;;9351:47;9347:411;;;9445:4;;9427:15;:22;9419:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;9512:38;9529:20;9512:16;:38::i;:::-;9569:26;9598:21;9569:50;;9662:1;9641:18;:22;9638:105;;;9688:35;9701:21;9688:12;:35::i;:::-;9638:105;9347:411;;8621:1148;;9783:30;9798:4;9803:2;9806:6;9783:14;:30::i;:::-;8261:1560;;;:::o;1300:190::-;1386:7;1419:1;1414;:6;;1422:12;1406:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1446:9;1462:1;1458;:5;;;;:::i;:::-;1446:17;;1481:1;1474:8;;;1300:190;;;;;:::o;10328:228::-;10385:15;;;;;;;;;;;:24;;:47;10410:21;10429:1;10410:14;10421:2;10410:6;:10;;:14;;;;:::i;:::-;:18;;:21;;;;:::i;:::-;10385:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10443:15;;;;;;;;;;;:24;;:47;10468:21;10487:1;10468:14;10479:2;10468:6;:10;;:14;;;;:::i;:::-;:18;;:21;;;;:::i;:::-;10443:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10501:15;;;;;;;;;;;:24;;:47;10526:21;10545:1;10526:14;10537:2;10526:6;:10;;:14;;;;:::i;:::-;:18;;:21;;;;:::i;:::-;10501:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10328:228;:::o;7656:254::-;7723:7;7762;;7751;:18;;7743:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;7827:19;7850:10;:8;:10::i;:::-;7827:33;;7878:24;7890:11;7878:7;:11;;:24;;;;:::i;:::-;7871:31;;;7656:254;;;:::o;9829:483::-;5003:4;4994:6;;:13;;;;;;;;;;;;;;;;;;9907:21:::1;9945:1;9931:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9907:40;;9976:4;9958;9963:1;9958:7;;;;;;;;;;;;;;;;;;;;;:23;;;;;;;;;::::0;::::1;10002:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9992:4;9997:1;9992:7;;;;;;;;;;;;;;;;;;;;;:32;;;;;;;;;::::0;::::1;10035:62;10052:4;10067:15;;;;;;;;;;;10085:11;10035:8;:62::i;:::-;10108:15;;;;;;;;;;;:66;;;10189:11;10215:1;10231:4;10258;10278:15;10108:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;5018:1;5039:5:::0;5030:6;;:14;;;;;;;;;;;;;;;;;;9829:483;:::o;1892:189::-;1978:7;2010:1;2006;:5;2013:12;1998:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2037:9;2053:1;2049;:5;;;;:::i;:::-;2037:17;;2072:1;2065:8;;;1892:189;;;;;:::o;11727:146::-;11821:44;11839:6;11847:9;11858:6;11821:17;:44::i;:::-;11727:146;;;:::o;14460:163::-;14501:7;14522:15;14539;14558:19;:17;:19::i;:::-;14521:56;;;;14595:20;14607:7;14595;:11;;:20;;;;:::i;:::-;14588:27;;;;14460:163;:::o;11881:488::-;11980:15;11997:23;12022:12;12036:23;12061:12;12075:13;12092:19;12103:7;12092:10;:19::i;:::-;11979:132;;;;;;;;;;;;12140:28;12160:7;12140;:15;12148:6;12140:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;12122:7;:15;12130:6;12122:15;;;;;;;;;;;;;;;:46;;;;12200:39;12223:15;12200:7;:18;12208:9;12200:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;12179:7;:18;12187:9;12179:18;;;;;;;;;;;;;;;:60;;;;12251:16;12261:5;12251:9;:16::i;:::-;12278:23;12290:4;12296;12278:11;:23::i;:::-;12334:9;12317:44;;12326:6;12317:44;;;12345:15;12317:44;;;;;;:::i;:::-;;;;;;;;11881:488;;;;;;;;;:::o;14742:262::-;14792:7;14801;14821:15;14839:7;;14821:25;;14857:15;4079:14;14857:25;;14913:20;4079:14;14913:7;;:11;;:20;;;;:::i;:::-;14903:7;:30;14899:61;;;14943:7;;4079:14;14935:25;;;;;;;;14899:61;14979:7;14988;14971:25;;;;;;14742:262;;;:::o;13208:471::-;13267:7;13276;13285;13294;13303;13312;13333:23;13358:12;13372:13;13389:42;13401:7;13410:9;;13421;;13389:11;:42::i;:::-;13332:99;;;;;;13442:19;13465:10;:8;:10::i;:::-;13442:33;;13487:15;13504:23;13529:12;13545:46;13557:7;13566:4;13572:5;13579:11;13545;:46::i;:::-;13486:105;;;;;;13610:7;13619:15;13636:4;13642:15;13659:4;13665:5;13602:69;;;;;;;;;;;;;;;;;;;13208:471;;;;;;;:::o;1156:136::-;1214:7;1241:43;1245:1;1248;1241:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1234:50;;1156:136;;;;:::o;969:179::-;1027:7;1047:9;1063:1;1059;:5;;;;:::i;:::-;1047:17;;1088:1;1083;:6;;1075:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1139:1;1132:8;;;969:179;;;;:::o;12377:212::-;12430:19;12453:10;:8;:10::i;:::-;12430:33;;12474:13;12490:22;12500:11;12490:5;:9;;:22;;;;:::i;:::-;12474:38;;12548:33;12575:5;12548:7;:22;12564:4;12548:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;12523:7;:22;12539:4;12523:22;;;;;;;;;;;;;;;:58;;;;12377:212;;;:::o;12597:147::-;12675:17;12687:4;12675:7;;:11;;:17;;;;:::i;:::-;12665:7;:27;;;;12716:20;12731:4;12716:10;;:14;;:20;;;;:::i;:::-;12703:10;:33;;;;12597:147;;:::o;13687:351::-;13780:7;13789;13798;13818:12;13833:28;13857:3;13833:19;13845:6;13833:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;13818:43;;13872:13;13888:29;13913:3;13888:20;13900:7;13888;:11;;:20;;;;:::i;:::-;:24;;:29;;;;:::i;:::-;13872:45;;13928:23;13954:28;13976:5;13954:17;13966:4;13954:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;13928:54;;14001:15;14018:4;14024:5;13993:37;;;;;;;;;13687:351;;;;;;;:::o;14046:409::-;14156:7;14165;14174;14194:15;14212:24;14224:11;14212:7;:11;;:24;;;;:::i;:::-;14194:42;;14247:12;14262:21;14271:11;14262:4;:8;;:21;;;;:::i;:::-;14247:36;;14294:13;14310:22;14320:11;14310:5;:9;;:22;;;;:::i;:::-;14294:38;;14343:23;14369:28;14391:5;14369:17;14381:4;14369:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;14343:54;;14416:7;14425:15;14442:4;14408:39;;;;;;;;;;14046:409;;;;;;;;:::o;24:655:1:-;120:5;145:81;161:64;218:6;161:64;:::i;:::-;145:81;:::i;:::-;136:90;;246:5;275:6;268:5;261:21;309:4;302:5;298:16;291:23;;335:6;385:3;377:4;369:6;365:17;360:3;356:27;353:36;350:2;;;414:1;411;404:12;350:2;450:1;435:238;460:6;457:1;454:13;435:238;;;528:3;557:37;590:3;578:10;557:37;:::i;:::-;552:3;545:50;624:4;619:3;615:14;608:21;;658:4;653:3;649:14;642:21;;495:178;482:1;479;475:9;470:14;;435:238;;;439:14;126:553;;;;;;;:::o;685:139::-;731:5;769:6;756:20;747:29;;785:33;812:5;785:33;:::i;:::-;737:87;;;;:::o;830:143::-;887:5;918:6;912:13;903:22;;934:33;961:5;934:33;:::i;:::-;893:80;;;;:::o;996:303::-;1067:5;1116:3;1109:4;1101:6;1097:17;1093:27;1083:2;;1134:1;1131;1124:12;1083:2;1174:6;1161:20;1199:94;1289:3;1281:6;1274:4;1266:6;1262:17;1199:94;:::i;:::-;1190:103;;1073:226;;;;;:::o;1305:133::-;1348:5;1386:6;1373:20;1364:29;;1402:30;1426:5;1402:30;:::i;:::-;1354:84;;;;:::o;1444:137::-;1498:5;1529:6;1523:13;1514:22;;1545:30;1569:5;1545:30;:::i;:::-;1504:77;;;;:::o;1587:139::-;1633:5;1671:6;1658:20;1649:29;;1687:33;1714:5;1687:33;:::i;:::-;1639:87;;;;:::o;1732:143::-;1789:5;1820:6;1814:13;1805:22;;1836:33;1863:5;1836:33;:::i;:::-;1795:80;;;;:::o;1881:135::-;1925:5;1963:6;1950:20;1941:29;;1979:31;2004:5;1979:31;:::i;:::-;1931:85;;;;:::o;2022:262::-;2081:6;2130:2;2118:9;2109:7;2105:23;2101:32;2098:2;;;2146:1;2143;2136:12;2098:2;2189:1;2214:53;2259:7;2250:6;2239:9;2235:22;2214:53;:::i;:::-;2204:63;;2160:117;2088:196;;;;:::o;2290:284::-;2360:6;2409:2;2397:9;2388:7;2384:23;2380:32;2377:2;;;2425:1;2422;2415:12;2377:2;2468:1;2493:64;2549:7;2540:6;2529:9;2525:22;2493:64;:::i;:::-;2483:74;;2439:128;2367:207;;;;:::o;2580:407::-;2648:6;2656;2705:2;2693:9;2684:7;2680:23;2676:32;2673:2;;;2721:1;2718;2711:12;2673:2;2764:1;2789:53;2834:7;2825:6;2814:9;2810:22;2789:53;:::i;:::-;2779:63;;2735:117;2891:2;2917:53;2962:7;2953:6;2942:9;2938:22;2917:53;:::i;:::-;2907:63;;2862:118;2663:324;;;;;:::o;2993:552::-;3070:6;3078;3086;3135:2;3123:9;3114:7;3110:23;3106:32;3103:2;;;3151:1;3148;3141:12;3103:2;3194:1;3219:53;3264:7;3255:6;3244:9;3240:22;3219:53;:::i;:::-;3209:63;;3165:117;3321:2;3347:53;3392:7;3383:6;3372:9;3368:22;3347:53;:::i;:::-;3337:63;;3292:118;3449:2;3475:53;3520:7;3511:6;3500:9;3496:22;3475:53;:::i;:::-;3465:63;;3420:118;3093:452;;;;;:::o;3551:407::-;3619:6;3627;3676:2;3664:9;3655:7;3651:23;3647:32;3644:2;;;3692:1;3689;3682:12;3644:2;3735:1;3760:53;3805:7;3796:6;3785:9;3781:22;3760:53;:::i;:::-;3750:63;;3706:117;3862:2;3888:53;3933:7;3924:6;3913:9;3909:22;3888:53;:::i;:::-;3878:63;;3833:118;3634:324;;;;;:::o;3964:405::-;4048:6;4097:2;4085:9;4076:7;4072:23;4068:32;4065:2;;;4113:1;4110;4103:12;4065:2;4184:1;4173:9;4169:17;4156:31;4214:18;4206:6;4203:30;4200:2;;;4246:1;4243;4236:12;4200:2;4274:78;4344:7;4335:6;4324:9;4320:22;4274:78;:::i;:::-;4264:88;;4127:235;4055:314;;;;:::o;4375:256::-;4431:6;4480:2;4468:9;4459:7;4455:23;4451:32;4448:2;;;4496:1;4493;4486:12;4448:2;4539:1;4564:50;4606:7;4597:6;4586:9;4582:22;4564:50;:::i;:::-;4554:60;;4510:114;4438:193;;;;:::o;4637:278::-;4704:6;4753:2;4741:9;4732:7;4728:23;4724:32;4721:2;;;4769:1;4766;4759:12;4721:2;4812:1;4837:61;4890:7;4881:6;4870:9;4866:22;4837:61;:::i;:::-;4827:71;;4783:125;4711:204;;;;:::o;4921:596::-;5009:6;5017;5025;5074:2;5062:9;5053:7;5049:23;5045:32;5042:2;;;5090:1;5087;5080:12;5042:2;5133:1;5158:64;5214:7;5205:6;5194:9;5190:22;5158:64;:::i;:::-;5148:74;;5104:128;5271:2;5297:64;5353:7;5344:6;5333:9;5329:22;5297:64;:::i;:::-;5287:74;;5242:129;5410:2;5436:64;5492:7;5483:6;5472:9;5468:22;5436:64;:::i;:::-;5426:74;;5381:129;5032:485;;;;;:::o;5523:399::-;5587:6;5595;5644:2;5632:9;5623:7;5619:23;5615:32;5612:2;;;5660:1;5657;5650:12;5612:2;5703:1;5728:51;5771:7;5762:6;5751:9;5747:22;5728:51;:::i;:::-;5718:61;;5674:115;5828:2;5854:51;5897:7;5888:6;5877:9;5873:22;5854:51;:::i;:::-;5844:61;;5799:116;5602:320;;;;;:::o;5928:179::-;5997:10;6018:46;6060:3;6052:6;6018:46;:::i;:::-;6096:4;6091:3;6087:14;6073:28;;6008:99;;;;:::o;6113:108::-;6190:24;6208:5;6190:24;:::i;:::-;6185:3;6178:37;6168:53;;:::o;6227:118::-;6314:24;6332:5;6314:24;:::i;:::-;6309:3;6302:37;6292:53;;:::o;6381:732::-;6500:3;6529:54;6577:5;6529:54;:::i;:::-;6599:86;6678:6;6673:3;6599:86;:::i;:::-;6592:93;;6709:56;6759:5;6709:56;:::i;:::-;6788:7;6819:1;6804:284;6829:6;6826:1;6823:13;6804:284;;;6905:6;6899:13;6932:63;6991:3;6976:13;6932:63;:::i;:::-;6925:70;;7018:60;7071:6;7018:60;:::i;:::-;7008:70;;6864:224;6851:1;6848;6844:9;6839:14;;6804:284;;;6808:14;7104:3;7097:10;;6505:608;;;;;;;:::o;7119:109::-;7200:21;7215:5;7200:21;:::i;:::-;7195:3;7188:34;7178:50;;:::o;7234:147::-;7329:45;7368:5;7329:45;:::i;:::-;7324:3;7317:58;7307:74;;:::o;7387:364::-;7475:3;7503:39;7536:5;7503:39;:::i;:::-;7558:71;7622:6;7617:3;7558:71;:::i;:::-;7551:78;;7638:52;7683:6;7678:3;7671:4;7664:5;7660:16;7638:52;:::i;:::-;7715:29;7737:6;7715:29;:::i;:::-;7710:3;7706:39;7699:46;;7479:272;;;;;:::o;7757:366::-;7899:3;7920:67;7984:2;7979:3;7920:67;:::i;:::-;7913:74;;7996:93;8085:3;7996:93;:::i;:::-;8114:2;8109:3;8105:12;8098:19;;7903:220;;;:::o;8129:366::-;8271:3;8292:67;8356:2;8351:3;8292:67;:::i;:::-;8285:74;;8368:93;8457:3;8368:93;:::i;:::-;8486:2;8481:3;8477:12;8470:19;;8275:220;;;:::o;8501:366::-;8643:3;8664:67;8728:2;8723:3;8664:67;:::i;:::-;8657:74;;8740:93;8829:3;8740:93;:::i;:::-;8858:2;8853:3;8849:12;8842:19;;8647:220;;;:::o;8873:366::-;9015:3;9036:67;9100:2;9095:3;9036:67;:::i;:::-;9029:74;;9112:93;9201:3;9112:93;:::i;:::-;9230:2;9225:3;9221:12;9214:19;;9019:220;;;:::o;9245:366::-;9387:3;9408:67;9472:2;9467:3;9408:67;:::i;:::-;9401:74;;9484:93;9573:3;9484:93;:::i;:::-;9602:2;9597:3;9593:12;9586:19;;9391:220;;;:::o;9617:366::-;9759:3;9780:67;9844:2;9839:3;9780:67;:::i;:::-;9773:74;;9856:93;9945:3;9856:93;:::i;:::-;9974:2;9969:3;9965:12;9958:19;;9763:220;;;:::o;9989:366::-;10131:3;10152:67;10216:2;10211:3;10152:67;:::i;:::-;10145:74;;10228:93;10317:3;10228:93;:::i;:::-;10346:2;10341:3;10337:12;10330:19;;10135:220;;;:::o;10361:366::-;10503:3;10524:67;10588:2;10583:3;10524:67;:::i;:::-;10517:74;;10600:93;10689:3;10600:93;:::i;:::-;10718:2;10713:3;10709:12;10702:19;;10507:220;;;:::o;10733:366::-;10875:3;10896:67;10960:2;10955:3;10896:67;:::i;:::-;10889:74;;10972:93;11061:3;10972:93;:::i;:::-;11090:2;11085:3;11081:12;11074:19;;10879:220;;;:::o;11105:366::-;11247:3;11268:67;11332:2;11327:3;11268:67;:::i;:::-;11261:74;;11344:93;11433:3;11344:93;:::i;:::-;11462:2;11457:3;11453:12;11446:19;;11251:220;;;:::o;11477:366::-;11619:3;11640:67;11704:2;11699:3;11640:67;:::i;:::-;11633:74;;11716:93;11805:3;11716:93;:::i;:::-;11834:2;11829:3;11825:12;11818:19;;11623:220;;;:::o;11849:366::-;11991:3;12012:67;12076:2;12071:3;12012:67;:::i;:::-;12005:74;;12088:93;12177:3;12088:93;:::i;:::-;12206:2;12201:3;12197:12;12190:19;;11995:220;;;:::o;12221:118::-;12308:24;12326:5;12308:24;:::i;:::-;12303:3;12296:37;12286:53;;:::o;12345:112::-;12428:22;12444:5;12428:22;:::i;:::-;12423:3;12416:35;12406:51;;:::o;12463:222::-;12556:4;12594:2;12583:9;12579:18;12571:26;;12607:71;12675:1;12664:9;12660:17;12651:6;12607:71;:::i;:::-;12561:124;;;;:::o;12691:332::-;12812:4;12850:2;12839:9;12835:18;12827:26;;12863:71;12931:1;12920:9;12916:17;12907:6;12863:71;:::i;:::-;12944:72;13012:2;13001:9;12997:18;12988:6;12944:72;:::i;:::-;12817:206;;;;;:::o;13029:332::-;13150:4;13188:2;13177:9;13173:18;13165:26;;13201:71;13269:1;13258:9;13254:17;13245:6;13201:71;:::i;:::-;13282:72;13350:2;13339:9;13335:18;13326:6;13282:72;:::i;:::-;13155:206;;;;;:::o;13367:807::-;13616:4;13654:3;13643:9;13639:19;13631:27;;13668:71;13736:1;13725:9;13721:17;13712:6;13668:71;:::i;:::-;13749:72;13817:2;13806:9;13802:18;13793:6;13749:72;:::i;:::-;13831:80;13907:2;13896:9;13892:18;13883:6;13831:80;:::i;:::-;13921;13997:2;13986:9;13982:18;13973:6;13921:80;:::i;:::-;14011:73;14079:3;14068:9;14064:19;14055:6;14011:73;:::i;:::-;14094;14162:3;14151:9;14147:19;14138:6;14094:73;:::i;:::-;13621:553;;;;;;;;;:::o;14180:210::-;14267:4;14305:2;14294:9;14290:18;14282:26;;14318:65;14380:1;14369:9;14365:17;14356:6;14318:65;:::i;:::-;14272:118;;;;:::o;14396:313::-;14509:4;14547:2;14536:9;14532:18;14524:26;;14596:9;14590:4;14586:20;14582:1;14571:9;14567:17;14560:47;14624:78;14697:4;14688:6;14624:78;:::i;:::-;14616:86;;14514:195;;;;:::o;14715:419::-;14881:4;14919:2;14908:9;14904:18;14896:26;;14968:9;14962:4;14958:20;14954:1;14943:9;14939:17;14932:47;14996:131;15122:4;14996:131;:::i;:::-;14988:139;;14886:248;;;:::o;15140:419::-;15306:4;15344:2;15333:9;15329:18;15321:26;;15393:9;15387:4;15383:20;15379:1;15368:9;15364:17;15357:47;15421:131;15547:4;15421:131;:::i;:::-;15413:139;;15311:248;;;:::o;15565:419::-;15731:4;15769:2;15758:9;15754:18;15746:26;;15818:9;15812:4;15808:20;15804:1;15793:9;15789:17;15782:47;15846:131;15972:4;15846:131;:::i;:::-;15838:139;;15736:248;;;:::o;15990:419::-;16156:4;16194:2;16183:9;16179:18;16171:26;;16243:9;16237:4;16233:20;16229:1;16218:9;16214:17;16207:47;16271:131;16397:4;16271:131;:::i;:::-;16263:139;;16161:248;;;:::o;16415:419::-;16581:4;16619:2;16608:9;16604:18;16596:26;;16668:9;16662:4;16658:20;16654:1;16643:9;16639:17;16632:47;16696:131;16822:4;16696:131;:::i;:::-;16688:139;;16586:248;;;:::o;16840:419::-;17006:4;17044:2;17033:9;17029:18;17021:26;;17093:9;17087:4;17083:20;17079:1;17068:9;17064:17;17057:47;17121:131;17247:4;17121:131;:::i;:::-;17113:139;;17011:248;;;:::o;17265:419::-;17431:4;17469:2;17458:9;17454:18;17446:26;;17518:9;17512:4;17508:20;17504:1;17493:9;17489:17;17482:47;17546:131;17672:4;17546:131;:::i;:::-;17538:139;;17436:248;;;:::o;17690:419::-;17856:4;17894:2;17883:9;17879:18;17871:26;;17943:9;17937:4;17933:20;17929:1;17918:9;17914:17;17907:47;17971:131;18097:4;17971:131;:::i;:::-;17963:139;;17861:248;;;:::o;18115:419::-;18281:4;18319:2;18308:9;18304:18;18296:26;;18368:9;18362:4;18358:20;18354:1;18343:9;18339:17;18332:47;18396:131;18522:4;18396:131;:::i;:::-;18388:139;;18286:248;;;:::o;18540:419::-;18706:4;18744:2;18733:9;18729:18;18721:26;;18793:9;18787:4;18783:20;18779:1;18768:9;18764:17;18757:47;18821:131;18947:4;18821:131;:::i;:::-;18813:139;;18711:248;;;:::o;18965:419::-;19131:4;19169:2;19158:9;19154:18;19146:26;;19218:9;19212:4;19208:20;19204:1;19193:9;19189:17;19182:47;19246:131;19372:4;19246:131;:::i;:::-;19238:139;;19136:248;;;:::o;19390:419::-;19556:4;19594:2;19583:9;19579:18;19571:26;;19643:9;19637:4;19633:20;19629:1;19618:9;19614:17;19607:47;19671:131;19797:4;19671:131;:::i;:::-;19663:139;;19561:248;;;:::o;19815:222::-;19908:4;19946:2;19935:9;19931:18;19923:26;;19959:71;20027:1;20016:9;20012:17;20003:6;19959:71;:::i;:::-;19913:124;;;;:::o;20043:831::-;20306:4;20344:3;20333:9;20329:19;20321:27;;20358:71;20426:1;20415:9;20411:17;20402:6;20358:71;:::i;:::-;20439:80;20515:2;20504:9;20500:18;20491:6;20439:80;:::i;:::-;20566:9;20560:4;20556:20;20551:2;20540:9;20536:18;20529:48;20594:108;20697:4;20688:6;20594:108;:::i;:::-;20586:116;;20712:72;20780:2;20769:9;20765:18;20756:6;20712:72;:::i;:::-;20794:73;20862:3;20851:9;20847:19;20838:6;20794:73;:::i;:::-;20311:563;;;;;;;;:::o;20880:214::-;20969:4;21007:2;20996:9;20992:18;20984:26;;21020:67;21084:1;21073:9;21069:17;21060:6;21020:67;:::i;:::-;20974:120;;;;:::o;21100:129::-;21134:6;21161:20;;:::i;:::-;21151:30;;21190:33;21218:4;21210:6;21190:33;:::i;:::-;21141:88;;;:::o;21235:75::-;21268:6;21301:2;21295:9;21285:19;;21275:35;:::o;21316:311::-;21393:4;21483:18;21475:6;21472:30;21469:2;;;21505:18;;:::i;:::-;21469:2;21555:4;21547:6;21543:17;21535:25;;21615:4;21609;21605:15;21597:23;;21398:229;;;:::o;21633:132::-;21700:4;21723:3;21715:11;;21753:4;21748:3;21744:14;21736:22;;21705:60;;;:::o;21771:114::-;21838:6;21872:5;21866:12;21856:22;;21845:40;;;:::o;21891:99::-;21943:6;21977:5;21971:12;21961:22;;21950:40;;;:::o;21996:113::-;22066:4;22098;22093:3;22089:14;22081:22;;22071:38;;;:::o;22115:184::-;22214:11;22248:6;22243:3;22236:19;22288:4;22283:3;22279:14;22264:29;;22226:73;;;;:::o;22305:169::-;22389:11;22423:6;22418:3;22411:19;22463:4;22458:3;22454:14;22439:29;;22401:73;;;;:::o;22480:305::-;22520:3;22539:20;22557:1;22539:20;:::i;:::-;22534:25;;22573:20;22591:1;22573:20;:::i;:::-;22568:25;;22727:1;22659:66;22655:74;22652:1;22649:81;22646:2;;;22733:18;;:::i;:::-;22646:2;22777:1;22774;22770:9;22763:16;;22524:261;;;;:::o;22791:185::-;22831:1;22848:20;22866:1;22848:20;:::i;:::-;22843:25;;22882:20;22900:1;22882:20;:::i;:::-;22877:25;;22921:1;22911:2;;22926:18;;:::i;:::-;22911:2;22968:1;22965;22961:9;22956:14;;22833:143;;;;:::o;22982:348::-;23022:7;23045:20;23063:1;23045:20;:::i;:::-;23040:25;;23079:20;23097:1;23079:20;:::i;:::-;23074:25;;23267:1;23199:66;23195:74;23192:1;23189:81;23184:1;23177:9;23170:17;23166:105;23163:2;;;23274:18;;:::i;:::-;23163:2;23322:1;23319;23315:9;23304:20;;23030:300;;;;:::o;23336:191::-;23376:4;23396:20;23414:1;23396:20;:::i;:::-;23391:25;;23430:20;23448:1;23430:20;:::i;:::-;23425:25;;23469:1;23466;23463:8;23460:2;;;23474:18;;:::i;:::-;23460:2;23519:1;23516;23512:9;23504:17;;23381:146;;;;:::o;23533:96::-;23570:7;23599:24;23617:5;23599:24;:::i;:::-;23588:35;;23578:51;;;:::o;23635:90::-;23669:7;23712:5;23705:13;23698:21;23687:32;;23677:48;;;:::o;23731:126::-;23768:7;23808:42;23801:5;23797:54;23786:65;;23776:81;;;:::o;23863:77::-;23900:7;23929:5;23918:16;;23908:32;;;:::o;23946:86::-;23981:7;24021:4;24014:5;24010:16;23999:27;;23989:43;;;:::o;24038:121::-;24096:9;24129:24;24147:5;24129:24;:::i;:::-;24116:37;;24106:53;;;:::o;24165:307::-;24233:1;24243:113;24257:6;24254:1;24251:13;24243:113;;;24342:1;24337:3;24333:11;24327:18;24323:1;24318:3;24314:11;24307:39;24279:2;24276:1;24272:10;24267:15;;24243:113;;;24374:6;24371:1;24368:13;24365:2;;;24454:1;24445:6;24440:3;24436:16;24429:27;24365:2;24214:258;;;;:::o;24478:281::-;24561:27;24583:4;24561:27;:::i;:::-;24553:6;24549:40;24691:6;24679:10;24676:22;24655:18;24643:10;24640:34;24637:62;24634:2;;;24702:18;;:::i;:::-;24634:2;24742:10;24738:2;24731:22;24521:238;;;:::o;24765:233::-;24804:3;24827:24;24845:5;24827:24;:::i;:::-;24818:33;;24873:66;24866:5;24863:77;24860:2;;;24943:18;;:::i;:::-;24860:2;24990:1;24983:5;24979:13;24972:20;;24808:190;;;:::o;25004:180::-;25052:77;25049:1;25042:88;25149:4;25146:1;25139:15;25173:4;25170:1;25163:15;25190:180;25238:77;25235:1;25228:88;25335:4;25332:1;25325:15;25359:4;25356:1;25349:15;25376:180;25424:77;25421:1;25414:88;25521:4;25518:1;25511:15;25545:4;25542:1;25535:15;25562:102;25603:6;25654:2;25650:7;25645:2;25638:5;25634:14;25630:28;25620:38;;25610:54;;;:::o;25670:227::-;25810:34;25806:1;25798:6;25794:14;25787:58;25879:10;25874:2;25866:6;25862:15;25855:35;25776:121;:::o;25903:222::-;26043:34;26039:1;26031:6;26027:14;26020:58;26112:5;26107:2;26099:6;26095:15;26088:30;26009:116;:::o;26131:229::-;26271:34;26267:1;26259:6;26255:14;26248:58;26340:12;26335:2;26327:6;26323:15;26316:37;26237:123;:::o;26366:221::-;26506:34;26502:1;26494:6;26490:14;26483:58;26575:4;26570:2;26562:6;26558:15;26551:29;26472:115;:::o;26593:177::-;26733:29;26729:1;26721:6;26717:14;26710:53;26699:71;:::o;26776:180::-;26916:32;26912:1;26904:6;26900:14;26893:56;26882:74;:::o;26962:220::-;27102:34;27098:1;27090:6;27086:14;27079:58;27171:3;27166:2;27158:6;27154:15;27147:28;27068:114;:::o;27188:182::-;27328:34;27324:1;27316:6;27312:14;27305:58;27294:76;:::o;27376:228::-;27516:34;27512:1;27504:6;27500:14;27493:58;27585:11;27580:2;27572:6;27568:15;27561:36;27482:122;:::o;27610:224::-;27750:34;27746:1;27738:6;27734:14;27727:58;27819:7;27814:2;27806:6;27802:15;27795:32;27716:118;:::o;27840:223::-;27980:34;27976:1;27968:6;27964:14;27957:58;28049:6;28044:2;28036:6;28032:15;28025:31;27946:117;:::o;28069:173::-;28209:25;28205:1;28197:6;28193:14;28186:49;28175:67;:::o;28248:122::-;28321:24;28339:5;28321:24;:::i;:::-;28314:5;28311:35;28301:2;;28360:1;28357;28350:12;28301:2;28291:79;:::o;28376:116::-;28446:21;28461:5;28446:21;:::i;:::-;28439:5;28436:32;28426:2;;28482:1;28479;28472:12;28426:2;28416:76;:::o;28498:122::-;28571:24;28589:5;28571:24;:::i;:::-;28564:5;28561:35;28551:2;;28610:1;28607;28600:12;28551:2;28541:79;:::o;28626:118::-;28697:22;28713:5;28697:22;:::i;:::-;28690:5;28687:33;28677:2;;28734:1;28731;28724:12;28677:2;28667:77;:::o
Swarm Source
ipfs://3aacd8e294b894321add3a9ad9ffc799c0182e83c61e55837cbccb4173134789
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.