ERC-20
Source Code
Overview
Max Total Supply
1,000,000,000 FOX
Holders
157
Market
Onchain Market Cap
-
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Balance
100,310.373555118 FOXValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
| # | Exchange | Pair | Price | 24H Volume | % Volume |
|---|
Contract Name:
foxrat
Compiler Version
v0.8.26+commit.8a97fa7a
Contract Source Code (Solidity)
/**
*Submitted for verification at Etherscan.io on 2025-05-30
*/
// SPDX-License-Identifier: MIT
/*
Matt Furie's Rat - $FOX
This is Fox, Matt Furie's famous pet rat !
Telegram: https://t.me/MattFurrieRat
X: https://x.com/furiesratfox
Website: https://foxrat.xyz/
*/
pragma solidity ^0.8.26;
abstract contract Context {
function _msgSender() internal view virtual returns (address) {
return msg.sender;
}
function _msgData() internal view virtual returns (bytes calldata) {
return msg.data;
}
}
interface IERC20 {
function totalSupply() external view returns (uint256);
function balanceOf(address account) external view returns (uint256);
function transfer(address recipient, uint256 amount) external returns (bool);
function allowance(address owner, address spender) external view returns (uint256);
function approve(address spender, uint256 amount) external returns (bool);
function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
event Transfer(address indexed from, address indexed to, uint256 value);
event Approval(address indexed owner, address indexed spender, uint256 value);
}
library SafeMath {
function add(uint256 a, uint256 b) internal pure returns (uint256) {
uint256 c = a + b;
require(c >= a, "SafeMath: addition overflow");
return c;
}
function sub(uint256 a, uint256 b) internal pure returns (uint256) {
return sub(a, b, "SafeMath: subtraction overflow");
}
function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
require(b <= a, errorMessage);
uint256 c = a - b;
return c;
}
function mul(uint256 a, uint256 b) internal pure returns (uint256) {
if (a == 0) {
return 0;
}
uint256 c = a * b;
require(c / a == b, "SafeMath: multiplication overflow");
return c;
}
function div(uint256 a, uint256 b) internal pure returns (uint256) {
return div(a, b, "SafeMath: division by zero");
}
function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
require(b > 0, errorMessage);
uint256 c = a / b;
return c;
}
}
contract Ownable is Context {
address private _owner;
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
constructor () {
address msgSender = _msgSender();
_owner = msgSender;
emit OwnershipTransferred(address(0), msgSender);
}
function owner() public view returns (address) {
return _owner;
}
modifier onlyOwner() {
require(_owner == _msgSender(), "Ownable: caller is not the owner");
_;
}
function renounceOwnership() public virtual onlyOwner {
emit OwnershipTransferred(_owner, address(0));
_owner = address(0);
}
}
interface IUniswapV2Factory {
function createPair(address tokenA, address tokenB) external returns (address pair);
}
interface IUniswapV2Router02 {
function swapExactTokensForETHSupportingFeeOnTransferTokens(
uint amountIn,
uint amountOutMin,
address[] calldata path,
address to,
uint deadline
) external;
function factory() external pure returns (address);
function WETH() external pure returns (address);
function addLiquidityETH(
address token,
uint amountTokenDesired,
uint amountTokenMin,
uint amountETHMin,
address to,
uint deadline
) external payable returns (uint amountToken, uint amountETH, uint liquidity);
}
contract foxrat is Context, IERC20, Ownable { ///Change the name of the contract here to the name of your token. No spaces allowed. Example: Shiba Inu token = ShibaInu.
using SafeMath for uint256;
mapping (address => uint256) private _balances;
mapping (address => mapping (address => uint256)) private _allowances;
mapping (address => bool) private _isExcludedFromFee;
address payable private _taxWallet;
uint256 private _initialBuyTax = 23; ///the BUY tax when your contract is launched (23%). Also determines amount of tokens preloaded into contract. ADJUST ACCORDINLY
uint256 private _initialSellTax = 23; ///the SELL tax when your contract is launched (23%)
uint256 private _finalBuyTax = 0; ///the final buy tax percentage once it's reduced
uint256 private _finalSellTax = 0; ///the final sell tax percentage once it's reduced
uint256 private _reduceBuyTaxAt = 5; ///how many buys must happen before the initial buy tax is reduced
uint256 private _reduceSellTaxAt = 30; //how many buys must happens before the nitial sell tax is reduced
uint256 private _preventSwapBefore = 30; ///how many buys must happens before the contract starts selling tokens for taxes
uint256 private _transferTax = 0; ///this determines if you want to tax people for transferring tokens (not just buying from an LP). Best kept at 0.
uint256 private _buyCount = 0; ///never change this, it is used elsewhere as a counter in the contract
uint8 private constant _decimals = 9; ///decimals - dont change, mostly cosmetic here or to supplement other calculations
uint256 private constant _tTotal = 1000000000 * 10**_decimals; ///total supply
string private constant _name = unicode"Matt Furie's Rat"; ///name of token - it's in unicode format which means most emojis work too
string private constant _symbol = unicode"FOX"; ///ticker of token - it's in unicode format which means most emojis work too
uint256 public _maxTxAmount = (_tTotal * 2) / 100; ///max amount of supply someone can buy in one tx. (2%)
uint256 public _maxWalletSize = (_tTotal * 2) / 100; ///max amount of supply someone can hold in one wallet. (2%)
uint256 public _taxSwapThreshold = (_tTotal * 1) / 100; ///percentage of supply needed in the contract for it to trigger sells. Below (1%) it wont sell
uint256 public _maxTaxSwap = (_tTotal * 1) / 100; //max percentage of the supply that the contract will try to sell in one shot when it sells for tax (1%)
IUniswapV2Router02 private uniswapV2Router;
address private uniswapV2Pair;
bool private tradingOpen;
bool private inSwap = false;
bool private swapEnabled = false;
uint256 private sellCount = 0;
uint256 private lastSellBlock = 0;
uint256 private firstBlock = 0;
event MaxTxAmountUpdated(uint _maxTxAmount);
event TransferTaxUpdated(uint _tax);
event ClearToken(address TokenAddressCleared, uint256 Amount);
modifier lockTheSwap {
inSwap = true;
_;
inSwap = false;
}
constructor () {
_taxWallet = payable(_msgSender()); ///this is the wallet that receives the taxes. default is _msgSender (the address that deployed the token, aka dev wallet). Most people leave this be.
_balances[_msgSender()] = _tTotal;
_isExcludedFromFee[owner()] = true;
_isExcludedFromFee[address(this)] = true;
_isExcludedFromFee[_taxWallet] = true;
emit Transfer(address(0), _msgSender(), _tTotal);
}
function name() public pure returns (string memory) {
return _name;
}
function symbol() public pure returns (string memory) {
return _symbol;
}
function decimals() public pure returns (uint8) {
return _decimals;
}
function totalSupply() public pure override returns (uint256) {
return _tTotal;
}
function balanceOf(address account) public view override returns (uint256) {
return _balances[account];
}
function transfer(address recipient, uint256 amount) public override returns (bool) {
_transfer(_msgSender(), recipient, amount);
return true;
}
function allowance(address owner, address spender) public view override returns (uint256) {
return _allowances[owner][spender];
}
function approve(address spender, uint256 amount) public override returns (bool) {
_approve(_msgSender(), spender, amount);
return true;
}
function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
_transfer(sender, recipient, amount);
_approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
return true;
}
function _approve(address owner, address spender, uint256 amount) private {
require(owner != address(0), "ERC20: approve from the zero address");
require(spender != address(0), "ERC20: approve to the zero address");
_allowances[owner][spender] = amount;
emit Approval(owner, spender, amount);
}
function _transfer(address from, address to, uint256 amount) private {
require(from != address(0), "ERC20: transfer from the zero address");
require(to != address(0), "ERC20: transfer to the zero address");
require(amount > 0, "Transfer amount must be greater than zero");
uint256 taxAmount = 0;
if (!tradingOpen && from == address(this) && to == uniswapV2Pair) {
} else if (from != owner() && to != owner()) {
if (_buyCount == 0) {
taxAmount = amount.mul((_buyCount > _reduceBuyTaxAt) ? _finalBuyTax : _initialBuyTax).div(100);
}
if (_buyCount > 0) {
taxAmount = amount.mul(_transferTax).div(100);
}
if (block.number == firstBlock) {
require(_buyCount < 40, "Exceeds buys on the first block.");
}
if (from == uniswapV2Pair && to != address(uniswapV2Router) && !_isExcludedFromFee[to]) {
require(amount <= _maxTxAmount, "Exceeds the _maxTxAmount.");
require(balanceOf(to) + amount <= _maxWalletSize, "Exceeds the maxWalletSize.");
taxAmount = amount.mul((_buyCount >= _reduceBuyTaxAt) ? _finalBuyTax : _initialBuyTax).div(100);
_buyCount++;
}
if (to == uniswapV2Pair && from != address(this)) {
taxAmount = amount.mul((_buyCount > _reduceSellTaxAt) ? _finalSellTax : _initialSellTax).div(100);
}
uint256 contractTokenBalance = balanceOf(address(this));
if (!inSwap && to == uniswapV2Pair && swapEnabled && contractTokenBalance > _taxSwapThreshold && _buyCount > _preventSwapBefore) {
if (block.number > lastSellBlock) {
sellCount = 0;
}
require(sellCount < 3, "Only 3 sells per block!");
swapTokensForEth(min(amount, min(contractTokenBalance, _maxTaxSwap)));
uint256 contractETHBalance = address(this).balance;
if (contractETHBalance > 0) {
sendETHToFee(address(this).balance);
}
sellCount++;
lastSellBlock = block.number;
}
}
if (taxAmount > 0) {
_balances[address(this)] = _balances[address(this)].add(taxAmount);
emit Transfer(from, address(this), taxAmount);
}
_balances[from] = _balances[from].sub(amount);
_balances[to] = _balances[to].add(amount.sub(taxAmount));
emit Transfer(from, to, amount.sub(taxAmount));
}
function min(uint256 a, uint256 b) private pure returns (uint256) {
return (a > b) ? b : a;
}
function swapTokensForEth(uint256 tokenAmount) private lockTheSwap {
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 {
_taxWallet.transfer(amount);
}
function openTrading() external onlyOwner() { ///this is the function you execute when you're starting trading. Name of function can be modified, example = "beginTrading".
require(!tradingOpen, "trading is already open");
uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
_approve(address(this), address(uniswapV2Router), _tTotal);
uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH());
uint256 tokenAmount = balanceOf(address(this));
uint256 taxAmount = tokenAmount.mul(_initialBuyTax).div(100);
uint256 netAmount = tokenAmount.sub(taxAmount);
require(tokenAmount > 0, "Contract must hold tokens for liquidity");
require(address(this).balance > 0, "Contract must hold ETH for liquidity");
uniswapV2Router.addLiquidityETH{value: address(this).balance}(address(this), netAmount, 0, 0, owner(), block.timestamp);
IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);
swapEnabled = true;
tradingOpen = true;
firstBlock = block.number;
emit Transfer(address(this), address(this), taxAmount);
}
receive() external payable {}
function megaremoveLimit() external onlyOwner { ///you always use this after openTrading - it removes limitations on the wallet holdings or max transfers.
_maxTxAmount = _tTotal;
_maxWalletSize = _tTotal;
emit MaxTxAmountUpdated(_tTotal);
}
function megaadjustFee(uint256 _newFee) external { ///this changes final taxes by to new (lower number) - can only be lowered to prevent honeypot
require(_msgSender() == _taxWallet);
require(_newFee <= _finalBuyTax && _newFee <= _finalSellTax);
_finalBuyTax = _newFee;
_finalSellTax = _newFee;
}
function megaremoveTransferTax() external onlyOwner { ///if you decide to have transfer tax initially but later remove it, use this
_transferTax = 0;
emit TransferTaxUpdated(0);
}
function megamanualTokenSend(address tokenAddress, uint256 tokens) external returns (bool success) { ///if there's tokens (any token) stuck in the ca you can use this to send those to tax wallet (default= deployer wallet)
require(_msgSender() == _taxWallet);
if (tokens == 0) {
tokens = IERC20(tokenAddress).balanceOf(address(this));
}
emit ClearToken(tokenAddress, tokens);
return IERC20(tokenAddress).transfer(_taxWallet, tokens);
}
function megamanualETHSend() external { ///if there is eth stuck in the contract you can use this to remove the eth and have it go to tax wallet (default= deployer wallet)
require(_msgSender() == _taxWallet);
uint256 ethBalance = address(this).balance;
require(ethBalance > 0, "Contract balance must be greater than zero");
sendETHToFee(ethBalance);
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"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":"address","name":"TokenAddressCleared","type":"address"},{"indexed":false,"internalType":"uint256","name":"Amount","type":"uint256"}],"name":"ClearToken","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_tax","type":"uint256"}],"name":"TransferTaxUpdated","type":"event"},{"inputs":[],"name":"_maxTaxSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxSwapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newFee","type":"uint256"}],"name":"megaadjustFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"megamanualETHSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"megamanualTokenSend","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"megaremoveLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"megaremoveTransferTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]Contract Creation Code
6080604052601760055560176006555f6007555f6008556005600955601e600a55601e600b555f600c555f600d55606460026009600a61003f919061061b565b633b9aca0061004e9190610665565b6100589190610665565b61006291906106d3565b600e55606460026009600a610077919061061b565b633b9aca006100869190610665565b6100909190610665565b61009a91906106d3565b600f55606460016009600a6100af919061061b565b633b9aca006100be9190610665565b6100c89190610665565b6100d291906106d3565b601055606460016009600a6100e7919061061b565b633b9aca006100f69190610665565b6101009190610665565b61010a91906106d3565b6011555f601360156101000a81548160ff0219169083151502179055505f601360166101000a81548160ff0219169083151502179055505f6014555f6015555f601655348015610158575f80fd5b505f61016861047c60201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35061021261047c60201b60201c565b60045f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506009600a61025f919061061b565b633b9aca0061026e9190610665565b60015f61027f61047c60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600160035f6102cf61048360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506103f761047c60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6009600a610453919061061b565b633b9aca006104629190610665565b60405161046f9190610712565b60405180910390a361072b565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b600185111561052c57808604811115610508576105076104aa565b5b60018516156105175780820291505b8081029050610525856104d7565b94506104ec565b94509492505050565b5f8261054457600190506105ff565b81610551575f90506105ff565b81600181146105675760028114610571576105a0565b60019150506105ff565b60ff841115610583576105826104aa565b5b8360020a91508482111561059a576105996104aa565b5b506105ff565b5060208310610133831016604e8410600b84101617156105d55782820a9050838111156105d0576105cf6104aa565b5b6105ff565b6105e284848460016104e3565b925090508184048111156105f9576105f86104aa565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f61062582610606565b91506106308361060f565b925061065d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484610535565b905092915050565b5f61066f82610606565b915061067a83610606565b925082820261068881610606565b9150828204841483151761069f5761069e6104aa565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6106dd82610606565b91506106e883610606565b9250826106f8576106f76106a6565b5b828204905092915050565b61070c81610606565b82525050565b5f6020820190506107255f830184610703565b92915050565b6136f1806107385f395ff3fe60806040526004361061012d575f3560e01c8063833d7ce6116100aa57806396cea2ac1161006e57806396cea2ac146103ba578063a9059cbb146103e2578063b79c59861461041e578063bf474bed14610434578063c9567bf91461045e578063dd62ed3e1461047457610134565b8063833d7ce6146102ea5780638da5cb5b146103265780638f9a55c014610350578063909ddc4e1461037a57806395d89b411461039057610134565b8063313ce567116100f1578063313ce5671461022e5780633ba8c75d1461025857806370a082311461026e578063715018a6146102aa5780637d1db4a5146102c057610134565b806306fdde0314610138578063095ea7b3146101625780630faee56f1461019e57806318160ddd146101c857806323b872dd146101f257610134565b3661013457005b5f80fd5b348015610143575f80fd5b5061014c6104b0565b6040516101599190612535565b60405180910390f35b34801561016d575f80fd5b50610188600480360381019061018391906125e6565b6104ed565b604051610195919061263e565b60405180910390f35b3480156101a9575f80fd5b506101b261050a565b6040516101bf9190612666565b60405180910390f35b3480156101d3575f80fd5b506101dc610510565b6040516101e99190612666565b60405180910390f35b3480156101fd575f80fd5b506102186004803603810190610213919061267f565b610533565b604051610225919061263e565b60405180910390f35b348015610239575f80fd5b50610242610607565b60405161024f91906126ea565b60405180910390f35b348015610263575f80fd5b5061026c61060f565b005b348015610279575f80fd5b50610294600480360381019061028f9190612703565b6106c0565b6040516102a19190612666565b60405180910390f35b3480156102b5575f80fd5b506102be610706565b005b3480156102cb575f80fd5b506102d4610854565b6040516102e19190612666565b60405180910390f35b3480156102f5575f80fd5b50610310600480360381019061030b91906125e6565b61085a565b60405161031d919061263e565b60405180910390f35b348015610331575f80fd5b5061033a610a19565b604051610347919061273d565b60405180910390f35b34801561035b575f80fd5b50610364610a40565b6040516103719190612666565b60405180910390f35b348015610385575f80fd5b5061038e610a46565b005b34801561039b575f80fd5b506103a4610b1a565b6040516103b19190612535565b60405180910390f35b3480156103c5575f80fd5b506103e060048036038101906103db9190612756565b610b57565b005b3480156103ed575f80fd5b50610408600480360381019061040391906125e6565b610be3565b604051610415919061263e565b60405180910390f35b348015610429575f80fd5b50610432610c00565b005b34801561043f575f80fd5b50610448610d2f565b6040516104559190612666565b60405180910390f35b348015610469575f80fd5b50610472610d35565b005b34801561047f575f80fd5b5061049a60048036038101906104959190612781565b61138f565b6040516104a79190612666565b60405180910390f35b60606040518060400160405280601081526020017f4d61747420467572696527732052617400000000000000000000000000000000815250905090565b5f6105006104f9611411565b8484611418565b6001905092915050565b60115481565b5f6009600a61051f919061291b565b633b9aca0061052e9190612965565b905090565b5f61053f8484846115db565b6105fc8461054b611411565b6105f7856040518060600160405280602881526020016136946028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6105ae611411565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611fb19092919063ffffffff16565b611418565b600190509392505050565b5f6009905090565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661064f611411565b73ffffffffffffffffffffffffffffffffffffffff161461066e575f80fd5b5f4790505f81116106b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106ab90612a16565b60405180910390fd5b6106bd81612013565b50565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b61070e611411565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461079a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161079190612a7e565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600e5481565b5f60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661089b611411565b73ffffffffffffffffffffffffffffffffffffffff16146108ba575f80fd5b5f820361093c578273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016108fa919061273d565b602060405180830381865afa158015610915573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109399190612ab0565b91505b7fda2bc2bedd1f85b5a59d5dbbd6684ff877ef916994a16ec08813101e99ace65f838360405161096d929190612adb565b60405180910390a18273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b81526004016109d1929190612b5d565b6020604051808303815f875af11580156109ed573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a119190612bae565b905092915050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600f5481565b610a4e611411565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ada576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ad190612a7e565b60405180910390fd5b5f600c819055507fe9b79e1a6c2dc43b4c0c6ff01ce9e3332d810e482270f464c0a21ad6c5fc6de35f604051610b109190612c12565b60405180910390a1565b60606040518060400160405280600381526020017f464f580000000000000000000000000000000000000000000000000000000000815250905090565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610b97611411565b73ffffffffffffffffffffffffffffffffffffffff1614610bb6575f80fd5b6007548111158015610bca57506008548111155b610bd2575f80fd5b806007819055508060088190555050565b5f610bf6610bef611411565b84846115db565b6001905092915050565b610c08611411565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c8b90612a7e565b60405180910390fd5b6009600a610ca2919061291b565b633b9aca00610cb19190612965565b600e819055506009600a610cc5919061291b565b633b9aca00610cd49190612965565b600f819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6009600a610d09919061291b565b633b9aca00610d189190612965565b604051610d259190612666565b60405180910390a1565b60105481565b610d3d611411565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610dc9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dc090612a7e565b60405180910390fd5b601360149054906101000a900460ff1615610e19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1090612c75565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d60125f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610eb53060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166009600a610ea1919061291b565b633b9aca00610eb09190612965565b611418565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f1f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f439190612ca7565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fc9573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fed9190612ca7565b6040518363ffffffff1660e01b815260040161100a929190612cd2565b6020604051808303815f875af1158015611026573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061104a9190612ca7565b60135f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f611093306106c0565b90505f6110be60646110b06005548561207b90919063ffffffff16565b6120f290919063ffffffff16565b90505f6110d4828461213b90919063ffffffff16565b90505f8311611118576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161110f90612d69565b60405180910390fd5b5f471161115a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115190612df7565b60405180910390fd5b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730845f806111a4610a19565b426040518863ffffffff1660e01b81526004016111c696959493929190612e15565b60606040518083038185885af11580156111e2573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906112079190612e74565b50505060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016112a7929190612adb565b6020604051808303815f875af11580156112c3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112e79190612bae565b506001601360166101000a81548160ff0219169083151502179055506001601360146101000a81548160ff021916908315150217905550436016819055503073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516113829190612666565b60405180910390a3505050565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611486576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147d90612f34565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036114f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114eb90612fc2565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516115ce9190612666565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611649576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164090613050565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036116b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ae906130de565b60405180910390fd5b5f81116116f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116f09061316c565b60405180910390fd5b5f601360149054906101000a900460ff1615801561174257503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b801561179a575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b611d01576117a6610a19565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561181457506117e4610a19565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611d00575f600d54036118615761185e6064611850600954600d541161183d57600554611841565b6007545b8561207b90919063ffffffff16565b6120f290919063ffffffff16565b90505b5f600d541115611896576118936064611885600c548561207b90919063ffffffff16565b6120f290919063ffffffff16565b90505b60165443036118e5576028600d54106118e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118db906131d4565b60405180910390fd5b5b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614801561198e575060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156119e1575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611ada57600e54821115611a2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a229061323c565b60405180910390fd5b600f5482611a38856106c0565b611a42919061325a565b1115611a83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a7a906132d7565b60405180910390fd5b611ac06064611ab2600954600d541015611a9f57600554611aa3565b6007545b8561207b90919063ffffffff16565b6120f290919063ffffffff16565b9050600d5f815480929190611ad4906132f5565b91905055505b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611b6257503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611ba657611ba36064611b95600a54600d5411611b8257600654611b86565b6008545b8561207b90919063ffffffff16565b6120f290919063ffffffff16565b90505b5f611bb0306106c0565b9050601360159054906101000a900460ff16158015611c1b575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b8015611c335750601360169054906101000a900460ff165b8015611c40575060105481115b8015611c4f5750600b54600d54115b15611cfe57601554431115611c66575f6014819055505b600360145410611cab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ca290613386565b60405180910390fd5b611cc8611cc384611cbe84601154612184565b612184565b61219c565b5f4790505f811115611cde57611cdd47612013565b5b60145f815480929190611cf0906132f5565b919050555043601581905550505b505b5b5f811115611e0057611d598160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461240790919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611df79190612666565b60405180910390a35b611e508260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461213b90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550611ef3611ea7828461213b90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461240790919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef611f96848661213b90919063ffffffff16565b604051611fa39190612666565b60405180910390a350505050565b5f838311158290611ff8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fef9190612535565b60405180910390fd5b505f838561200691906133a4565b9050809150509392505050565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015612077573d5f803e3d5ffd5b5050565b5f80830361208b575f90506120ec565b5f82846120989190612965565b90508284826120a79190613404565b146120e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120de906134a4565b60405180910390fd5b809150505b92915050565b5f61213383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612464565b905092915050565b5f61217c83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611fb1565b905092915050565b5f8183116121925782612194565b815b905092915050565b6001601360156101000a81548160ff0219169083151502179055505f600267ffffffffffffffff8111156121d3576121d26134c2565b5b6040519080825280602002602001820160405280156122015781602001602082028036833780820191505090505b50905030815f81518110612218576122176134ef565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156122bc573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122e09190612ca7565b816001815181106122f4576122f36134ef565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061235a3060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611418565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016123bc9594939291906135d3565b5f604051808303815f87803b1580156123d3575f80fd5b505af11580156123e5573d5f803e3d5ffd5b50505050505f601360156101000a81548160ff02191690831515021790555050565b5f808284612415919061325a565b90508381101561245a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161245190613675565b60405180910390fd5b8091505092915050565b5f80831182906124aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124a19190612535565b60405180910390fd5b505f83856124b89190613404565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f612507826124c5565b61251181856124cf565b93506125218185602086016124df565b61252a816124ed565b840191505092915050565b5f6020820190508181035f83015261254d81846124fd565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61258282612559565b9050919050565b61259281612578565b811461259c575f80fd5b50565b5f813590506125ad81612589565b92915050565b5f819050919050565b6125c5816125b3565b81146125cf575f80fd5b50565b5f813590506125e0816125bc565b92915050565b5f80604083850312156125fc576125fb612555565b5b5f6126098582860161259f565b925050602061261a858286016125d2565b9150509250929050565b5f8115159050919050565b61263881612624565b82525050565b5f6020820190506126515f83018461262f565b92915050565b612660816125b3565b82525050565b5f6020820190506126795f830184612657565b92915050565b5f805f6060848603121561269657612695612555565b5b5f6126a38682870161259f565b93505060206126b48682870161259f565b92505060406126c5868287016125d2565b9150509250925092565b5f60ff82169050919050565b6126e4816126cf565b82525050565b5f6020820190506126fd5f8301846126db565b92915050565b5f6020828403121561271857612717612555565b5b5f6127258482850161259f565b91505092915050565b61273781612578565b82525050565b5f6020820190506127505f83018461272e565b92915050565b5f6020828403121561276b5761276a612555565b5b5f612778848285016125d2565b91505092915050565b5f806040838503121561279757612796612555565b5b5f6127a48582860161259f565b92505060206127b58582860161259f565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156128415780860481111561281d5761281c6127bf565b5b600185161561282c5780820291505b808102905061283a856127ec565b9450612801565b94509492505050565b5f826128595760019050612914565b81612866575f9050612914565b816001811461287c5760028114612886576128b5565b6001915050612914565b60ff841115612898576128976127bf565b5b8360020a9150848211156128af576128ae6127bf565b5b50612914565b5060208310610133831016604e8410600b84101617156128ea5782820a9050838111156128e5576128e46127bf565b5b612914565b6128f784848460016127f8565b9250905081840481111561290e5761290d6127bf565b5b81810290505b9392505050565b5f612925826125b3565b9150612930836126cf565b925061295d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848461284a565b905092915050565b5f61296f826125b3565b915061297a836125b3565b9250828202612988816125b3565b9150828204841483151761299f5761299e6127bf565b5b5092915050565b7f436f6e74726163742062616c616e6365206d75737420626520677265617465725f8201527f207468616e207a65726f00000000000000000000000000000000000000000000602082015250565b5f612a00602a836124cf565b9150612a0b826129a6565b604082019050919050565b5f6020820190508181035f830152612a2d816129f4565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612a686020836124cf565b9150612a7382612a34565b602082019050919050565b5f6020820190508181035f830152612a9581612a5c565b9050919050565b5f81519050612aaa816125bc565b92915050565b5f60208284031215612ac557612ac4612555565b5b5f612ad284828501612a9c565b91505092915050565b5f604082019050612aee5f83018561272e565b612afb6020830184612657565b9392505050565b5f819050919050565b5f612b25612b20612b1b84612559565b612b02565b612559565b9050919050565b5f612b3682612b0b565b9050919050565b5f612b4782612b2c565b9050919050565b612b5781612b3d565b82525050565b5f604082019050612b705f830185612b4e565b612b7d6020830184612657565b9392505050565b612b8d81612624565b8114612b97575f80fd5b50565b5f81519050612ba881612b84565b92915050565b5f60208284031215612bc357612bc2612555565b5b5f612bd084828501612b9a565b91505092915050565b5f819050919050565b5f612bfc612bf7612bf284612bd9565b612b02565b6125b3565b9050919050565b612c0c81612be2565b82525050565b5f602082019050612c255f830184612c03565b92915050565b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f612c5f6017836124cf565b9150612c6a82612c2b565b602082019050919050565b5f6020820190508181035f830152612c8c81612c53565b9050919050565b5f81519050612ca181612589565b92915050565b5f60208284031215612cbc57612cbb612555565b5b5f612cc984828501612c93565b91505092915050565b5f604082019050612ce55f83018561272e565b612cf2602083018461272e565b9392505050565b7f436f6e7472616374206d75737420686f6c6420746f6b656e7320666f72206c695f8201527f7175696469747900000000000000000000000000000000000000000000000000602082015250565b5f612d536027836124cf565b9150612d5e82612cf9565b604082019050919050565b5f6020820190508181035f830152612d8081612d47565b9050919050565b7f436f6e7472616374206d75737420686f6c642045544820666f72206c697175695f8201527f6469747900000000000000000000000000000000000000000000000000000000602082015250565b5f612de16024836124cf565b9150612dec82612d87565b604082019050919050565b5f6020820190508181035f830152612e0e81612dd5565b9050919050565b5f60c082019050612e285f83018961272e565b612e356020830188612657565b612e426040830187612c03565b612e4f6060830186612c03565b612e5c608083018561272e565b612e6960a0830184612657565b979650505050505050565b5f805f60608486031215612e8b57612e8a612555565b5b5f612e9886828701612a9c565b9350506020612ea986828701612a9c565b9250506040612eba86828701612a9c565b9150509250925092565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f612f1e6024836124cf565b9150612f2982612ec4565b604082019050919050565b5f6020820190508181035f830152612f4b81612f12565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f612fac6022836124cf565b9150612fb782612f52565b604082019050919050565b5f6020820190508181035f830152612fd981612fa0565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f61303a6025836124cf565b915061304582612fe0565b604082019050919050565b5f6020820190508181035f8301526130678161302e565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6130c86023836124cf565b91506130d38261306e565b604082019050919050565b5f6020820190508181035f8301526130f5816130bc565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f6131566029836124cf565b9150613161826130fc565b604082019050919050565b5f6020820190508181035f8301526131838161314a565b9050919050565b7f457863656564732062757973206f6e2074686520666972737420626c6f636b2e5f82015250565b5f6131be6020836124cf565b91506131c98261318a565b602082019050919050565b5f6020820190508181035f8301526131eb816131b2565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f6132266019836124cf565b9150613231826131f2565b602082019050919050565b5f6020820190508181035f8301526132538161321a565b9050919050565b5f613264826125b3565b915061326f836125b3565b9250828201905080821115613287576132866127bf565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f6132c1601a836124cf565b91506132cc8261328d565b602082019050919050565b5f6020820190508181035f8301526132ee816132b5565b9050919050565b5f6132ff826125b3565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613331576133306127bf565b5b600182019050919050565b7f4f6e6c7920332073656c6c732070657220626c6f636b210000000000000000005f82015250565b5f6133706017836124cf565b915061337b8261333c565b602082019050919050565b5f6020820190508181035f83015261339d81613364565b9050919050565b5f6133ae826125b3565b91506133b9836125b3565b92508282039050818111156133d1576133d06127bf565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61340e826125b3565b9150613419836125b3565b925082613429576134286133d7565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f61348e6021836124cf565b915061349982613434565b604082019050919050565b5f6020820190508181035f8301526134bb81613482565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61354e81612578565b82525050565b5f61355f8383613545565b60208301905092915050565b5f602082019050919050565b5f6135818261351c565b61358b8185613526565b935061359683613536565b805f5b838110156135c65781516135ad8882613554565b97506135b88361356b565b925050600181019050613599565b5085935050505092915050565b5f60a0820190506135e65f830188612657565b6135f36020830187612c03565b81810360408301526136058186613577565b9050613614606083018561272e565b6136216080830184612657565b9695505050505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f61365f601b836124cf565b915061366a8261362b565b602082019050919050565b5f6020820190508181035f83015261368c81613653565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122036f2abc1f80aba3df601cf2f0771190bd28c616d21e930eb89103c37e5a3779564736f6c634300081a0033
Deployed Bytecode
0x60806040526004361061012d575f3560e01c8063833d7ce6116100aa57806396cea2ac1161006e57806396cea2ac146103ba578063a9059cbb146103e2578063b79c59861461041e578063bf474bed14610434578063c9567bf91461045e578063dd62ed3e1461047457610134565b8063833d7ce6146102ea5780638da5cb5b146103265780638f9a55c014610350578063909ddc4e1461037a57806395d89b411461039057610134565b8063313ce567116100f1578063313ce5671461022e5780633ba8c75d1461025857806370a082311461026e578063715018a6146102aa5780637d1db4a5146102c057610134565b806306fdde0314610138578063095ea7b3146101625780630faee56f1461019e57806318160ddd146101c857806323b872dd146101f257610134565b3661013457005b5f80fd5b348015610143575f80fd5b5061014c6104b0565b6040516101599190612535565b60405180910390f35b34801561016d575f80fd5b50610188600480360381019061018391906125e6565b6104ed565b604051610195919061263e565b60405180910390f35b3480156101a9575f80fd5b506101b261050a565b6040516101bf9190612666565b60405180910390f35b3480156101d3575f80fd5b506101dc610510565b6040516101e99190612666565b60405180910390f35b3480156101fd575f80fd5b506102186004803603810190610213919061267f565b610533565b604051610225919061263e565b60405180910390f35b348015610239575f80fd5b50610242610607565b60405161024f91906126ea565b60405180910390f35b348015610263575f80fd5b5061026c61060f565b005b348015610279575f80fd5b50610294600480360381019061028f9190612703565b6106c0565b6040516102a19190612666565b60405180910390f35b3480156102b5575f80fd5b506102be610706565b005b3480156102cb575f80fd5b506102d4610854565b6040516102e19190612666565b60405180910390f35b3480156102f5575f80fd5b50610310600480360381019061030b91906125e6565b61085a565b60405161031d919061263e565b60405180910390f35b348015610331575f80fd5b5061033a610a19565b604051610347919061273d565b60405180910390f35b34801561035b575f80fd5b50610364610a40565b6040516103719190612666565b60405180910390f35b348015610385575f80fd5b5061038e610a46565b005b34801561039b575f80fd5b506103a4610b1a565b6040516103b19190612535565b60405180910390f35b3480156103c5575f80fd5b506103e060048036038101906103db9190612756565b610b57565b005b3480156103ed575f80fd5b50610408600480360381019061040391906125e6565b610be3565b604051610415919061263e565b60405180910390f35b348015610429575f80fd5b50610432610c00565b005b34801561043f575f80fd5b50610448610d2f565b6040516104559190612666565b60405180910390f35b348015610469575f80fd5b50610472610d35565b005b34801561047f575f80fd5b5061049a60048036038101906104959190612781565b61138f565b6040516104a79190612666565b60405180910390f35b60606040518060400160405280601081526020017f4d61747420467572696527732052617400000000000000000000000000000000815250905090565b5f6105006104f9611411565b8484611418565b6001905092915050565b60115481565b5f6009600a61051f919061291b565b633b9aca0061052e9190612965565b905090565b5f61053f8484846115db565b6105fc8461054b611411565b6105f7856040518060600160405280602881526020016136946028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6105ae611411565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611fb19092919063ffffffff16565b611418565b600190509392505050565b5f6009905090565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661064f611411565b73ffffffffffffffffffffffffffffffffffffffff161461066e575f80fd5b5f4790505f81116106b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106ab90612a16565b60405180910390fd5b6106bd81612013565b50565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b61070e611411565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461079a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161079190612a7e565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600e5481565b5f60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661089b611411565b73ffffffffffffffffffffffffffffffffffffffff16146108ba575f80fd5b5f820361093c578273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016108fa919061273d565b602060405180830381865afa158015610915573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109399190612ab0565b91505b7fda2bc2bedd1f85b5a59d5dbbd6684ff877ef916994a16ec08813101e99ace65f838360405161096d929190612adb565b60405180910390a18273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b81526004016109d1929190612b5d565b6020604051808303815f875af11580156109ed573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a119190612bae565b905092915050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600f5481565b610a4e611411565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ada576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ad190612a7e565b60405180910390fd5b5f600c819055507fe9b79e1a6c2dc43b4c0c6ff01ce9e3332d810e482270f464c0a21ad6c5fc6de35f604051610b109190612c12565b60405180910390a1565b60606040518060400160405280600381526020017f464f580000000000000000000000000000000000000000000000000000000000815250905090565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610b97611411565b73ffffffffffffffffffffffffffffffffffffffff1614610bb6575f80fd5b6007548111158015610bca57506008548111155b610bd2575f80fd5b806007819055508060088190555050565b5f610bf6610bef611411565b84846115db565b6001905092915050565b610c08611411565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c8b90612a7e565b60405180910390fd5b6009600a610ca2919061291b565b633b9aca00610cb19190612965565b600e819055506009600a610cc5919061291b565b633b9aca00610cd49190612965565b600f819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6009600a610d09919061291b565b633b9aca00610d189190612965565b604051610d259190612666565b60405180910390a1565b60105481565b610d3d611411565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610dc9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dc090612a7e565b60405180910390fd5b601360149054906101000a900460ff1615610e19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1090612c75565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d60125f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610eb53060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166009600a610ea1919061291b565b633b9aca00610eb09190612965565b611418565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f1f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f439190612ca7565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fc9573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fed9190612ca7565b6040518363ffffffff1660e01b815260040161100a929190612cd2565b6020604051808303815f875af1158015611026573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061104a9190612ca7565b60135f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f611093306106c0565b90505f6110be60646110b06005548561207b90919063ffffffff16565b6120f290919063ffffffff16565b90505f6110d4828461213b90919063ffffffff16565b90505f8311611118576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161110f90612d69565b60405180910390fd5b5f471161115a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115190612df7565b60405180910390fd5b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730845f806111a4610a19565b426040518863ffffffff1660e01b81526004016111c696959493929190612e15565b60606040518083038185885af11580156111e2573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906112079190612e74565b50505060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016112a7929190612adb565b6020604051808303815f875af11580156112c3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112e79190612bae565b506001601360166101000a81548160ff0219169083151502179055506001601360146101000a81548160ff021916908315150217905550436016819055503073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516113829190612666565b60405180910390a3505050565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611486576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147d90612f34565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036114f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114eb90612fc2565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516115ce9190612666565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611649576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164090613050565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036116b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ae906130de565b60405180910390fd5b5f81116116f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116f09061316c565b60405180910390fd5b5f601360149054906101000a900460ff1615801561174257503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b801561179a575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b611d01576117a6610a19565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561181457506117e4610a19565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611d00575f600d54036118615761185e6064611850600954600d541161183d57600554611841565b6007545b8561207b90919063ffffffff16565b6120f290919063ffffffff16565b90505b5f600d541115611896576118936064611885600c548561207b90919063ffffffff16565b6120f290919063ffffffff16565b90505b60165443036118e5576028600d54106118e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118db906131d4565b60405180910390fd5b5b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614801561198e575060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156119e1575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611ada57600e54821115611a2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a229061323c565b60405180910390fd5b600f5482611a38856106c0565b611a42919061325a565b1115611a83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a7a906132d7565b60405180910390fd5b611ac06064611ab2600954600d541015611a9f57600554611aa3565b6007545b8561207b90919063ffffffff16565b6120f290919063ffffffff16565b9050600d5f815480929190611ad4906132f5565b91905055505b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611b6257503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611ba657611ba36064611b95600a54600d5411611b8257600654611b86565b6008545b8561207b90919063ffffffff16565b6120f290919063ffffffff16565b90505b5f611bb0306106c0565b9050601360159054906101000a900460ff16158015611c1b575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b8015611c335750601360169054906101000a900460ff165b8015611c40575060105481115b8015611c4f5750600b54600d54115b15611cfe57601554431115611c66575f6014819055505b600360145410611cab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ca290613386565b60405180910390fd5b611cc8611cc384611cbe84601154612184565b612184565b61219c565b5f4790505f811115611cde57611cdd47612013565b5b60145f815480929190611cf0906132f5565b919050555043601581905550505b505b5b5f811115611e0057611d598160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461240790919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611df79190612666565b60405180910390a35b611e508260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461213b90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550611ef3611ea7828461213b90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461240790919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef611f96848661213b90919063ffffffff16565b604051611fa39190612666565b60405180910390a350505050565b5f838311158290611ff8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fef9190612535565b60405180910390fd5b505f838561200691906133a4565b9050809150509392505050565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015612077573d5f803e3d5ffd5b5050565b5f80830361208b575f90506120ec565b5f82846120989190612965565b90508284826120a79190613404565b146120e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120de906134a4565b60405180910390fd5b809150505b92915050565b5f61213383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612464565b905092915050565b5f61217c83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611fb1565b905092915050565b5f8183116121925782612194565b815b905092915050565b6001601360156101000a81548160ff0219169083151502179055505f600267ffffffffffffffff8111156121d3576121d26134c2565b5b6040519080825280602002602001820160405280156122015781602001602082028036833780820191505090505b50905030815f81518110612218576122176134ef565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156122bc573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122e09190612ca7565b816001815181106122f4576122f36134ef565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061235a3060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611418565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016123bc9594939291906135d3565b5f604051808303815f87803b1580156123d3575f80fd5b505af11580156123e5573d5f803e3d5ffd5b50505050505f601360156101000a81548160ff02191690831515021790555050565b5f808284612415919061325a565b90508381101561245a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161245190613675565b60405180910390fd5b8091505092915050565b5f80831182906124aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124a19190612535565b60405180910390fd5b505f83856124b89190613404565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f612507826124c5565b61251181856124cf565b93506125218185602086016124df565b61252a816124ed565b840191505092915050565b5f6020820190508181035f83015261254d81846124fd565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61258282612559565b9050919050565b61259281612578565b811461259c575f80fd5b50565b5f813590506125ad81612589565b92915050565b5f819050919050565b6125c5816125b3565b81146125cf575f80fd5b50565b5f813590506125e0816125bc565b92915050565b5f80604083850312156125fc576125fb612555565b5b5f6126098582860161259f565b925050602061261a858286016125d2565b9150509250929050565b5f8115159050919050565b61263881612624565b82525050565b5f6020820190506126515f83018461262f565b92915050565b612660816125b3565b82525050565b5f6020820190506126795f830184612657565b92915050565b5f805f6060848603121561269657612695612555565b5b5f6126a38682870161259f565b93505060206126b48682870161259f565b92505060406126c5868287016125d2565b9150509250925092565b5f60ff82169050919050565b6126e4816126cf565b82525050565b5f6020820190506126fd5f8301846126db565b92915050565b5f6020828403121561271857612717612555565b5b5f6127258482850161259f565b91505092915050565b61273781612578565b82525050565b5f6020820190506127505f83018461272e565b92915050565b5f6020828403121561276b5761276a612555565b5b5f612778848285016125d2565b91505092915050565b5f806040838503121561279757612796612555565b5b5f6127a48582860161259f565b92505060206127b58582860161259f565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156128415780860481111561281d5761281c6127bf565b5b600185161561282c5780820291505b808102905061283a856127ec565b9450612801565b94509492505050565b5f826128595760019050612914565b81612866575f9050612914565b816001811461287c5760028114612886576128b5565b6001915050612914565b60ff841115612898576128976127bf565b5b8360020a9150848211156128af576128ae6127bf565b5b50612914565b5060208310610133831016604e8410600b84101617156128ea5782820a9050838111156128e5576128e46127bf565b5b612914565b6128f784848460016127f8565b9250905081840481111561290e5761290d6127bf565b5b81810290505b9392505050565b5f612925826125b3565b9150612930836126cf565b925061295d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848461284a565b905092915050565b5f61296f826125b3565b915061297a836125b3565b9250828202612988816125b3565b9150828204841483151761299f5761299e6127bf565b5b5092915050565b7f436f6e74726163742062616c616e6365206d75737420626520677265617465725f8201527f207468616e207a65726f00000000000000000000000000000000000000000000602082015250565b5f612a00602a836124cf565b9150612a0b826129a6565b604082019050919050565b5f6020820190508181035f830152612a2d816129f4565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612a686020836124cf565b9150612a7382612a34565b602082019050919050565b5f6020820190508181035f830152612a9581612a5c565b9050919050565b5f81519050612aaa816125bc565b92915050565b5f60208284031215612ac557612ac4612555565b5b5f612ad284828501612a9c565b91505092915050565b5f604082019050612aee5f83018561272e565b612afb6020830184612657565b9392505050565b5f819050919050565b5f612b25612b20612b1b84612559565b612b02565b612559565b9050919050565b5f612b3682612b0b565b9050919050565b5f612b4782612b2c565b9050919050565b612b5781612b3d565b82525050565b5f604082019050612b705f830185612b4e565b612b7d6020830184612657565b9392505050565b612b8d81612624565b8114612b97575f80fd5b50565b5f81519050612ba881612b84565b92915050565b5f60208284031215612bc357612bc2612555565b5b5f612bd084828501612b9a565b91505092915050565b5f819050919050565b5f612bfc612bf7612bf284612bd9565b612b02565b6125b3565b9050919050565b612c0c81612be2565b82525050565b5f602082019050612c255f830184612c03565b92915050565b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f612c5f6017836124cf565b9150612c6a82612c2b565b602082019050919050565b5f6020820190508181035f830152612c8c81612c53565b9050919050565b5f81519050612ca181612589565b92915050565b5f60208284031215612cbc57612cbb612555565b5b5f612cc984828501612c93565b91505092915050565b5f604082019050612ce55f83018561272e565b612cf2602083018461272e565b9392505050565b7f436f6e7472616374206d75737420686f6c6420746f6b656e7320666f72206c695f8201527f7175696469747900000000000000000000000000000000000000000000000000602082015250565b5f612d536027836124cf565b9150612d5e82612cf9565b604082019050919050565b5f6020820190508181035f830152612d8081612d47565b9050919050565b7f436f6e7472616374206d75737420686f6c642045544820666f72206c697175695f8201527f6469747900000000000000000000000000000000000000000000000000000000602082015250565b5f612de16024836124cf565b9150612dec82612d87565b604082019050919050565b5f6020820190508181035f830152612e0e81612dd5565b9050919050565b5f60c082019050612e285f83018961272e565b612e356020830188612657565b612e426040830187612c03565b612e4f6060830186612c03565b612e5c608083018561272e565b612e6960a0830184612657565b979650505050505050565b5f805f60608486031215612e8b57612e8a612555565b5b5f612e9886828701612a9c565b9350506020612ea986828701612a9c565b9250506040612eba86828701612a9c565b9150509250925092565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f612f1e6024836124cf565b9150612f2982612ec4565b604082019050919050565b5f6020820190508181035f830152612f4b81612f12565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f612fac6022836124cf565b9150612fb782612f52565b604082019050919050565b5f6020820190508181035f830152612fd981612fa0565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f61303a6025836124cf565b915061304582612fe0565b604082019050919050565b5f6020820190508181035f8301526130678161302e565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6130c86023836124cf565b91506130d38261306e565b604082019050919050565b5f6020820190508181035f8301526130f5816130bc565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f6131566029836124cf565b9150613161826130fc565b604082019050919050565b5f6020820190508181035f8301526131838161314a565b9050919050565b7f457863656564732062757973206f6e2074686520666972737420626c6f636b2e5f82015250565b5f6131be6020836124cf565b91506131c98261318a565b602082019050919050565b5f6020820190508181035f8301526131eb816131b2565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f6132266019836124cf565b9150613231826131f2565b602082019050919050565b5f6020820190508181035f8301526132538161321a565b9050919050565b5f613264826125b3565b915061326f836125b3565b9250828201905080821115613287576132866127bf565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f6132c1601a836124cf565b91506132cc8261328d565b602082019050919050565b5f6020820190508181035f8301526132ee816132b5565b9050919050565b5f6132ff826125b3565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613331576133306127bf565b5b600182019050919050565b7f4f6e6c7920332073656c6c732070657220626c6f636b210000000000000000005f82015250565b5f6133706017836124cf565b915061337b8261333c565b602082019050919050565b5f6020820190508181035f83015261339d81613364565b9050919050565b5f6133ae826125b3565b91506133b9836125b3565b92508282039050818111156133d1576133d06127bf565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61340e826125b3565b9150613419836125b3565b925082613429576134286133d7565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f61348e6021836124cf565b915061349982613434565b604082019050919050565b5f6020820190508181035f8301526134bb81613482565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61354e81612578565b82525050565b5f61355f8383613545565b60208301905092915050565b5f602082019050919050565b5f6135818261351c565b61358b8185613526565b935061359683613536565b805f5b838110156135c65781516135ad8882613554565b97506135b88361356b565b925050600181019050613599565b5085935050505092915050565b5f60a0820190506135e65f830188612657565b6135f36020830187612c03565b81810360408301526136058186613577565b9050613614606083018561272e565b6136216080830184612657565b9695505050505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f61365f601b836124cf565b915061366a8261362b565b602082019050919050565b5f6020820190508181035f83015261368c81613653565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122036f2abc1f80aba3df601cf2f0771190bd28c616d21e930eb89103c37e5a3779564736f6c634300081a0033
Deployed Bytecode Sourcemap
3765:11658:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7333:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8166:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6131:48;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7610:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8335:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7519:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15026:394;;;;;;;;;;;;;:::i;:::-;;7713:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2848:148;;;;;;;;;;;;;:::i;:::-;;5743:49;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14516:502;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2634:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5855:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14306:202;;;;;;;;;;;;;:::i;:::-;;7424:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13960:338;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7840:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13680:272;;;;;;;;;;;;;:::i;:::-;;5974:54;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12391:1240;;;;;;;;;;;;;:::i;:::-;;8015:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7333:83;7370:13;7403:5;;;;;;;;;;;;;;;;;7396:12;;7333:83;:::o;8166:161::-;8241:4;8258:39;8267:12;:10;:12::i;:::-;8281:7;8290:6;8258:8;:39::i;:::-;8315:4;8308:11;;8166:161;;;;:::o;6131:48::-;;;;:::o;7610:95::-;7663:7;5298:1;5438:2;:13;;;;:::i;:::-;5425:10;:26;;;;:::i;:::-;7683:14;;7610:95;:::o;8335:313::-;8433:4;8450:36;8460:6;8468:9;8479:6;8450:9;:36::i;:::-;8497:121;8506:6;8514:12;:10;:12::i;:::-;8528:89;8566:6;8528:89;;;;;;;;;;;;;;;;;:11;:19;8540:6;8528:19;;;;;;;;;;;;;;;:33;8548:12;:10;:12::i;:::-;8528:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;8497:8;:121::i;:::-;8636:4;8629:11;;8335:313;;;;;:::o;7519:83::-;7560:5;5298:1;7578:16;;7519:83;:::o;15026:394::-;15231:10;;;;;;;;;;;15215:26;;:12;:10;:12::i;:::-;:26;;;15207:35;;;;;;15255:18;15276:21;15255:42;;15329:1;15316:10;:14;15308:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;15388:24;15401:10;15388:12;:24::i;:::-;15064:356;15026:394::o;7713:119::-;7779:7;7806:9;:18;7816:7;7806:18;;;;;;;;;;;;;;;;7799:25;;7713:119;;;:::o;2848:148::-;2771:12;:10;:12::i;:::-;2761:22;;:6;;;;;;;;;;:22;;;2753:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2955:1:::1;2918:40;;2939:6;::::0;::::1;;;;;;;;2918:40;;;;;;;;;;;;2986:1;2969:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;2848:148::o:0;5743:49::-;;;;:::o;14516:502::-;14601:12;14772:10;;;;;;;;;;;14756:26;;:12;:10;:12::i;:::-;:26;;;14748:35;;;;;;14810:1;14800:6;:11;14796:98;;14844:12;14837:30;;;14876:4;14837:45;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14828:54;;14796:98;14911:32;14922:12;14936:6;14911:32;;;;;;;:::i;:::-;;;;;;;;14968:12;14961:29;;;14991:10;;;;;;;;;;;15003:6;14961:49;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14954:56;;14516:502;;;;:::o;2634:79::-;2672:7;2699:6;;;;;;;;;;;2692:13;;2634:79;:::o;5855:51::-;;;;:::o;14306:202::-;2771:12;:10;:12::i;:::-;2761:22;;:6;;;;;;;;;;:22;;;2753:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14462:1:::1;14447:12;:16;;;;14479:21;14498:1;14479:21;;;;;;:::i;:::-;;;;;;;;14306:202::o:0;7424:87::-;7463:13;7496:7;;;;;;;;;;;;;;;;;7489:14;;7424:87;:::o;13960:338::-;14139:10;;;;;;;;;;;14123:26;;:12;:10;:12::i;:::-;:26;;;14115:35;;;;;;14180:12;;14169:7;:23;;:51;;;;;14207:13;;14196:7;:24;;14169:51;14161:60;;;;;;14249:7;14234:12;:22;;;;14283:7;14267:13;:23;;;;13960:338;:::o;7840:167::-;7918:4;7935:42;7945:12;:10;:12::i;:::-;7959:9;7970:6;7935:9;:42::i;:::-;7995:4;7988:11;;7840:167;;;;:::o;13680:272::-;2771:12;:10;:12::i;:::-;2761:22;;:6;;;;;;;;;;:22;;;2753:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;5298:1:::1;5438:2;:13;;;;:::i;:::-;5425:10;:26;;;;:::i;:::-;13844:12;:22;;;;5298:1;5438:2;:13;;;;:::i;:::-;5425:10;:26;;;;:::i;:::-;13877:14;:24;;;;13917:27;5298:1;5438:2;:13;;;;:::i;:::-;5425:10;:26;;;;:::i;:::-;13917:27;;;;;;:::i;:::-;;;;;;;;13680:272::o:0;5974:54::-;;;;:::o;12391:1240::-;2771:12;:10;:12::i;:::-;2761:22;;:6;;;;;;;;;;:22;;;2753:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12582:11:::1;;;;;;;;;;;12581:12;12573:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;12669:42;12632:15;;:80;;;;;;;;;;;;;;;;;;12723:58;12740:4;12755:15;;;;;;;;;;;5298:1;5438:2;:13;;;;:::i;:::-;5425:10;:26;;;;:::i;:::-;12723:8;:58::i;:::-;12826:15;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12808:55;;;12872:4;12879:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12808:94;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12792:13;;:110;;;;;;;;;;;;;;;;;;12913:19;12935:24;12953:4;12935:9;:24::i;:::-;12913:46;;12970:17;12990:40;13026:3;12990:31;13006:14;;12990:11;:15;;:31;;;;:::i;:::-;:35;;:40;;;;:::i;:::-;12970:60;;13041:17;13061:26;13077:9;13061:11;:15;;:26;;;;:::i;:::-;13041:46;;13120:1;13106:11;:15;13098:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13208:1;13184:21;:25;13176:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;13261:15;;;;;;;;;;;:31;;;13300:21;13331:4;13338:9;13349:1;13352::::0;13355:7:::1;:5;:7::i;:::-;13364:15;13261:119;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;13398:13;;;;;;;;;;;13391:29;;;13429:15;;;;;;;;;;;13447:14;13391:71;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;13487:4;13473:11;;:18;;;;;;;;;;;;;;;;;;13516:4;13502:11;;:18;;;;;;;;;;;;;;;;;;13544:12;13531:10;:25;;;;13604:4;13572:49;;13589:4;13572:49;;;13611:9;13572:49;;;;;;:::i;:::-;;;;;;;;12435:1196;;;12391:1240::o:0;8015:143::-;8096:7;8123:11;:18;8135:5;8123:18;;;;;;;;;;;;;;;:27;8142:7;8123:27;;;;;;;;;;;;;;;;8116:34;;8015:143;;;;:::o;282:98::-;335:7;362:10;355:17;;282:98;:::o;8656:335::-;8766:1;8749:19;;:5;:19;;;8741:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8847:1;8828:21;;:7;:21;;;8820:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8929:6;8899:11;:18;8911:5;8899:18;;;;;;;;;;;;;;;:27;8918:7;8899:27;;;;;;;;;;;;;;;:36;;;;8967:7;8951:32;;8960:5;8951:32;;;8976:6;8951:32;;;;;;:::i;:::-;;;;;;;;8656:335;;;:::o;8999:2678::-;9103:1;9087:18;;:4;:18;;;9079:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9180:1;9166:16;;:2;:16;;;9158:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9250:1;9241:6;:10;9233:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9308:17;9347:11;;;;;;;;;;;9346:12;:37;;;;;9378:4;9362:21;;:4;:21;;;9346:37;:60;;;;;9393:13;;;;;;;;;;;9387:19;;:2;:19;;;9346:60;9342:1964;;9440:7;:5;:7::i;:::-;9432:15;;:4;:15;;;;:32;;;;;9457:7;:5;:7::i;:::-;9451:13;;:2;:13;;;;9432:32;9428:1878;;;9498:1;9485:9;;:14;9481:149;;9532:82;9610:3;9532:73;9556:15;;9544:9;;:27;9543:61;;9590:14;;9543:61;;;9575:12;;9543:61;9532:6;:10;;:73;;;;:::i;:::-;:77;;:82;;;;:::i;:::-;9520:94;;9481:149;9662:1;9650:9;;:13;9646:99;;;9696:33;9725:3;9696:24;9707:12;;9696:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;9684:45;;9646:99;9781:10;;9765:12;:26;9761:126;;9832:2;9820:9;;:14;9812:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;9761:126;9915:13;;;;;;;;;;;9907:21;;:4;:21;;;:55;;;;;9946:15;;;;;;;;;;;9932:30;;:2;:30;;;;9907:55;:82;;;;;9967:18;:22;9986:2;9967:22;;;;;;;;;;;;;;;;;;;;;;;;;9966:23;9907:82;9903:425;;;10028:12;;10018:6;:22;;10010:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;10123:14;;10113:6;10097:13;10107:2;10097:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;10089:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;10199:83;10278:3;10199:74;10224:15;;10211:9;;:28;;10210:62;;10258:14;;10210:62;;;10243:12;;10210:62;10199:6;:10;;:74;;;;:::i;:::-;:78;;:83;;;;:::i;:::-;10187:95;;10301:9;;:11;;;;;;;;;:::i;:::-;;;;;;9903:425;10354:13;;;;;;;;;;;10348:19;;:2;:19;;;:44;;;;;10387:4;10371:21;;:4;:21;;;;10348:44;10344:182;;;10425:85;10506:3;10425:76;10449:16;;10437:9;;:28;10436:64;;10485:15;;10436:64;;;10469:13;;10436:64;10425:6;:10;;:76;;;;:::i;:::-;:80;;:85;;;;:::i;:::-;10413:97;;10344:182;10542:28;10573:24;10591:4;10573:9;:24::i;:::-;10542:55;;10617:6;;;;;;;;;;;10616:7;:30;;;;;10633:13;;;;;;;;;;;10627:19;;:2;:19;;;10616:30;:45;;;;;10650:11;;;;;;;;;;;10616:45;:89;;;;;10688:17;;10665:20;:40;10616:89;:123;;;;;10721:18;;10709:9;;:30;10616:123;10612:683;;;10779:13;;10764:12;:28;10760:90;;;10829:1;10817:9;:13;;;;10760:90;10888:1;10876:9;;:13;10868:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;10938:69;10955:51;10959:6;10967:38;10971:20;10993:11;;10967:3;:38::i;:::-;10955:3;:51::i;:::-;10938:16;:69::i;:::-;11026:26;11055:21;11026:50;;11120:1;11099:18;:22;11095:106;;;11146:35;11159:21;11146:12;:35::i;:::-;11095:106;11221:9;;:11;;;;;;;;;:::i;:::-;;;;;;11267:12;11251:13;:28;;;;10741:554;10612:683;9466:1840;9428:1878;9342:1964;11334:1;11322:9;:13;11318:172;;;11379:39;11408:9;11379;:24;11397:4;11379:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;11352:9;:24;11370:4;11352:24;;;;;;;;;;;;;;;:66;;;;11461:4;11438:40;;11447:4;11438:40;;;11468:9;11438:40;;;;;;:::i;:::-;;;;;;;;11318:172;11518:27;11538:6;11518:9;:15;11528:4;11518:15;;;;;;;;;;;;;;;;:19;;:27;;;;:::i;:::-;11500:9;:15;11510:4;11500:15;;;;;;;;;;;;;;;:45;;;;11572:40;11590:21;11601:9;11590:6;:10;;:21;;;;:::i;:::-;11572:9;:13;11582:2;11572:13;;;;;;;;;;;;;;;;:17;;:40;;;;:::i;:::-;11556:9;:13;11566:2;11556:13;;;;;;;;;;;;;;;:56;;;;11643:2;11628:41;;11637:4;11628:41;;;11647:21;11658:9;11647:6;:10;;:21;;;;:::i;:::-;11628:41;;;;;;:::i;:::-;;;;;;;;9068:2609;8999:2678;;;:::o;1528:190::-;1614:7;1647:1;1642;:6;;1650:12;1634:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1674:9;1690:1;1686;:5;;;;:::i;:::-;1674:17;;1709:1;1702:8;;;1528:190;;;;;:::o;12291:92::-;12348:10;;;;;;;;;;;:19;;:27;12368:6;12348:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12291:92;:::o;1726:246::-;1784:7;1813:1;1808;:6;1804:47;;1838:1;1831:8;;;;1804:47;1861:9;1877:1;1873;:5;;;;:::i;:::-;1861:17;;1906:1;1901;1897;:5;;;;:::i;:::-;:10;1889:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1963:1;1956:8;;;1726:246;;;;;:::o;1980:132::-;2038:7;2065:39;2069:1;2072;2065:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2058:46;;1980:132;;;;:::o;1384:136::-;1442:7;1469:43;1473:1;1476;1469:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1462:50;;1384:136;;;;:::o;11685:107::-;11742:7;11774:1;11770;:5;11769:15;;11783:1;11769:15;;;11779:1;11769:15;11762:22;;11685:107;;;;:::o;11800:483::-;6800:4;6791:6;;:13;;;;;;;;;;;;;;;;;;11878:21:::1;11916:1;11902:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11878:40;;11947:4;11929;11934:1;11929:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;11973:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11963:4;11968:1;11963:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;12006:62;12023:4;12038:15;;;;;;;;;;;12056:11;12006:8;:62::i;:::-;12079:15;;;;;;;;;;;:66;;;12160:11;12186:1;12202:4;12229;12249:15;12079:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11867:416;6836:5:::0;6827:6;;:14;;;;;;;;;;;;;;;;;;11800:483;:::o;1197:179::-;1255:7;1275:9;1291:1;1287;:5;;;;:::i;:::-;1275:17;;1316:1;1311;:6;;1303:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1367:1;1360:8;;;1197:179;;;;:::o;2120:189::-;2206:7;2238:1;2234;:5;2241:12;2226:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2265:9;2281:1;2277;:5;;;;:::i;:::-;2265:17;;2300:1;2293:8;;;2120:189;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:139::-;376:6;371:3;366;360:23;417:1;408:6;403:3;399:16;392:27;287:139;;;:::o;432:102::-;473:6;524:2;520:7;515:2;508:5;504:14;500:28;490:38;;432:102;;;:::o;540:377::-;628:3;656:39;689:5;656:39;:::i;:::-;711:71;775:6;770:3;711:71;:::i;:::-;704:78;;791:65;849:6;844:3;837:4;830:5;826:16;791:65;:::i;:::-;881:29;903:6;881:29;:::i;:::-;876:3;872:39;865:46;;632:285;540:377;;;;:::o;923:313::-;1036:4;1074:2;1063:9;1059:18;1051:26;;1123:9;1117:4;1113:20;1109:1;1098:9;1094:17;1087:47;1151:78;1224:4;1215:6;1151:78;:::i;:::-;1143:86;;923:313;;;;:::o;1323:117::-;1432:1;1429;1422:12;1569:126;1606:7;1646:42;1639:5;1635:54;1624:65;;1569:126;;;:::o;1701:96::-;1738:7;1767:24;1785:5;1767:24;:::i;:::-;1756:35;;1701:96;;;:::o;1803:122::-;1876:24;1894:5;1876:24;:::i;:::-;1869:5;1866:35;1856:63;;1915:1;1912;1905:12;1856:63;1803:122;:::o;1931:139::-;1977:5;2015:6;2002:20;1993:29;;2031:33;2058:5;2031:33;:::i;:::-;1931:139;;;;:::o;2076:77::-;2113:7;2142:5;2131:16;;2076:77;;;:::o;2159:122::-;2232:24;2250:5;2232:24;:::i;:::-;2225:5;2222:35;2212:63;;2271:1;2268;2261:12;2212:63;2159:122;:::o;2287:139::-;2333:5;2371:6;2358:20;2349:29;;2387:33;2414:5;2387:33;:::i;:::-;2287:139;;;;:::o;2432:474::-;2500:6;2508;2557:2;2545:9;2536:7;2532:23;2528:32;2525:119;;;2563:79;;:::i;:::-;2525:119;2683:1;2708:53;2753:7;2744:6;2733:9;2729:22;2708:53;:::i;:::-;2698:63;;2654:117;2810:2;2836:53;2881:7;2872:6;2861:9;2857:22;2836:53;:::i;:::-;2826:63;;2781:118;2432:474;;;;;:::o;2912:90::-;2946:7;2989:5;2982:13;2975:21;2964:32;;2912:90;;;:::o;3008:109::-;3089:21;3104:5;3089:21;:::i;:::-;3084:3;3077:34;3008:109;;:::o;3123:210::-;3210:4;3248:2;3237:9;3233:18;3225:26;;3261:65;3323:1;3312:9;3308:17;3299:6;3261:65;:::i;:::-;3123:210;;;;:::o;3339:118::-;3426:24;3444:5;3426:24;:::i;:::-;3421:3;3414:37;3339:118;;:::o;3463:222::-;3556:4;3594:2;3583:9;3579:18;3571:26;;3607:71;3675:1;3664:9;3660:17;3651:6;3607:71;:::i;:::-;3463:222;;;;:::o;3691:619::-;3768:6;3776;3784;3833:2;3821:9;3812:7;3808:23;3804:32;3801:119;;;3839:79;;:::i;:::-;3801:119;3959:1;3984:53;4029:7;4020:6;4009:9;4005:22;3984:53;:::i;:::-;3974:63;;3930:117;4086:2;4112:53;4157:7;4148:6;4137:9;4133:22;4112:53;:::i;:::-;4102:63;;4057:118;4214:2;4240:53;4285:7;4276:6;4265:9;4261:22;4240:53;:::i;:::-;4230:63;;4185:118;3691:619;;;;;:::o;4316:86::-;4351:7;4391:4;4384:5;4380:16;4369:27;;4316:86;;;:::o;4408:112::-;4491:22;4507:5;4491:22;:::i;:::-;4486:3;4479:35;4408:112;;:::o;4526:214::-;4615:4;4653:2;4642:9;4638:18;4630:26;;4666:67;4730:1;4719:9;4715:17;4706:6;4666:67;:::i;:::-;4526:214;;;;:::o;4746:329::-;4805:6;4854:2;4842:9;4833:7;4829:23;4825:32;4822:119;;;4860:79;;:::i;:::-;4822:119;4980:1;5005:53;5050:7;5041:6;5030:9;5026:22;5005:53;:::i;:::-;4995:63;;4951:117;4746:329;;;;:::o;5081:118::-;5168:24;5186:5;5168:24;:::i;:::-;5163:3;5156:37;5081:118;;:::o;5205:222::-;5298:4;5336:2;5325:9;5321:18;5313:26;;5349:71;5417:1;5406:9;5402:17;5393:6;5349:71;:::i;:::-;5205:222;;;;:::o;5433:329::-;5492:6;5541:2;5529:9;5520:7;5516:23;5512:32;5509:119;;;5547:79;;:::i;:::-;5509:119;5667:1;5692:53;5737:7;5728:6;5717:9;5713:22;5692:53;:::i;:::-;5682:63;;5638:117;5433:329;;;;:::o;5768:474::-;5836:6;5844;5893:2;5881:9;5872:7;5868:23;5864:32;5861:119;;;5899:79;;:::i;:::-;5861:119;6019:1;6044:53;6089:7;6080:6;6069:9;6065:22;6044:53;:::i;:::-;6034:63;;5990:117;6146:2;6172:53;6217:7;6208:6;6197:9;6193:22;6172:53;:::i;:::-;6162:63;;6117:118;5768:474;;;;;:::o;6248:180::-;6296:77;6293:1;6286:88;6393:4;6390:1;6383:15;6417:4;6414:1;6407:15;6434:102;6476:8;6523:5;6520:1;6516:13;6495:34;;6434:102;;;:::o;6542:848::-;6603:5;6610:4;6634:6;6625:15;;6658:5;6649:14;;6672:712;6693:1;6683:8;6680:15;6672:712;;;6788:4;6783:3;6779:14;6773:4;6770:24;6767:50;;;6797:18;;:::i;:::-;6767:50;6847:1;6837:8;6833:16;6830:451;;;7262:4;7255:5;7251:16;7242:25;;6830:451;7312:4;7306;7302:15;7294:23;;7342:32;7365:8;7342:32;:::i;:::-;7330:44;;6672:712;;;6542:848;;;;;;;:::o;7396:1073::-;7450:5;7641:8;7631:40;;7662:1;7653:10;;7664:5;;7631:40;7690:4;7680:36;;7707:1;7698:10;;7709:5;;7680:36;7776:4;7824:1;7819:27;;;;7860:1;7855:191;;;;7769:277;;7819:27;7837:1;7828:10;;7839:5;;;7855:191;7900:3;7890:8;7887:17;7884:43;;;7907:18;;:::i;:::-;7884:43;7956:8;7953:1;7949:16;7940:25;;7991:3;7984:5;7981:14;7978:40;;;7998:18;;:::i;:::-;7978:40;8031:5;;;7769:277;;8155:2;8145:8;8142:16;8136:3;8130:4;8127:13;8123:36;8105:2;8095:8;8092:16;8087:2;8081:4;8078:12;8074:35;8058:111;8055:246;;;8211:8;8205:4;8201:19;8192:28;;8246:3;8239:5;8236:14;8233:40;;;8253:18;;:::i;:::-;8233:40;8286:5;;8055:246;8326:42;8364:3;8354:8;8348:4;8345:1;8326:42;:::i;:::-;8311:57;;;;8400:4;8395:3;8391:14;8384:5;8381:25;8378:51;;;8409:18;;:::i;:::-;8378:51;8458:4;8451:5;8447:16;8438:25;;7396:1073;;;;;;:::o;8475:281::-;8533:5;8557:23;8575:4;8557:23;:::i;:::-;8549:31;;8601:25;8617:8;8601:25;:::i;:::-;8589:37;;8645:104;8682:66;8672:8;8666:4;8645:104;:::i;:::-;8636:113;;8475:281;;;;:::o;8762:410::-;8802:7;8825:20;8843:1;8825:20;:::i;:::-;8820:25;;8859:20;8877:1;8859:20;:::i;:::-;8854:25;;8914:1;8911;8907:9;8936:30;8954:11;8936:30;:::i;:::-;8925:41;;9115:1;9106:7;9102:15;9099:1;9096:22;9076:1;9069:9;9049:83;9026:139;;9145:18;;:::i;:::-;9026:139;8810:362;8762:410;;;;:::o;9178:229::-;9318:34;9314:1;9306:6;9302:14;9295:58;9387:12;9382:2;9374:6;9370:15;9363:37;9178:229;:::o;9413:366::-;9555:3;9576:67;9640:2;9635:3;9576:67;:::i;:::-;9569:74;;9652:93;9741:3;9652:93;:::i;:::-;9770:2;9765:3;9761:12;9754:19;;9413:366;;;:::o;9785:419::-;9951:4;9989:2;9978:9;9974:18;9966:26;;10038:9;10032:4;10028:20;10024:1;10013:9;10009:17;10002:47;10066:131;10192:4;10066:131;:::i;:::-;10058:139;;9785:419;;;:::o;10210:182::-;10350:34;10346:1;10338:6;10334:14;10327:58;10210:182;:::o;10398:366::-;10540:3;10561:67;10625:2;10620:3;10561:67;:::i;:::-;10554:74;;10637:93;10726:3;10637:93;:::i;:::-;10755:2;10750:3;10746:12;10739:19;;10398:366;;;:::o;10770:419::-;10936:4;10974:2;10963:9;10959:18;10951:26;;11023:9;11017:4;11013:20;11009:1;10998:9;10994:17;10987:47;11051:131;11177:4;11051:131;:::i;:::-;11043:139;;10770:419;;;:::o;11195:143::-;11252:5;11283:6;11277:13;11268:22;;11299:33;11326:5;11299:33;:::i;:::-;11195:143;;;;:::o;11344:351::-;11414:6;11463:2;11451:9;11442:7;11438:23;11434:32;11431:119;;;11469:79;;:::i;:::-;11431:119;11589:1;11614:64;11670:7;11661:6;11650:9;11646:22;11614:64;:::i;:::-;11604:74;;11560:128;11344:351;;;;:::o;11701:332::-;11822:4;11860:2;11849:9;11845:18;11837:26;;11873:71;11941:1;11930:9;11926:17;11917:6;11873:71;:::i;:::-;11954:72;12022:2;12011:9;12007:18;11998:6;11954:72;:::i;:::-;11701:332;;;;;:::o;12039:60::-;12067:3;12088:5;12081:12;;12039:60;;;:::o;12105:142::-;12155:9;12188:53;12206:34;12215:24;12233:5;12215:24;:::i;:::-;12206:34;:::i;:::-;12188:53;:::i;:::-;12175:66;;12105:142;;;:::o;12253:126::-;12303:9;12336:37;12367:5;12336:37;:::i;:::-;12323:50;;12253:126;;;:::o;12385:134::-;12443:9;12476:37;12507:5;12476:37;:::i;:::-;12463:50;;12385:134;;;:::o;12525:147::-;12620:45;12659:5;12620:45;:::i;:::-;12615:3;12608:58;12525:147;;:::o;12678:348::-;12807:4;12845:2;12834:9;12830:18;12822:26;;12858:79;12934:1;12923:9;12919:17;12910:6;12858:79;:::i;:::-;12947:72;13015:2;13004:9;13000:18;12991:6;12947:72;:::i;:::-;12678:348;;;;;:::o;13032:116::-;13102:21;13117:5;13102:21;:::i;:::-;13095:5;13092:32;13082:60;;13138:1;13135;13128:12;13082:60;13032:116;:::o;13154:137::-;13208:5;13239:6;13233:13;13224:22;;13255:30;13279:5;13255:30;:::i;:::-;13154:137;;;;:::o;13297:345::-;13364:6;13413:2;13401:9;13392:7;13388:23;13384:32;13381:119;;;13419:79;;:::i;:::-;13381:119;13539:1;13564:61;13617:7;13608:6;13597:9;13593:22;13564:61;:::i;:::-;13554:71;;13510:125;13297:345;;;;:::o;13648:85::-;13693:7;13722:5;13711:16;;13648:85;;;:::o;13739:158::-;13797:9;13830:61;13848:42;13857:32;13883:5;13857:32;:::i;:::-;13848:42;:::i;:::-;13830:61;:::i;:::-;13817:74;;13739:158;;;:::o;13903:147::-;13998:45;14037:5;13998:45;:::i;:::-;13993:3;13986:58;13903:147;;:::o;14056:238::-;14157:4;14195:2;14184:9;14180:18;14172:26;;14208:79;14284:1;14273:9;14269:17;14260:6;14208:79;:::i;:::-;14056:238;;;;:::o;14300:173::-;14440:25;14436:1;14428:6;14424:14;14417:49;14300:173;:::o;14479:366::-;14621:3;14642:67;14706:2;14701:3;14642:67;:::i;:::-;14635:74;;14718:93;14807:3;14718:93;:::i;:::-;14836:2;14831:3;14827:12;14820:19;;14479:366;;;:::o;14851:419::-;15017:4;15055:2;15044:9;15040:18;15032:26;;15104:9;15098:4;15094:20;15090:1;15079:9;15075:17;15068:47;15132:131;15258:4;15132:131;:::i;:::-;15124:139;;14851:419;;;:::o;15276:143::-;15333:5;15364:6;15358:13;15349:22;;15380:33;15407:5;15380:33;:::i;:::-;15276:143;;;;:::o;15425:351::-;15495:6;15544:2;15532:9;15523:7;15519:23;15515:32;15512:119;;;15550:79;;:::i;:::-;15512:119;15670:1;15695:64;15751:7;15742:6;15731:9;15727:22;15695:64;:::i;:::-;15685:74;;15641:128;15425:351;;;;:::o;15782:332::-;15903:4;15941:2;15930:9;15926:18;15918:26;;15954:71;16022:1;16011:9;16007:17;15998:6;15954:71;:::i;:::-;16035:72;16103:2;16092:9;16088:18;16079:6;16035:72;:::i;:::-;15782:332;;;;;:::o;16120:226::-;16260:34;16256:1;16248:6;16244:14;16237:58;16329:9;16324:2;16316:6;16312:15;16305:34;16120:226;:::o;16352:366::-;16494:3;16515:67;16579:2;16574:3;16515:67;:::i;:::-;16508:74;;16591:93;16680:3;16591:93;:::i;:::-;16709:2;16704:3;16700:12;16693:19;;16352:366;;;:::o;16724:419::-;16890:4;16928:2;16917:9;16913:18;16905:26;;16977:9;16971:4;16967:20;16963:1;16952:9;16948:17;16941:47;17005:131;17131:4;17005:131;:::i;:::-;16997:139;;16724:419;;;:::o;17149:223::-;17289:34;17285:1;17277:6;17273:14;17266:58;17358:6;17353:2;17345:6;17341:15;17334:31;17149:223;:::o;17378:366::-;17520:3;17541:67;17605:2;17600:3;17541:67;:::i;:::-;17534:74;;17617:93;17706:3;17617:93;:::i;:::-;17735:2;17730:3;17726:12;17719:19;;17378:366;;;:::o;17750:419::-;17916:4;17954:2;17943:9;17939:18;17931:26;;18003:9;17997:4;17993:20;17989:1;17978:9;17974:17;17967:47;18031:131;18157:4;18031:131;:::i;:::-;18023:139;;17750:419;;;:::o;18175:807::-;18424:4;18462:3;18451:9;18447:19;18439:27;;18476:71;18544:1;18533:9;18529:17;18520:6;18476:71;:::i;:::-;18557:72;18625:2;18614:9;18610:18;18601:6;18557:72;:::i;:::-;18639:80;18715:2;18704:9;18700:18;18691:6;18639:80;:::i;:::-;18729;18805:2;18794:9;18790:18;18781:6;18729:80;:::i;:::-;18819:73;18887:3;18876:9;18872:19;18863:6;18819:73;:::i;:::-;18902;18970:3;18959:9;18955:19;18946:6;18902:73;:::i;:::-;18175:807;;;;;;;;;:::o;18988:663::-;19076:6;19084;19092;19141:2;19129:9;19120:7;19116:23;19112:32;19109:119;;;19147:79;;:::i;:::-;19109:119;19267:1;19292:64;19348:7;19339:6;19328:9;19324:22;19292:64;:::i;:::-;19282:74;;19238:128;19405:2;19431:64;19487:7;19478:6;19467:9;19463:22;19431:64;:::i;:::-;19421:74;;19376:129;19544:2;19570:64;19626:7;19617:6;19606:9;19602:22;19570:64;:::i;:::-;19560:74;;19515:129;18988:663;;;;;:::o;19657:223::-;19797:34;19793:1;19785:6;19781:14;19774:58;19866:6;19861:2;19853:6;19849:15;19842:31;19657:223;:::o;19886:366::-;20028:3;20049:67;20113:2;20108:3;20049:67;:::i;:::-;20042:74;;20125:93;20214:3;20125:93;:::i;:::-;20243:2;20238:3;20234:12;20227:19;;19886:366;;;:::o;20258:419::-;20424:4;20462:2;20451:9;20447:18;20439:26;;20511:9;20505:4;20501:20;20497:1;20486:9;20482:17;20475:47;20539:131;20665:4;20539:131;:::i;:::-;20531:139;;20258:419;;;:::o;20683:221::-;20823:34;20819:1;20811:6;20807:14;20800:58;20892:4;20887:2;20879:6;20875:15;20868:29;20683:221;:::o;20910:366::-;21052:3;21073:67;21137:2;21132:3;21073:67;:::i;:::-;21066:74;;21149:93;21238:3;21149:93;:::i;:::-;21267:2;21262:3;21258:12;21251:19;;20910:366;;;:::o;21282:419::-;21448:4;21486:2;21475:9;21471:18;21463:26;;21535:9;21529:4;21525:20;21521:1;21510:9;21506:17;21499:47;21563:131;21689:4;21563:131;:::i;:::-;21555:139;;21282:419;;;:::o;21707:224::-;21847:34;21843:1;21835:6;21831:14;21824:58;21916:7;21911:2;21903:6;21899:15;21892:32;21707:224;:::o;21937:366::-;22079:3;22100:67;22164:2;22159:3;22100:67;:::i;:::-;22093:74;;22176:93;22265:3;22176:93;:::i;:::-;22294:2;22289:3;22285:12;22278:19;;21937:366;;;:::o;22309:419::-;22475:4;22513:2;22502:9;22498:18;22490:26;;22562:9;22556:4;22552:20;22548:1;22537:9;22533:17;22526:47;22590:131;22716:4;22590:131;:::i;:::-;22582:139;;22309:419;;;:::o;22734:222::-;22874:34;22870:1;22862:6;22858:14;22851:58;22943:5;22938:2;22930:6;22926:15;22919:30;22734:222;:::o;22962:366::-;23104:3;23125:67;23189:2;23184:3;23125:67;:::i;:::-;23118:74;;23201:93;23290:3;23201:93;:::i;:::-;23319:2;23314:3;23310:12;23303:19;;22962:366;;;:::o;23334:419::-;23500:4;23538:2;23527:9;23523:18;23515:26;;23587:9;23581:4;23577:20;23573:1;23562:9;23558:17;23551:47;23615:131;23741:4;23615:131;:::i;:::-;23607:139;;23334:419;;;:::o;23759:228::-;23899:34;23895:1;23887:6;23883:14;23876:58;23968:11;23963:2;23955:6;23951:15;23944:36;23759:228;:::o;23993:366::-;24135:3;24156:67;24220:2;24215:3;24156:67;:::i;:::-;24149:74;;24232:93;24321:3;24232:93;:::i;:::-;24350:2;24345:3;24341:12;24334:19;;23993:366;;;:::o;24365:419::-;24531:4;24569:2;24558:9;24554:18;24546:26;;24618:9;24612:4;24608:20;24604:1;24593:9;24589:17;24582:47;24646:131;24772:4;24646:131;:::i;:::-;24638:139;;24365:419;;;:::o;24790:182::-;24930:34;24926:1;24918:6;24914:14;24907:58;24790:182;:::o;24978:366::-;25120:3;25141:67;25205:2;25200:3;25141:67;:::i;:::-;25134:74;;25217:93;25306:3;25217:93;:::i;:::-;25335:2;25330:3;25326:12;25319:19;;24978:366;;;:::o;25350:419::-;25516:4;25554:2;25543:9;25539:18;25531:26;;25603:9;25597:4;25593:20;25589:1;25578:9;25574:17;25567:47;25631:131;25757:4;25631:131;:::i;:::-;25623:139;;25350:419;;;:::o;25775:175::-;25915:27;25911:1;25903:6;25899:14;25892:51;25775:175;:::o;25956:366::-;26098:3;26119:67;26183:2;26178:3;26119:67;:::i;:::-;26112:74;;26195:93;26284:3;26195:93;:::i;:::-;26313:2;26308:3;26304:12;26297:19;;25956:366;;;:::o;26328:419::-;26494:4;26532:2;26521:9;26517:18;26509:26;;26581:9;26575:4;26571:20;26567:1;26556:9;26552:17;26545:47;26609:131;26735:4;26609:131;:::i;:::-;26601:139;;26328:419;;;:::o;26753:191::-;26793:3;26812:20;26830:1;26812:20;:::i;:::-;26807:25;;26846:20;26864:1;26846:20;:::i;:::-;26841:25;;26889:1;26886;26882:9;26875:16;;26910:3;26907:1;26904:10;26901:36;;;26917:18;;:::i;:::-;26901:36;26753:191;;;;:::o;26950:176::-;27090:28;27086:1;27078:6;27074:14;27067:52;26950:176;:::o;27132:366::-;27274:3;27295:67;27359:2;27354:3;27295:67;:::i;:::-;27288:74;;27371:93;27460:3;27371:93;:::i;:::-;27489:2;27484:3;27480:12;27473:19;;27132:366;;;:::o;27504:419::-;27670:4;27708:2;27697:9;27693:18;27685:26;;27757:9;27751:4;27747:20;27743:1;27732:9;27728:17;27721:47;27785:131;27911:4;27785:131;:::i;:::-;27777:139;;27504:419;;;:::o;27929:233::-;27968:3;27991:24;28009:5;27991:24;:::i;:::-;27982:33;;28037:66;28030:5;28027:77;28024:103;;28107:18;;:::i;:::-;28024:103;28154:1;28147:5;28143:13;28136:20;;27929:233;;;:::o;28168:173::-;28308:25;28304:1;28296:6;28292:14;28285:49;28168:173;:::o;28347:366::-;28489:3;28510:67;28574:2;28569:3;28510:67;:::i;:::-;28503:74;;28586:93;28675:3;28586:93;:::i;:::-;28704:2;28699:3;28695:12;28688:19;;28347:366;;;:::o;28719:419::-;28885:4;28923:2;28912:9;28908:18;28900:26;;28972:9;28966:4;28962:20;28958:1;28947:9;28943:17;28936:47;29000:131;29126:4;29000:131;:::i;:::-;28992:139;;28719:419;;;:::o;29144:194::-;29184:4;29204:20;29222:1;29204:20;:::i;:::-;29199:25;;29238:20;29256:1;29238:20;:::i;:::-;29233:25;;29282:1;29279;29275:9;29267:17;;29306:1;29300:4;29297:11;29294:37;;;29311:18;;:::i;:::-;29294:37;29144:194;;;;:::o;29344:180::-;29392:77;29389:1;29382:88;29489:4;29486:1;29479:15;29513:4;29510:1;29503:15;29530:185;29570:1;29587:20;29605:1;29587:20;:::i;:::-;29582:25;;29621:20;29639:1;29621:20;:::i;:::-;29616:25;;29660:1;29650:35;;29665:18;;:::i;:::-;29650:35;29707:1;29704;29700:9;29695:14;;29530:185;;;;:::o;29721:220::-;29861:34;29857:1;29849:6;29845:14;29838:58;29930:3;29925:2;29917:6;29913:15;29906:28;29721:220;:::o;29947:366::-;30089:3;30110:67;30174:2;30169:3;30110:67;:::i;:::-;30103:74;;30186:93;30275:3;30186:93;:::i;:::-;30304:2;30299:3;30295:12;30288:19;;29947:366;;;:::o;30319:419::-;30485:4;30523:2;30512:9;30508:18;30500:26;;30572:9;30566:4;30562:20;30558:1;30547:9;30543:17;30536:47;30600:131;30726:4;30600:131;:::i;:::-;30592:139;;30319:419;;;:::o;30744:180::-;30792:77;30789:1;30782:88;30889:4;30886:1;30879:15;30913:4;30910:1;30903:15;30930:180;30978:77;30975:1;30968:88;31075:4;31072:1;31065:15;31099:4;31096:1;31089:15;31116:114;31183:6;31217:5;31211:12;31201:22;;31116:114;;;:::o;31236:184::-;31335:11;31369:6;31364:3;31357:19;31409:4;31404:3;31400:14;31385:29;;31236:184;;;;:::o;31426:132::-;31493:4;31516:3;31508:11;;31546:4;31541:3;31537:14;31529:22;;31426:132;;;:::o;31564:108::-;31641:24;31659:5;31641:24;:::i;:::-;31636:3;31629:37;31564:108;;:::o;31678:179::-;31747:10;31768:46;31810:3;31802:6;31768:46;:::i;:::-;31846:4;31841:3;31837:14;31823:28;;31678:179;;;;:::o;31863:113::-;31933:4;31965;31960:3;31956:14;31948:22;;31863:113;;;:::o;32012:732::-;32131:3;32160:54;32208:5;32160:54;:::i;:::-;32230:86;32309:6;32304:3;32230:86;:::i;:::-;32223:93;;32340:56;32390:5;32340:56;:::i;:::-;32419:7;32450:1;32435:284;32460:6;32457:1;32454:13;32435:284;;;32536:6;32530:13;32563:63;32622:3;32607:13;32563:63;:::i;:::-;32556:70;;32649:60;32702:6;32649:60;:::i;:::-;32639:70;;32495:224;32482:1;32479;32475:9;32470:14;;32435:284;;;32439:14;32735:3;32728:10;;32136:608;;;32012:732;;;;:::o;32750:831::-;33013:4;33051:3;33040:9;33036:19;33028:27;;33065:71;33133:1;33122:9;33118:17;33109:6;33065:71;:::i;:::-;33146:80;33222:2;33211:9;33207:18;33198:6;33146:80;:::i;:::-;33273:9;33267:4;33263:20;33258:2;33247:9;33243:18;33236:48;33301:108;33404:4;33395:6;33301:108;:::i;:::-;33293:116;;33419:72;33487:2;33476:9;33472:18;33463:6;33419:72;:::i;:::-;33501:73;33569:3;33558:9;33554:19;33545:6;33501:73;:::i;:::-;32750:831;;;;;;;;:::o;33587:177::-;33727:29;33723:1;33715:6;33711:14;33704:53;33587:177;:::o;33770:366::-;33912:3;33933:67;33997:2;33992:3;33933:67;:::i;:::-;33926:74;;34009:93;34098:3;34009:93;:::i;:::-;34127:2;34122:3;34118:12;34111:19;;33770:366;;;:::o;34142:419::-;34308:4;34346:2;34335:9;34331:18;34323:26;;34395:9;34389:4;34385:20;34381:1;34370:9;34366:17;34359:47;34423:131;34549:4;34423:131;:::i;:::-;34415:139;;34142:419;;;:::o
Swarm Source
ipfs://36f2abc1f80aba3df601cf2f0771190bd28c616d21e930eb89103c37e5a37795
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.
Add Token to MetaMask (Web3)