ERC-20
Source Code
Overview
Max Total Supply
100,000,000 DCTX
Holders
112
Market
Onchain Market Cap
-
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Balance
20,845.537293259 DCTXValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
| # | Exchange | Pair | Price | 24H Volume | % Volume |
|---|
Contract Name:
DCTX
Compiler Version
v0.8.23+commit.f704f362
Contract Source Code (Solidity Multiple files format)
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.23;
import "./TokenBase.sol";
import "./DCTXDMCP.sol";
/// Website : https://dctx.ai
/// X : https://x.com/DecontextAI
/// Telegram : https://t.me/decontext
/// @title DCTX Token Contract
contract DCTX is TokenBase {
/// @dev Reference to the external DMCP module contract
DCTXDMCP private _dmcp;
/// @notice Initializes the token and governance modules
/// @dev Requires addresses for two tax wallets and the DMCP contract
/// @param taxWallet1_ Address of the first tax receiver wallet (70%)
/// @param taxWallet2_ Address of the second tax receiver wallet (30%)
/// @param dmcpAddress Address of the deployed DMCP contract
constructor(
address payable taxWallet1_,
address payable taxWallet2_,
address dmcpAddress
) TokenBase(taxWallet1_, taxWallet2_) {
_dmcp = DCTXDMCP(dmcpAddress);
}
/// @notice Cast a vote on a specific proposal
/// @dev Forwards the vote to the DMCP contract
/// @param proposalId The ID of the proposal to vote on
/// @param support True to vote in support, false to vote against
function voteOnProposal(uint256 proposalId, bool support) external {
_dmcp.voteOnProposal(proposalId, support);
}
/// @notice Retrieve a proposal’s voting results
/// @param proposalId The ID of the proposal
/// @return id Proposal ID
/// @return supportVotes Number of support votes
/// @return rejectVotes Number of reject votes
/// @return hasVoted Whether the caller has already voted
function getProposal(uint256 proposalId) external view returns (
uint256 id,
uint256 supportVotes,
uint256 rejectVotes,
bool hasVoted
) {
return _dmcp.getProposal(proposalId);
}
/// @notice Register the caller to a DMCP node
/// @param nodeId A string representing the node ID
function registerToDMCPNode(string calldata nodeId) external {
_dmcp.registerToDMCPNode(nodeId);
}
/// @notice Retrieve the node ID a user has registered to
/// @param user Address of the user to query
/// @return The registered node ID as a string
function getDMCPNode(address user) external view returns (string memory) {
return _dmcp.getDMCPNode(user);
}
/// @notice Removes limits on max transaction and max wallet size
/// @dev Can only be called by the owner. Emits MaxTxAmountUpdated.
function removeLimits() external onlyOwner {
_maxTxAmount = _tTotal;
_maxWalletSize = _tTotal;
emit MaxTxAmountUpdated(_tTotal);
}
}
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.23;
/// @notice This contract allows users to vote on proposals.
contract DCTXDMCP {
/// @dev Struct representing a governance proposal.
struct Proposal {
uint256 id; // Unique proposal ID
uint256 supportVotes; // Number of support votes
uint256 rejectVotes; // Number of reject votes
mapping(address => bool) hasVoted; // Tracks if a user has already voted
}
/// @dev Mapping from proposal ID to its Proposal data.
mapping(uint256 => Proposal) private _proposals;
/// @dev Mapping from user address to their registered DMCP node ID.
mapping(address => string) private _dmcpNodes;
/// @notice Cast a vote on a proposal.
/// @dev A user can only vote once per proposal. Votes are recorded on-chain.
/// @param proposalId The ID of the proposal to vote on.
/// @param support If true, vote counts as support. If false, counts as rejection.
function voteOnProposal(uint256 proposalId, bool support) external {
Proposal storage p = _proposals[proposalId];
require(!p.hasVoted[msg.sender], "Already voted");
p.id = proposalId;
p.hasVoted[msg.sender] = true;
if (support) {
p.supportVotes++;
} else {
p.rejectVotes++;
}
}
/// @notice Returns the voting result for a proposal.
/// @param proposalId The ID of the proposal.
/// @return id The proposal ID.
/// @return supportVotes Number of support votes.
/// @return rejectVotes Number of reject votes.
/// @return hasVoted Whether the caller has voted on this proposal.
function getProposal(uint256 proposalId) external view returns (
uint256 id,
uint256 supportVotes,
uint256 rejectVotes,
bool hasVoted
) {
Proposal storage p = _proposals[proposalId];
return (
p.id,
p.supportVotes,
p.rejectVotes,
p.hasVoted[msg.sender]
);
}
/// @notice Register your address to a DMCP node.
/// @dev A user can only register once. Duplicate registration is blocked.
/// @param nodeId The string ID of the DMCP node to register to.
function registerToDMCPNode(string calldata nodeId) external {
require(bytes(_dmcpNodes[msg.sender]).length == 0, "Already registered");
_dmcpNodes[msg.sender] = nodeId;
}
/// @notice Get the node ID that a user is registered to.
/// @param user The address of the user.
/// @return The string node ID the user is registered to.
function getDMCPNode(address user) external view returns (string memory) {
return _dmcpNodes[user];
}
}
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
/// @title ERC20 Interface
interface IERC20 {
/// @return Total token supply
function totalSupply() external view returns (uint256);
/// @param account Address to check
/// @return Token balance
function balanceOf(address account) external view returns (uint256);
/// @param recipient Receiver address
/// @param amount Tokens to send
function transfer(address recipient, uint256 amount) external returns (bool);
/// @param owner Token owner
/// @param spender Approved spender
/// @return Remaining allowance
function allowance(address owner, address spender) external view returns (uint256);
/// @param spender Address to approve
/// @param amount Amount to approve
function approve(address spender, uint256 amount) external returns (bool);
/// @param sender From address
/// @param recipient To address
/// @param amount Amount to transfer
function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
/// @dev Emitted on transfer
event Transfer(address indexed from, address indexed to, uint256 value);
/// @dev Emitted on approval
event Approval(address indexed owner, address indexed spender, uint256 value);
}
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
/// @title Uniswap V2 Factory Interface
/// @dev For creating token pairs on Uniswap
interface IUniswapV2Factory {
/// @notice Creates a new token pair
/// @param tokenA First token address
/// @param tokenB Second token address
/// @return pair The address of the created pair
function createPair(address tokenA, address tokenB) external returns (address pair);
}
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
/// @title Uniswap V2 Router Interface
/// @dev Supports token swaps and liquidity operations
interface IUniswapV2Router02 {
/// @notice Swaps tokens for ETH (supports fee-on-transfer tokens)
function swapExactTokensForETHSupportingFeeOnTransferTokens(
uint amountIn,
uint amountOutMin,
address[] calldata path,
address to,
uint deadline
) external;
/// @return Address of the factory contract
function factory() external pure returns (address);
/// @return Address of the WETH token
function WETH() external pure returns (address);
/// @notice Adds token-ETH liquidity
function addLiquidityETH(
address token,
uint amountTokenDesired,
uint amountTokenMin,
uint amountETHMin,
address to,
uint deadline
) external payable returns (
uint amountToken,
uint amountETH,
uint liquidity
);
}
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
/// @dev Provides basic access control with an owner account
abstract contract Context {
function _msgSender() internal view virtual returns (address) {
return msg.sender;
}
}
/// @title Ownable Contract
/// @dev Grants exclusive access to certain functions using `onlyOwner` modifier
contract Ownable is Context {
address private _owner;
/// @dev Emitted when ownership is transferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
/// @dev Sets deployer as the initial owner
constructor () {
address msgSender = _msgSender();
_owner = msgSender;
emit OwnershipTransferred(address(0), msgSender);
}
/// @notice Returns the current owner
function owner() public view returns (address) {
return _owner;
}
/// @dev Restricts function to current owner
modifier onlyOwner() {
require(_owner == _msgSender(), "Ownable: caller is not the owner");
_;
}
/// @notice Renounces ownership, leaving contract without an owner
function renounceOwnership() public virtual onlyOwner {
emit OwnershipTransferred(_owner, address(0));
_owner = address(0);
}
}
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
/// @title SafeMath Library
/// @dev Math operations with overflow/underflow checks
library SafeMath {
/// @notice Adds two numbers
/// @dev Reverts on overflow
function add(uint256 a, uint256 b) internal pure returns (uint256) {
uint256 c = a + b;
require(c >= a, "SafeMath: addition overflow");
return c;
}
/// @notice Subtracts two numbers
/// @dev Reverts if subtrahend is greater than minuend
function sub(uint256 a, uint256 b) internal pure returns (uint256) {
require(b <= a, "SafeMath: subtraction overflow");
return a - b;
}
/// @notice Multiplies two numbers
/// @dev Reverts on overflow
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;
}
/// @notice Divides two numbers
/// @dev Reverts if divisor is zero
function div(uint256 a, uint256 b) internal pure returns (uint256) {
require(b > 0, "SafeMath: division by zero");
return a / b;
}
}
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.23;
import "./IERC20.sol";
import "./Ownable.sol";
import "./IUniswapV2Router02.sol";
import "./IUniswapV2Factory.sol";
import "./SafeMath.sol";
abstract contract TokenBase is IERC20, Ownable {
using SafeMath for uint256;
mapping(address => uint256) internal _balances;
mapping(address => mapping(address => uint256)) internal _allowances;
mapping(address => bool) internal _isExcludedFromFee;
mapping(address => bool) internal bots;
address payable internal _taxWallet1;
address payable internal _taxWallet2;
uint256 internal _initialBuyTax = 20;
uint256 internal _initialSellTax = 20;
uint256 internal _finalBuyTax = 5;
uint256 internal _finalSellTax = 5;
uint256 internal _reduceBuyTaxAt = 20;
uint256 internal _reduceSellTaxAt = 20;
uint256 internal _preventSwapBefore = 20;
uint256 internal _buyCount = 0;
uint8 internal constant _decimals = 9;
uint256 internal constant _tTotal = 100000000 * 10**_decimals;
string internal constant _name = "Decontext";
string internal constant _symbol = "DCTX";
uint256 public _maxTxAmount = 1000000 * 10**_decimals;
uint256 public _maxWalletSize = 1000000 * 10**_decimals;
event MaxTxAmountUpdated(uint256 _maxTxAmount);
uint256 public _taxSwapThreshold = 150000 * 10**_decimals;
uint256 public _maxTaxSwap = 1000000 * 10**_decimals;
IUniswapV2Router02 internal uniswapV2Router;
address internal uniswapV2Pair;
bool internal tradingOpen;
bool internal inSwap = false;
bool internal swapEnabled = false;
uint256 internal sellCount = 0;
uint256 internal lastSellBlock = 0;
modifier lockTheSwap {
inSwap = true;
_;
inSwap = false;
}
constructor(address payable taxWallet1_, address payable taxWallet2_) {
_taxWallet1 = taxWallet1_;
_taxWallet2 = taxWallet2_;
_balances[msg.sender] = _tTotal;
_isExcludedFromFee[msg.sender] = true;
_isExcludedFromFee[address(this)] = true;
_isExcludedFromFee[_taxWallet1] = true;
_isExcludedFromFee[_taxWallet2] = true;
emit Transfer(address(0), msg.sender, _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(msg.sender, 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(msg.sender, spender, amount);
return true;
}
function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
_transfer(sender, recipient, amount);
_approve(sender, msg.sender, SafeMath.sub(_allowances[sender][msg.sender], amount));
return true;
}
function _approve(address owner, address spender, uint256 amount) internal {
require(owner != address(0), "ERC20: approve from zero address");
require(spender != address(0), "ERC20: approve to zero address");
_allowances[owner][spender] = amount;
emit Approval(owner, spender, amount);
}
function _transfer(address from, address to, uint256 amount) internal {
require(from != address(0) && to != address(0) && amount > 0, "Invalid transfer");
uint256 taxAmount = 0;
if (from != owner() && to != owner()) {
require(!bots[from] && !bots[to]);
taxAmount = amount.mul((_buyCount > _reduceBuyTaxAt ? _finalBuyTax : _initialBuyTax)).div(100);
if (from == uniswapV2Pair && to != address(uniswapV2Router) && !_isExcludedFromFee[to]) {
require(amount <= _maxTxAmount, "Exceeds maxTxAmount");
require(balanceOf(to) + amount <= _maxWalletSize, "Exceeds maxWalletSize");
_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, "Max sells per block exceeded");
swapTokensForEth(min(amount, min(contractTokenBalance, _maxTaxSwap)));
uint256 ethBal = address(this).balance;
if (ethBal > 0) sendETHToFee(ethBal);
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 openTrade() external onlyOwner {
require(!tradingOpen, "Already open");
uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
_approve(address(this), address(uniswapV2Router), _tTotal);
uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH());
uniswapV2Router.addLiquidityETH{value: address(this).balance}(
address(this),
balanceOf(address(this)),
0, 0, owner(), block.timestamp
);
IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);
swapEnabled = true;
tradingOpen = true;
}
function manualSwap() external {
require(msg.sender == _taxWallet1);
uint256 tokenBalance = balanceOf(address(this));
if (tokenBalance > 0) swapTokensForEth(tokenBalance);
uint256 ethBalance = address(this).balance;
if (ethBalance > 0) sendETHToFee(ethBalance);
}
function sendETHToFee(uint256 amount) internal {
uint256 part1 = amount.mul(70).div(100);
uint256 part2 = amount.sub(part1);
_taxWallet1.transfer(part1);
_taxWallet2.transfer(part2);
}
function swapTokensForEth(uint256 tokenAmount) internal 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 min(uint256 a, uint256 b) internal pure returns (uint256) {
return a < b ? a : b;
}
receive() external payable {}
}
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address payable","name":"taxWallet1_","type":"address"},{"internalType":"address payable","name":"taxWallet2_","type":"address"},{"internalType":"address","name":"dmcpAddress","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_maxTaxSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxSwapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"getDMCPNode","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"getProposal","outputs":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"supportVotes","type":"uint256"},{"internalType":"uint256","name":"rejectVotes","type":"uint256"},{"internalType":"bool","name":"hasVoted","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrade","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"nodeId","type":"string"}],"name":"registerToDMCPNode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","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"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"bool","name":"support","type":"bool"}],"name":"voteOnProposal","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]Contract Creation Code
60806040526014600755601460085560056009556005600a556014600b556014600c556014600d555f600e556009600a6200003b9190620006b7565b620f42406200004b919062000707565b600f556009600a6200005e9190620006b7565b620f42406200006e919062000707565b6010556009600a620000819190620006b7565b620249f062000091919062000707565b6011556009600a620000a49190620006b7565b620f4240620000b4919062000707565b6012555f601460156101000a81548160ff0219169083151502179055505f601460166101000a81548160ff0219169083151502179055505f6015555f601655348015620000ff575f80fd5b5060405162003c2038038062003c208339818101604052810190620001259190620007f8565b82825f620001386200051e60201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506009600a620002649190620006b7565b6305f5e10062000275919062000707565b60015f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600160035f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055503373ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6009600a620004ab9190620006b7565b6305f5e100620004bc919062000707565b604051620004cb919062000862565b60405180910390a350508060175f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050506200087d565b5f33905090565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115620005af5780860481111562000587576200058662000525565b5b6001851615620005975780820291505b8081029050620005a78562000552565b945062000567565b94509492505050565b5f82620005c957600190506200069b565b81620005d8575f90506200069b565b8160018114620005f15760028114620005fc5762000632565b60019150506200069b565b60ff84111562000611576200061062000525565b5b8360020a9150848211156200062b576200062a62000525565b5b506200069b565b5060208310610133831016604e8410600b84101617156200066c5782820a90508381111562000666576200066562000525565b5b6200069b565b6200067b84848460016200055e565b9250905081840481111562000695576200069462000525565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f620006c382620006a2565b9150620006d083620006ab565b9250620006ff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620005b8565b905092915050565b5f6200071382620006a2565b91506200072083620006a2565b92508282026200073081620006a2565b915082820484148315176200074a576200074962000525565b5b5092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f620007808262000755565b9050919050565b620007928162000774565b81146200079d575f80fd5b50565b5f81519050620007b08162000787565b92915050565b5f620007c28262000755565b9050919050565b620007d481620007b6565b8114620007df575f80fd5b50565b5f81519050620007f281620007c9565b92915050565b5f805f6060848603121562000812576200081162000751565b5b5f6200082186828701620007a0565b93505060206200083486828701620007a0565b92505060406200084786828701620007e2565b9150509250925092565b6200085c81620006a2565b82525050565b5f602082019050620008775f83018462000851565b92915050565b613395806200088b5f395ff3fe608060405260043610610138575f3560e01c80637d1db4a5116100aa578063a9059cbb1161006e578063a9059cbb146103ed578063bf474bed14610429578063c7f758a814610453578063dd62ed3e14610492578063f68b4c35146104ce578063fb201b1d146104f65761013f565b80637d1db4a5146103095780638da5cb5b146103335780638f9a55c01461035d57806395d89b41146103875780639d0fe471146103b15761013f565b806323b872dd116100fc57806323b872dd14610225578063313ce5671461026157806351bc3c851461028b57806370a08231146102a1578063715018a6146102dd578063751039fc146102f35761013f565b806306fdde0314610143578063095ea7b31461016d5780630faee56f146101a95780631614665c146101d357806318160ddd146101fb5761013f565b3661013f57005b5f80fd5b34801561014e575f80fd5b5061015761050c565b6040516101649190612225565b60405180910390f35b348015610178575f80fd5b50610193600480360381019061018e91906122e3565b610549565b6040516101a0919061233b565b60405180910390f35b3480156101b4575f80fd5b506101bd61055f565b6040516101ca9190612363565b60405180910390f35b3480156101de575f80fd5b506101f960048036038101906101f491906123a6565b610565565b005b348015610206575f80fd5b5061020f6105f2565b60405161021c9190612363565b60405180910390f35b348015610230575f80fd5b5061024b600480360381019061024691906123e4565b610615565b604051610258919061233b565b60405180910390f35b34801561026c575f80fd5b506102756106b8565b604051610282919061244f565b60405180910390f35b348015610296575f80fd5b5061029f6106c0565b005b3480156102ac575f80fd5b506102c760048036038101906102c29190612468565b610750565b6040516102d49190612363565b60405180910390f35b3480156102e8575f80fd5b506102f1610796565b005b3480156102fe575f80fd5b506103076108e4565b005b348015610314575f80fd5b5061031d610a13565b60405161032a9190612363565b60405180910390f35b34801561033e575f80fd5b50610347610a19565b60405161035491906124a2565b60405180910390f35b348015610368575f80fd5b50610371610a40565b60405161037e9190612363565b60405180910390f35b348015610392575f80fd5b5061039b610a46565b6040516103a89190612225565b60405180910390f35b3480156103bc575f80fd5b506103d760048036038101906103d29190612468565b610a83565b6040516103e49190612225565b60405180910390f35b3480156103f8575f80fd5b50610413600480360381019061040e91906122e3565b610b28565b604051610420919061233b565b60405180910390f35b348015610434575f80fd5b5061043d610b3e565b60405161044a9190612363565b60405180910390f35b34801561045e575f80fd5b50610479600480360381019061047491906124bb565b610b44565b60405161048994939291906124e6565b60405180910390f35b34801561049d575f80fd5b506104b860048036038101906104b39190612529565b610bf0565b6040516104c59190612363565b60405180910390f35b3480156104d9575f80fd5b506104f460048036038101906104ef91906125c8565b610c72565b005b348015610501575f80fd5b5061050a610cff565b005b60606040518060400160405280600981526020017f4465636f6e746578740000000000000000000000000000000000000000000000815250905090565b5f61055533848461121e565b6001905092915050565b60125481565b60175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631614665c83836040518363ffffffff1660e01b81526004016105c1929190612613565b5f604051808303815f87803b1580156105d8575f80fd5b505af11580156105ea573d5f803e3d5ffd5b505050505050565b5f6009600a6106019190612796565b6305f5e10061061091906127e0565b905090565b5f6106218484846113e1565b6106ad84336106a860025f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205486611c7f565b61121e565b600190509392505050565b5f6009905090565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610718575f80fd5b5f61072230610750565b90505f8111156107365761073581611cd7565b5b5f4790505f81111561074c5761074b81611f42565b5b5050565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b61079e612051565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461082a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108219061286b565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6108ec612051565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610978576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161096f9061286b565b60405180910390fd5b6009600a6109869190612796565b6305f5e10061099591906127e0565b600f819055506009600a6109a99190612796565b6305f5e1006109b891906127e0565b6010819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6009600a6109ed9190612796565b6305f5e1006109fc91906127e0565b604051610a099190612363565b60405180910390a1565b600f5481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60105481565b60606040518060400160405280600481526020017f4443545800000000000000000000000000000000000000000000000000000000815250905090565b606060175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639d0fe471836040518263ffffffff1660e01b8152600401610adf91906124a2565b5f60405180830381865afa158015610af9573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f82011682018060405250810190610b2191906129a3565b9050919050565b5f610b343384846113e1565b6001905092915050565b60115481565b5f805f8060175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c7f758a8866040518263ffffffff1660e01b8152600401610ba29190612363565b608060405180830381865afa158015610bbd573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610be19190612a12565b93509350935093509193509193565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f68b4c3583836040518363ffffffff1660e01b8152600401610cce929190612ab0565b5f604051808303815f87803b158015610ce5575f80fd5b505af1158015610cf7573d5f803e3d5ffd5b505050505050565b610d07612051565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8a9061286b565b60405180910390fd5b60148054906101000a900460ff1615610de1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dd890612b1c565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d60135f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610e7d3060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166009600a610e699190612796565b6305f5e100610e7891906127e0565b61121e565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ee7573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f0b9190612b4e565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f91573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fb59190612b4e565b6040518363ffffffff1660e01b8152600401610fd2929190612b79565b6020604051808303815f875af1158015610fee573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110129190612b4e565b60145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473061109930610750565b5f806110a3610a19565b426040518863ffffffff1660e01b81526004016110c596959493929190612be2565b60606040518083038185885af11580156110e1573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906111069190612c41565b50505060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016111a6929190612c91565b6020604051808303815f875af11580156111c2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111e69190612cb8565b506001601460166101000a81548160ff02191690831515021790555060016014806101000a81548160ff021916908315150217905550565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361128c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128390612d2d565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036112fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112f190612d95565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516113d49190612363565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561144957505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561145457505f81115b611493576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161148a90612dfd565b60405180910390fd5b5f61149c610a19565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561150a57506114da610a19565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156119cf5760045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161580156115ad575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b6115b5575f80fd5b6115f160646115e3600b54600e54116115d0576007546115d4565b6009545b8561205890919063ffffffff16565b6120cf90919063ffffffff16565b905060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614801561169c575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156116ef575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156117a957600f54821115611739576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161173090612e65565b60405180910390fd5b6010548261174685610750565b6117509190612e83565b1115611791576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178890612f00565b60405180910390fd5b600e5f8154809291906117a390612f1e565b91905055505b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614801561183157503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611875576118726064611864600c54600e541161185157600854611855565b600a545b8561205890919063ffffffff16565b6120cf90919063ffffffff16565b90505b5f61187f30610750565b9050601460159054906101000a900460ff161580156118ea575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b80156119025750601460169054906101000a900460ff165b801561190f575060115481115b801561191e5750600d54600e54115b156119cd57601654431115611935575f6015819055505b60036015541061197a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161197190612faf565b60405180910390fd5b6119976119928461198d84601254612126565b612126565b611cd7565b5f4790505f8111156119ad576119ac81611f42565b5b60155f8154809291906119bf90612f1e565b919050555043601681905550505b505b5f811115611ace57611a278160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461213e90919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611ac59190612363565b60405180910390a35b611b1e8260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611c7f90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550611bc1611b758284611c7f90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461213e90919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef611c648486611c7f90919063ffffffff16565b604051611c719190612363565b60405180910390a350505050565b5f82821115611cc3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cba90613017565b60405180910390fd5b8183611ccf9190613035565b905092915050565b6001601460156101000a81548160ff0219169083151502179055505f600267ffffffffffffffff811115611d0e57611d0d61288d565b5b604051908082528060200260200182016040528015611d3c5781602001602082028036833780820191505090505b50905030815f81518110611d5357611d52613068565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611df7573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e1b9190612b4e565b81600181518110611e2f57611e2e613068565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611e953060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461121e565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401611ef795949392919061314c565b5f604051808303815f87803b158015611f0e575f80fd5b505af1158015611f20573d5f803e3d5ffd5b50505050505f601460156101000a81548160ff02191690831515021790555050565b5f611f6a6064611f5c60468561205890919063ffffffff16565b6120cf90919063ffffffff16565b90505f611f808284611c7f90919063ffffffff16565b905060055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8390811502906040515f60405180830381858888f19350505050158015611fe6573d5f803e3d5ffd5b5060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f1935050505015801561204b573d5f803e3d5ffd5b50505050565b5f33905090565b5f808303612068575f90506120c9565b5f828461207591906127e0565b905082848261208491906131d1565b146120c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120bb90613271565b60405180910390fd5b809150505b92915050565b5f808211612112576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612109906132d9565b60405180910390fd5b818361211e91906131d1565b905092915050565b5f8183106121345781612136565b825b905092915050565b5f80828461214c9190612e83565b905083811015612191576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161218890613341565b60405180910390fd5b8091505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156121d25780820151818401526020810190506121b7565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6121f78261219b565b61220181856121a5565b93506122118185602086016121b5565b61221a816121dd565b840191505092915050565b5f6020820190508181035f83015261223d81846121ed565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61227f82612256565b9050919050565b61228f81612275565b8114612299575f80fd5b50565b5f813590506122aa81612286565b92915050565b5f819050919050565b6122c2816122b0565b81146122cc575f80fd5b50565b5f813590506122dd816122b9565b92915050565b5f80604083850312156122f9576122f861224e565b5b5f6123068582860161229c565b9250506020612317858286016122cf565b9150509250929050565b5f8115159050919050565b61233581612321565b82525050565b5f60208201905061234e5f83018461232c565b92915050565b61235d816122b0565b82525050565b5f6020820190506123765f830184612354565b92915050565b61238581612321565b811461238f575f80fd5b50565b5f813590506123a08161237c565b92915050565b5f80604083850312156123bc576123bb61224e565b5b5f6123c9858286016122cf565b92505060206123da85828601612392565b9150509250929050565b5f805f606084860312156123fb576123fa61224e565b5b5f6124088682870161229c565b93505060206124198682870161229c565b925050604061242a868287016122cf565b9150509250925092565b5f60ff82169050919050565b61244981612434565b82525050565b5f6020820190506124625f830184612440565b92915050565b5f6020828403121561247d5761247c61224e565b5b5f61248a8482850161229c565b91505092915050565b61249c81612275565b82525050565b5f6020820190506124b55f830184612493565b92915050565b5f602082840312156124d0576124cf61224e565b5b5f6124dd848285016122cf565b91505092915050565b5f6080820190506124f95f830187612354565b6125066020830186612354565b6125136040830185612354565b612520606083018461232c565b95945050505050565b5f806040838503121561253f5761253e61224e565b5b5f61254c8582860161229c565b925050602061255d8582860161229c565b9150509250929050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f84011261258857612587612567565b5b8235905067ffffffffffffffff8111156125a5576125a461256b565b5b6020830191508360018202830111156125c1576125c061256f565b5b9250929050565b5f80602083850312156125de576125dd61224e565b5b5f83013567ffffffffffffffff8111156125fb576125fa612252565b5b61260785828601612573565b92509250509250929050565b5f6040820190506126265f830185612354565b612633602083018461232c565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156126bc578086048111156126985761269761263a565b5b60018516156126a75780820291505b80810290506126b585612667565b945061267c565b94509492505050565b5f826126d4576001905061278f565b816126e1575f905061278f565b81600181146126f7576002811461270157612730565b600191505061278f565b60ff8411156127135761271261263a565b5b8360020a91508482111561272a5761272961263a565b5b5061278f565b5060208310610133831016604e8410600b84101617156127655782820a9050838111156127605761275f61263a565b5b61278f565b6127728484846001612673565b925090508184048111156127895761278861263a565b5b81810290505b9392505050565b5f6127a0826122b0565b91506127ab83612434565b92506127d87fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846126c5565b905092915050565b5f6127ea826122b0565b91506127f5836122b0565b9250828202612803816122b0565b9150828204841483151761281a5761281961263a565b5b5092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6128556020836121a5565b915061286082612821565b602082019050919050565b5f6020820190508181035f83015261288281612849565b9050919050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6128c3826121dd565b810181811067ffffffffffffffff821117156128e2576128e161288d565b5b80604052505050565b5f6128f4612245565b905061290082826128ba565b919050565b5f67ffffffffffffffff82111561291f5761291e61288d565b5b612928826121dd565b9050602081019050919050565b5f61294761294284612905565b6128eb565b90508281526020810184848401111561296357612962612889565b5b61296e8482856121b5565b509392505050565b5f82601f83011261298a57612989612567565b5b815161299a848260208601612935565b91505092915050565b5f602082840312156129b8576129b761224e565b5b5f82015167ffffffffffffffff8111156129d5576129d4612252565b5b6129e184828501612976565b91505092915050565b5f815190506129f8816122b9565b92915050565b5f81519050612a0c8161237c565b92915050565b5f805f8060808587031215612a2a57612a2961224e565b5b5f612a37878288016129ea565b9450506020612a48878288016129ea565b9350506040612a59878288016129ea565b9250506060612a6a878288016129fe565b91505092959194509250565b828183375f83830152505050565b5f612a8f83856121a5565b9350612a9c838584612a76565b612aa5836121dd565b840190509392505050565b5f6020820190508181035f830152612ac9818486612a84565b90509392505050565b7f416c7265616479206f70656e00000000000000000000000000000000000000005f82015250565b5f612b06600c836121a5565b9150612b1182612ad2565b602082019050919050565b5f6020820190508181035f830152612b3381612afa565b9050919050565b5f81519050612b4881612286565b92915050565b5f60208284031215612b6357612b6261224e565b5b5f612b7084828501612b3a565b91505092915050565b5f604082019050612b8c5f830185612493565b612b996020830184612493565b9392505050565b5f819050919050565b5f819050919050565b5f612bcc612bc7612bc284612ba0565b612ba9565b6122b0565b9050919050565b612bdc81612bb2565b82525050565b5f60c082019050612bf55f830189612493565b612c026020830188612354565b612c0f6040830187612bd3565b612c1c6060830186612bd3565b612c296080830185612493565b612c3660a0830184612354565b979650505050505050565b5f805f60608486031215612c5857612c5761224e565b5b5f612c65868287016129ea565b9350506020612c76868287016129ea565b9250506040612c87868287016129ea565b9150509250925092565b5f604082019050612ca45f830185612493565b612cb16020830184612354565b9392505050565b5f60208284031215612ccd57612ccc61224e565b5b5f612cda848285016129fe565b91505092915050565b7f45524332303a20617070726f76652066726f6d207a65726f20616464726573735f82015250565b5f612d176020836121a5565b9150612d2282612ce3565b602082019050919050565b5f6020820190508181035f830152612d4481612d0b565b9050919050565b7f45524332303a20617070726f766520746f207a65726f206164647265737300005f82015250565b5f612d7f601e836121a5565b9150612d8a82612d4b565b602082019050919050565b5f6020820190508181035f830152612dac81612d73565b9050919050565b7f496e76616c6964207472616e73666572000000000000000000000000000000005f82015250565b5f612de76010836121a5565b9150612df282612db3565b602082019050919050565b5f6020820190508181035f830152612e1481612ddb565b9050919050565b7f45786365656473206d61785478416d6f756e74000000000000000000000000005f82015250565b5f612e4f6013836121a5565b9150612e5a82612e1b565b602082019050919050565b5f6020820190508181035f830152612e7c81612e43565b9050919050565b5f612e8d826122b0565b9150612e98836122b0565b9250828201905080821115612eb057612eaf61263a565b5b92915050565b7f45786365656473206d617857616c6c657453697a6500000000000000000000005f82015250565b5f612eea6015836121a5565b9150612ef582612eb6565b602082019050919050565b5f6020820190508181035f830152612f1781612ede565b9050919050565b5f612f28826122b0565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612f5a57612f5961263a565b5b600182019050919050565b7f4d61782073656c6c732070657220626c6f636b206578636565646564000000005f82015250565b5f612f99601c836121a5565b9150612fa482612f65565b602082019050919050565b5f6020820190508181035f830152612fc681612f8d565b9050919050565b7f536166654d6174683a207375627472616374696f6e206f766572666c6f7700005f82015250565b5f613001601e836121a5565b915061300c82612fcd565b602082019050919050565b5f6020820190508181035f83015261302e81612ff5565b9050919050565b5f61303f826122b0565b915061304a836122b0565b92508282039050818111156130625761306161263a565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6130c781612275565b82525050565b5f6130d883836130be565b60208301905092915050565b5f602082019050919050565b5f6130fa82613095565b613104818561309f565b935061310f836130af565b805f5b8381101561313f57815161312688826130cd565b9750613131836130e4565b925050600181019050613112565b5085935050505092915050565b5f60a08201905061315f5f830188612354565b61316c6020830187612bd3565b818103604083015261317e81866130f0565b905061318d6060830185612493565b61319a6080830184612354565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6131db826122b0565b91506131e6836122b0565b9250826131f6576131f56131a4565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f61325b6021836121a5565b915061326682613201565b604082019050919050565b5f6020820190508181035f8301526132888161324f565b9050919050565b7f536166654d6174683a206469766973696f6e206279207a65726f0000000000005f82015250565b5f6132c3601a836121a5565b91506132ce8261328f565b602082019050919050565b5f6020820190508181035f8301526132f0816132b7565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f61332b601b836121a5565b9150613336826132f7565b602082019050919050565b5f6020820190508181035f8301526133588161331f565b905091905056fea2646970667358221220288213f334261a8f2b622f0ad6eecb32145ebc092fada461de0d7432d85a483964736f6c63430008170033000000000000000000000000c684871e7f6dbf70909926c566d0fa2e7fa55f1800000000000000000000000058c0cee752682365a1ab299f429cfa5bb5efc86800000000000000000000000016734b4479448e89db7f4932f8cc759cb7cef578
Deployed Bytecode
0x608060405260043610610138575f3560e01c80637d1db4a5116100aa578063a9059cbb1161006e578063a9059cbb146103ed578063bf474bed14610429578063c7f758a814610453578063dd62ed3e14610492578063f68b4c35146104ce578063fb201b1d146104f65761013f565b80637d1db4a5146103095780638da5cb5b146103335780638f9a55c01461035d57806395d89b41146103875780639d0fe471146103b15761013f565b806323b872dd116100fc57806323b872dd14610225578063313ce5671461026157806351bc3c851461028b57806370a08231146102a1578063715018a6146102dd578063751039fc146102f35761013f565b806306fdde0314610143578063095ea7b31461016d5780630faee56f146101a95780631614665c146101d357806318160ddd146101fb5761013f565b3661013f57005b5f80fd5b34801561014e575f80fd5b5061015761050c565b6040516101649190612225565b60405180910390f35b348015610178575f80fd5b50610193600480360381019061018e91906122e3565b610549565b6040516101a0919061233b565b60405180910390f35b3480156101b4575f80fd5b506101bd61055f565b6040516101ca9190612363565b60405180910390f35b3480156101de575f80fd5b506101f960048036038101906101f491906123a6565b610565565b005b348015610206575f80fd5b5061020f6105f2565b60405161021c9190612363565b60405180910390f35b348015610230575f80fd5b5061024b600480360381019061024691906123e4565b610615565b604051610258919061233b565b60405180910390f35b34801561026c575f80fd5b506102756106b8565b604051610282919061244f565b60405180910390f35b348015610296575f80fd5b5061029f6106c0565b005b3480156102ac575f80fd5b506102c760048036038101906102c29190612468565b610750565b6040516102d49190612363565b60405180910390f35b3480156102e8575f80fd5b506102f1610796565b005b3480156102fe575f80fd5b506103076108e4565b005b348015610314575f80fd5b5061031d610a13565b60405161032a9190612363565b60405180910390f35b34801561033e575f80fd5b50610347610a19565b60405161035491906124a2565b60405180910390f35b348015610368575f80fd5b50610371610a40565b60405161037e9190612363565b60405180910390f35b348015610392575f80fd5b5061039b610a46565b6040516103a89190612225565b60405180910390f35b3480156103bc575f80fd5b506103d760048036038101906103d29190612468565b610a83565b6040516103e49190612225565b60405180910390f35b3480156103f8575f80fd5b50610413600480360381019061040e91906122e3565b610b28565b604051610420919061233b565b60405180910390f35b348015610434575f80fd5b5061043d610b3e565b60405161044a9190612363565b60405180910390f35b34801561045e575f80fd5b50610479600480360381019061047491906124bb565b610b44565b60405161048994939291906124e6565b60405180910390f35b34801561049d575f80fd5b506104b860048036038101906104b39190612529565b610bf0565b6040516104c59190612363565b60405180910390f35b3480156104d9575f80fd5b506104f460048036038101906104ef91906125c8565b610c72565b005b348015610501575f80fd5b5061050a610cff565b005b60606040518060400160405280600981526020017f4465636f6e746578740000000000000000000000000000000000000000000000815250905090565b5f61055533848461121e565b6001905092915050565b60125481565b60175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631614665c83836040518363ffffffff1660e01b81526004016105c1929190612613565b5f604051808303815f87803b1580156105d8575f80fd5b505af11580156105ea573d5f803e3d5ffd5b505050505050565b5f6009600a6106019190612796565b6305f5e10061061091906127e0565b905090565b5f6106218484846113e1565b6106ad84336106a860025f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205486611c7f565b61121e565b600190509392505050565b5f6009905090565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610718575f80fd5b5f61072230610750565b90505f8111156107365761073581611cd7565b5b5f4790505f81111561074c5761074b81611f42565b5b5050565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b61079e612051565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461082a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108219061286b565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6108ec612051565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610978576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161096f9061286b565b60405180910390fd5b6009600a6109869190612796565b6305f5e10061099591906127e0565b600f819055506009600a6109a99190612796565b6305f5e1006109b891906127e0565b6010819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6009600a6109ed9190612796565b6305f5e1006109fc91906127e0565b604051610a099190612363565b60405180910390a1565b600f5481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60105481565b60606040518060400160405280600481526020017f4443545800000000000000000000000000000000000000000000000000000000815250905090565b606060175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639d0fe471836040518263ffffffff1660e01b8152600401610adf91906124a2565b5f60405180830381865afa158015610af9573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f82011682018060405250810190610b2191906129a3565b9050919050565b5f610b343384846113e1565b6001905092915050565b60115481565b5f805f8060175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c7f758a8866040518263ffffffff1660e01b8152600401610ba29190612363565b608060405180830381865afa158015610bbd573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610be19190612a12565b93509350935093509193509193565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f68b4c3583836040518363ffffffff1660e01b8152600401610cce929190612ab0565b5f604051808303815f87803b158015610ce5575f80fd5b505af1158015610cf7573d5f803e3d5ffd5b505050505050565b610d07612051565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8a9061286b565b60405180910390fd5b60148054906101000a900460ff1615610de1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dd890612b1c565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d60135f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610e7d3060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166009600a610e699190612796565b6305f5e100610e7891906127e0565b61121e565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ee7573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f0b9190612b4e565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f91573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fb59190612b4e565b6040518363ffffffff1660e01b8152600401610fd2929190612b79565b6020604051808303815f875af1158015610fee573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110129190612b4e565b60145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473061109930610750565b5f806110a3610a19565b426040518863ffffffff1660e01b81526004016110c596959493929190612be2565b60606040518083038185885af11580156110e1573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906111069190612c41565b50505060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016111a6929190612c91565b6020604051808303815f875af11580156111c2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111e69190612cb8565b506001601460166101000a81548160ff02191690831515021790555060016014806101000a81548160ff021916908315150217905550565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361128c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128390612d2d565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036112fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112f190612d95565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516113d49190612363565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561144957505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561145457505f81115b611493576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161148a90612dfd565b60405180910390fd5b5f61149c610a19565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561150a57506114da610a19565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156119cf5760045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161580156115ad575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b6115b5575f80fd5b6115f160646115e3600b54600e54116115d0576007546115d4565b6009545b8561205890919063ffffffff16565b6120cf90919063ffffffff16565b905060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614801561169c575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156116ef575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156117a957600f54821115611739576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161173090612e65565b60405180910390fd5b6010548261174685610750565b6117509190612e83565b1115611791576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178890612f00565b60405180910390fd5b600e5f8154809291906117a390612f1e565b91905055505b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614801561183157503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611875576118726064611864600c54600e541161185157600854611855565b600a545b8561205890919063ffffffff16565b6120cf90919063ffffffff16565b90505b5f61187f30610750565b9050601460159054906101000a900460ff161580156118ea575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b80156119025750601460169054906101000a900460ff165b801561190f575060115481115b801561191e5750600d54600e54115b156119cd57601654431115611935575f6015819055505b60036015541061197a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161197190612faf565b60405180910390fd5b6119976119928461198d84601254612126565b612126565b611cd7565b5f4790505f8111156119ad576119ac81611f42565b5b60155f8154809291906119bf90612f1e565b919050555043601681905550505b505b5f811115611ace57611a278160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461213e90919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611ac59190612363565b60405180910390a35b611b1e8260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611c7f90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550611bc1611b758284611c7f90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461213e90919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef611c648486611c7f90919063ffffffff16565b604051611c719190612363565b60405180910390a350505050565b5f82821115611cc3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cba90613017565b60405180910390fd5b8183611ccf9190613035565b905092915050565b6001601460156101000a81548160ff0219169083151502179055505f600267ffffffffffffffff811115611d0e57611d0d61288d565b5b604051908082528060200260200182016040528015611d3c5781602001602082028036833780820191505090505b50905030815f81518110611d5357611d52613068565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611df7573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e1b9190612b4e565b81600181518110611e2f57611e2e613068565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611e953060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461121e565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401611ef795949392919061314c565b5f604051808303815f87803b158015611f0e575f80fd5b505af1158015611f20573d5f803e3d5ffd5b50505050505f601460156101000a81548160ff02191690831515021790555050565b5f611f6a6064611f5c60468561205890919063ffffffff16565b6120cf90919063ffffffff16565b90505f611f808284611c7f90919063ffffffff16565b905060055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8390811502906040515f60405180830381858888f19350505050158015611fe6573d5f803e3d5ffd5b5060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f1935050505015801561204b573d5f803e3d5ffd5b50505050565b5f33905090565b5f808303612068575f90506120c9565b5f828461207591906127e0565b905082848261208491906131d1565b146120c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120bb90613271565b60405180910390fd5b809150505b92915050565b5f808211612112576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612109906132d9565b60405180910390fd5b818361211e91906131d1565b905092915050565b5f8183106121345781612136565b825b905092915050565b5f80828461214c9190612e83565b905083811015612191576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161218890613341565b60405180910390fd5b8091505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156121d25780820151818401526020810190506121b7565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6121f78261219b565b61220181856121a5565b93506122118185602086016121b5565b61221a816121dd565b840191505092915050565b5f6020820190508181035f83015261223d81846121ed565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61227f82612256565b9050919050565b61228f81612275565b8114612299575f80fd5b50565b5f813590506122aa81612286565b92915050565b5f819050919050565b6122c2816122b0565b81146122cc575f80fd5b50565b5f813590506122dd816122b9565b92915050565b5f80604083850312156122f9576122f861224e565b5b5f6123068582860161229c565b9250506020612317858286016122cf565b9150509250929050565b5f8115159050919050565b61233581612321565b82525050565b5f60208201905061234e5f83018461232c565b92915050565b61235d816122b0565b82525050565b5f6020820190506123765f830184612354565b92915050565b61238581612321565b811461238f575f80fd5b50565b5f813590506123a08161237c565b92915050565b5f80604083850312156123bc576123bb61224e565b5b5f6123c9858286016122cf565b92505060206123da85828601612392565b9150509250929050565b5f805f606084860312156123fb576123fa61224e565b5b5f6124088682870161229c565b93505060206124198682870161229c565b925050604061242a868287016122cf565b9150509250925092565b5f60ff82169050919050565b61244981612434565b82525050565b5f6020820190506124625f830184612440565b92915050565b5f6020828403121561247d5761247c61224e565b5b5f61248a8482850161229c565b91505092915050565b61249c81612275565b82525050565b5f6020820190506124b55f830184612493565b92915050565b5f602082840312156124d0576124cf61224e565b5b5f6124dd848285016122cf565b91505092915050565b5f6080820190506124f95f830187612354565b6125066020830186612354565b6125136040830185612354565b612520606083018461232c565b95945050505050565b5f806040838503121561253f5761253e61224e565b5b5f61254c8582860161229c565b925050602061255d8582860161229c565b9150509250929050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f84011261258857612587612567565b5b8235905067ffffffffffffffff8111156125a5576125a461256b565b5b6020830191508360018202830111156125c1576125c061256f565b5b9250929050565b5f80602083850312156125de576125dd61224e565b5b5f83013567ffffffffffffffff8111156125fb576125fa612252565b5b61260785828601612573565b92509250509250929050565b5f6040820190506126265f830185612354565b612633602083018461232c565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156126bc578086048111156126985761269761263a565b5b60018516156126a75780820291505b80810290506126b585612667565b945061267c565b94509492505050565b5f826126d4576001905061278f565b816126e1575f905061278f565b81600181146126f7576002811461270157612730565b600191505061278f565b60ff8411156127135761271261263a565b5b8360020a91508482111561272a5761272961263a565b5b5061278f565b5060208310610133831016604e8410600b84101617156127655782820a9050838111156127605761275f61263a565b5b61278f565b6127728484846001612673565b925090508184048111156127895761278861263a565b5b81810290505b9392505050565b5f6127a0826122b0565b91506127ab83612434565b92506127d87fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846126c5565b905092915050565b5f6127ea826122b0565b91506127f5836122b0565b9250828202612803816122b0565b9150828204841483151761281a5761281961263a565b5b5092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6128556020836121a5565b915061286082612821565b602082019050919050565b5f6020820190508181035f83015261288281612849565b9050919050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6128c3826121dd565b810181811067ffffffffffffffff821117156128e2576128e161288d565b5b80604052505050565b5f6128f4612245565b905061290082826128ba565b919050565b5f67ffffffffffffffff82111561291f5761291e61288d565b5b612928826121dd565b9050602081019050919050565b5f61294761294284612905565b6128eb565b90508281526020810184848401111561296357612962612889565b5b61296e8482856121b5565b509392505050565b5f82601f83011261298a57612989612567565b5b815161299a848260208601612935565b91505092915050565b5f602082840312156129b8576129b761224e565b5b5f82015167ffffffffffffffff8111156129d5576129d4612252565b5b6129e184828501612976565b91505092915050565b5f815190506129f8816122b9565b92915050565b5f81519050612a0c8161237c565b92915050565b5f805f8060808587031215612a2a57612a2961224e565b5b5f612a37878288016129ea565b9450506020612a48878288016129ea565b9350506040612a59878288016129ea565b9250506060612a6a878288016129fe565b91505092959194509250565b828183375f83830152505050565b5f612a8f83856121a5565b9350612a9c838584612a76565b612aa5836121dd565b840190509392505050565b5f6020820190508181035f830152612ac9818486612a84565b90509392505050565b7f416c7265616479206f70656e00000000000000000000000000000000000000005f82015250565b5f612b06600c836121a5565b9150612b1182612ad2565b602082019050919050565b5f6020820190508181035f830152612b3381612afa565b9050919050565b5f81519050612b4881612286565b92915050565b5f60208284031215612b6357612b6261224e565b5b5f612b7084828501612b3a565b91505092915050565b5f604082019050612b8c5f830185612493565b612b996020830184612493565b9392505050565b5f819050919050565b5f819050919050565b5f612bcc612bc7612bc284612ba0565b612ba9565b6122b0565b9050919050565b612bdc81612bb2565b82525050565b5f60c082019050612bf55f830189612493565b612c026020830188612354565b612c0f6040830187612bd3565b612c1c6060830186612bd3565b612c296080830185612493565b612c3660a0830184612354565b979650505050505050565b5f805f60608486031215612c5857612c5761224e565b5b5f612c65868287016129ea565b9350506020612c76868287016129ea565b9250506040612c87868287016129ea565b9150509250925092565b5f604082019050612ca45f830185612493565b612cb16020830184612354565b9392505050565b5f60208284031215612ccd57612ccc61224e565b5b5f612cda848285016129fe565b91505092915050565b7f45524332303a20617070726f76652066726f6d207a65726f20616464726573735f82015250565b5f612d176020836121a5565b9150612d2282612ce3565b602082019050919050565b5f6020820190508181035f830152612d4481612d0b565b9050919050565b7f45524332303a20617070726f766520746f207a65726f206164647265737300005f82015250565b5f612d7f601e836121a5565b9150612d8a82612d4b565b602082019050919050565b5f6020820190508181035f830152612dac81612d73565b9050919050565b7f496e76616c6964207472616e73666572000000000000000000000000000000005f82015250565b5f612de76010836121a5565b9150612df282612db3565b602082019050919050565b5f6020820190508181035f830152612e1481612ddb565b9050919050565b7f45786365656473206d61785478416d6f756e74000000000000000000000000005f82015250565b5f612e4f6013836121a5565b9150612e5a82612e1b565b602082019050919050565b5f6020820190508181035f830152612e7c81612e43565b9050919050565b5f612e8d826122b0565b9150612e98836122b0565b9250828201905080821115612eb057612eaf61263a565b5b92915050565b7f45786365656473206d617857616c6c657453697a6500000000000000000000005f82015250565b5f612eea6015836121a5565b9150612ef582612eb6565b602082019050919050565b5f6020820190508181035f830152612f1781612ede565b9050919050565b5f612f28826122b0565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612f5a57612f5961263a565b5b600182019050919050565b7f4d61782073656c6c732070657220626c6f636b206578636565646564000000005f82015250565b5f612f99601c836121a5565b9150612fa482612f65565b602082019050919050565b5f6020820190508181035f830152612fc681612f8d565b9050919050565b7f536166654d6174683a207375627472616374696f6e206f766572666c6f7700005f82015250565b5f613001601e836121a5565b915061300c82612fcd565b602082019050919050565b5f6020820190508181035f83015261302e81612ff5565b9050919050565b5f61303f826122b0565b915061304a836122b0565b92508282039050818111156130625761306161263a565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6130c781612275565b82525050565b5f6130d883836130be565b60208301905092915050565b5f602082019050919050565b5f6130fa82613095565b613104818561309f565b935061310f836130af565b805f5b8381101561313f57815161312688826130cd565b9750613131836130e4565b925050600181019050613112565b5085935050505092915050565b5f60a08201905061315f5f830188612354565b61316c6020830187612bd3565b818103604083015261317e81866130f0565b905061318d6060830185612493565b61319a6080830184612354565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6131db826122b0565b91506131e6836122b0565b9250826131f6576131f56131a4565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f61325b6021836121a5565b915061326682613201565b604082019050919050565b5f6020820190508181035f8301526132888161324f565b9050919050565b7f536166654d6174683a206469766973696f6e206279207a65726f0000000000005f82015250565b5f6132c3601a836121a5565b91506132ce8261328f565b602082019050919050565b5f6020820190508181035f8301526132f0816132b7565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f61332b601b836121a5565b9150613336826132f7565b602082019050919050565b5f6020820190508181035f8301526133588161331f565b905091905056fea2646970667358221220288213f334261a8f2b622f0ad6eecb32145ebc092fada461de0d7432d85a483964736f6c63430008170033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000c684871e7f6dbf70909926c566d0fa2e7fa55f1800000000000000000000000058c0cee752682365a1ab299f429cfa5bb5efc86800000000000000000000000016734b4479448e89db7f4932f8cc759cb7cef578
-----Decoded View---------------
Arg [0] : taxWallet1_ (address): 0xc684871e7F6dBF70909926c566d0fA2E7fa55f18
Arg [1] : taxWallet2_ (address): 0x58C0cEE752682365A1Ab299f429CFA5bB5EfC868
Arg [2] : dmcpAddress (address): 0x16734B4479448E89db7f4932f8cC759cB7cEF578
-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 000000000000000000000000c684871e7f6dbf70909926c566d0fa2e7fa55f18
Arg [1] : 00000000000000000000000058c0cee752682365a1ab299f429cfa5bb5efc868
Arg [2] : 00000000000000000000000016734b4479448e89db7f4932f8cc759cb7cef578
Deployed Bytecode Sourcemap
253:2450:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2312:69:7;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3059:159;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1425:52;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1188:127:0;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2541:81:7;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3224:275;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2466:69;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6519:313;;;;;;;;;;;;;:::i;:::-;;2628:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1171:148:5;;;;;;;;;;;;;:::i;:::-;;2538:162:0;;;;;;;;;;;;;:::i;:::-;;1178:53:7;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;835:79:5;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1238:55:7;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2387:73;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2264:122:0;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2739:165:7;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1361:57;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1630:232:0;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;2910:143:7;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1979:112:0;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5799:712:7;;;;;;;;;;;;;:::i;:::-;;2312:69;2349:13;2373:5;;;;;;;;;;;;;;;;;2366:12;;2312:69;:::o;3059:159::-;3134:4;3151:37;3160:10;3172:7;3181:6;3151:8;:37::i;:::-;3206:4;3199:11;;3059:159;;;;:::o;1425:52::-;;;;:::o;1188:127:0:-;1266:5;;;;;;;;;;;:20;;;1287:10;1299:7;1266:41;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1188:127;;:::o;2541:81:7:-;2594:7;1001:1;1057:2;:13;;;;:::i;:::-;1045:9;:25;;;;:::i;:::-;2605:14;;2541:81;:::o;3224:275::-;3322:4;3339:36;3349:6;3357:9;3368:6;3339:9;:36::i;:::-;3386:83;3395:6;3403:10;3415:53;3428:11;:19;3440:6;3428:19;;;;;;;;;;;;;;;:31;3448:10;3428:31;;;;;;;;;;;;;;;;3461:6;3415:12;:53::i;:::-;3386:8;:83::i;:::-;3487:4;3480:11;;3224:275;;;;;:::o;2466:69::-;2507:5;1001:1;2516:16;;2466:69;:::o;6519:313::-;6583:11;;;;;;;;;;;6569:25;;:10;:25;;;6561:34;;;;;;6606:20;6629:24;6647:4;6629:9;:24::i;:::-;6606:47;;6683:1;6668:12;:16;6664:52;;;6686:30;6703:12;6686:16;:30::i;:::-;6664:52;6727:18;6748:21;6727:42;;6797:1;6784:10;:14;6780:44;;;6800:24;6813:10;6800:12;:24::i;:::-;6780:44;6550:282;;6519:313::o;2628:105::-;2694:7;2712:9;:18;2722:7;2712:18;;;;;;;;;;;;;;;;2705:25;;2628:105;;;:::o;1171:148:5:-;1022:12;:10;:12::i;:::-;1012:22;;:6;;;;;;;;;;:22;;;1004:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1278:1:::1;1241:40;;1262:6;::::0;::::1;;;;;;;;1241:40;;;;;;;;;;;;1309:1;1292:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;1171:148::o:0;2538:162:0:-;1022:12:5;:10;:12::i;:::-;1012:22;;:6;;;;;;;;;;:22;;;1004:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1001:1:7::1;1057:2;:13;;;;:::i;:::-;1045:9;:25;;;;:::i;:::-;2592:12:0;:22;;;;1001:1:7;1057:2;:13;;;;:::i;:::-;1045:9;:25;;;;:::i;:::-;2625:14:0;:24;;;;2665:27;1001:1:7;1057:2;:13;;;;:::i;:::-;1045:9;:25;;;;:::i;:::-;2665:27:0;;;;;;:::i;:::-;;;;;;;;2538:162::o:0;1178:53:7:-;;;;:::o;835:79:5:-;873:7;900:6;;;;;;;;;;;893:13;;835:79;:::o;1238:55:7:-;;;;:::o;2387:73::-;2426:13;2450:7;;;;;;;;;;;;;;;;;2443:14;;2387:73;:::o;2264:122:0:-;2322:13;2355:5;;;;;;;;;;;:17;;;2373:4;2355:23;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2348:30;;2264:122;;;:::o;2739:165:7:-;2817:4;2834:40;2844:10;2856:9;2867:6;2834:9;:40::i;:::-;2892:4;2885:11;;2739:165;;;;:::o;1361:57::-;;;;:::o;1630:232:0:-;1704:10;1725:20;1756:19;1786:13;1825:5;;;;;;;;;;;:17;;;1843:10;1825:29;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1818:36;;;;;;;;1630:232;;;;;:::o;2910:143:7:-;2991:7;3018:11;:18;3030:5;3018:18;;;;;;;;;;;;;;;:27;3037:7;3018:27;;;;;;;;;;;;;;;;3011:34;;2910:143;;;;:::o;1979:112:0:-;2051:5;;;;;;;;;;;:24;;;2076:6;;2051:32;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1979:112;;:::o;5799:712:7:-;1022:12:5;:10;:12::i;:::-;1012:22;;:6;;;;;;;;;;:22;;;1004:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;5859:11:7::1;::::0;::::1;;;;;;;;5858:12;5850:37;;;;;;;;;;;;:::i;:::-;;;;;;;;;5935:42;5898:15;;:80;;;;;;;;;;;;;;;;;;5989:58;6006:4;6021:15;;;;;;;;;;;1001:1;1057:2;:13;;;;:::i;:::-;1045:9;:25;;;;:::i;:::-;5989:8;:58::i;:::-;6092:15;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6074:55;;;6138:4;6145:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6074:94;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6058:13;;:110;;;;;;;;;;;;;;;;;;6179:15;;;;;;;;;;;:31;;;6218:21;6263:4;6283:24;6301:4;6283:9;:24::i;:::-;6322:1;6325::::0;6328:7:::1;:5;:7::i;:::-;6337:15;6179:184;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;6381:13;;;;;;;;;;;6374:29;;;6412:15;;;;;;;;;;;6430:14;6374:71;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;6470:4;6456:11;;:18;;;;;;;;;;;;;;;;;;6499:4;6485:11;::::0;:18:::1;;;;;;;;;;;;;;;;;;5799:712::o:0;3507:328::-;3618:1;3601:19;;:5;:19;;;3593:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;3695:1;3676:21;;:7;:21;;;3668:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;3773:6;3743:11;:18;3755:5;3743:18;;;;;;;;;;;;;;;:27;3762:7;3743:27;;;;;;;;;;;;;;;:36;;;;3811:7;3795:32;;3804:5;3795:32;;;3820:6;3795:32;;;;;;:::i;:::-;;;;;;;;3507:328;;;:::o;3843:1948::-;3948:1;3932:18;;:4;:18;;;;:38;;;;;3968:1;3954:16;;:2;:16;;;;3932:38;:52;;;;;3983:1;3974:6;:10;3932:52;3924:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;4018:17;4062:7;:5;:7::i;:::-;4054:15;;:4;:15;;;;:32;;;;;4079:7;:5;:7::i;:::-;4073:13;;:2;:13;;;;4054:32;4050:1368;;;4112:4;:10;4117:4;4112:10;;;;;;;;;;;;;;;;;;;;;;;;;4111:11;:24;;;;;4127:4;:8;4132:2;4127:8;;;;;;;;;;;;;;;;;;;;;;;;;4126:9;4111:24;4103:33;;;;;;4163:82;4241:3;4163:73;4187:15;;4175:9;;:27;:59;;4220:14;;4175:59;;;4205:12;;4175:59;4163:6;:10;;:73;;;;:::i;:::-;:77;;:82;;;;:::i;:::-;4151:94;;4274:13;;;;;;;;;;;4266:21;;:4;:21;;;:55;;;;;4305:15;;;;;;;;;;;4291:30;;:2;:30;;;;4266:55;:82;;;;;4326:18;:22;4345:2;4326:22;;;;;;;;;;;;;;;;;;;;;;;;;4325:23;4266:82;4262:300;;;4387:12;;4377:6;:22;;4369:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;4476:14;;4466:6;4450:13;4460:2;4450:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;4442:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;4535:9;;:11;;;;;;;;;:::i;:::-;;;;;;4262:300;4588:13;;;;;;;;;;;4582:19;;:2;:19;;;:44;;;;;4621:4;4605:21;;:4;:21;;;;4582:44;4578:182;;;4659:85;4740:3;4659:76;4683:16;;4671:9;;:28;:62;;4718:15;;4671:62;;;4702:13;;4671:62;4659:6;:10;;:76;;;;:::i;:::-;:80;;:85;;;;:::i;:::-;4647:97;;4578:182;4776:28;4807:24;4825:4;4807:9;:24::i;:::-;4776:55;;4851:6;;;;;;;;;;;4850:7;:30;;;;;4867:13;;;;;;;;;;;4861:19;;:2;:19;;;4850:30;:45;;;;;4884:11;;;;;;;;;;;4850:45;:89;;;;;4922:17;;4899:20;:40;4850:89;:123;;;;;4955:18;;4943:9;;:30;4850:123;4846:561;;;5013:13;;4998:12;:28;4994:47;;;5040:1;5028:9;:13;;;;4994:47;5080:1;5068:9;;:13;5060:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;5133:69;5150:51;5154:6;5162:38;5166:20;5188:11;;5162:3;:38::i;:::-;5150:3;:51::i;:::-;5133:16;:69::i;:::-;5221:14;5238:21;5221:38;;5291:1;5282:6;:10;5278:36;;;5294:20;5307:6;5294:12;:20::i;:::-;5278:36;5333:9;;:11;;;;;;;;;:::i;:::-;;;;;;5379:12;5363:13;:28;;;;4975:432;4846:561;4088:1330;4050:1368;5446:1;5434:9;:13;5430:172;;;5491:39;5520:9;5491;:24;5509:4;5491:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;5464:9;:24;5482:4;5464:24;;;;;;;;;;;;;;;:66;;;;5573:4;5550:40;;5559:4;5550:40;;;5580:9;5550:40;;;;;;:::i;:::-;;;;;;;;5430:172;5632:27;5652:6;5632:9;:15;5642:4;5632:15;;;;;;;;;;;;;;;;:19;;:27;;;;:::i;:::-;5614:9;:15;5624:4;5614:15;;;;;;;;;;;;;;;:45;;;;5686:40;5704:21;5715:9;5704:6;:10;;:21;;;;:::i;:::-;5686:9;:13;5696:2;5686:13;;;;;;;;;;;;;;;;:17;;:40;;;;:::i;:::-;5670:9;:13;5680:2;5670:13;;;;;;;;;;;;;;;:56;;;;5757:2;5742:41;;5751:4;5742:41;;;5761:21;5772:9;5761:6;:10;;:21;;;;:::i;:::-;5742:41;;;;;;:::i;:::-;;;;;;;;3913:1878;3843:1948;;;:::o;524:158:6:-;582:7;615:1;610;:6;;602:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;673:1;669;:5;;;;:::i;:::-;662:12;;524:158;;;;:::o;7073:408:7:-;1801:4;1792:6;;:13;;;;;;;;;;;;;;;;;;7152:21:::1;7190:1;7176:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7152:40;;7221:4;7203;7208:1;7203:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;7247:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7237:4;7242:1;7237:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;7280:62;7297:4;7312:15;;;;;;;;;;;7330:11;7280:8;:62::i;:::-;7353:15;;;;;;;;;;;:66;;;7420:11;7433:1;7436:4;7450;7457:15;7353:120;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;7141:340;1837:5:::0;1828:6;;:14;;;;;;;;;;;;;;;;;;7073:408;:::o;6840:225::-;6898:13;6914:23;6933:3;6914:14;6925:2;6914:6;:10;;:14;;;;:::i;:::-;:18;;:23;;;;:::i;:::-;6898:39;;6948:13;6964:17;6975:5;6964:6;:10;;:17;;;;:::i;:::-;6948:33;;6992:11;;;;;;;;;;;:20;;:27;7013:5;6992:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7030:11;;;;;;;;;;;:20;;:27;7051:5;7030:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6887:178;;6840:225;:::o;155:98:5:-;208:7;235:10;228:17;;155:98;:::o;764:220:6:-;822:7;851:1;846;:6;842:20;;861:1;854:8;;;;842:20;873:9;889:1;885;:5;;;;:::i;:::-;873:17;;918:1;913;909;:5;;;;:::i;:::-;:10;901:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;975:1;968:8;;;764:220;;;;;:::o;1070:153::-;1128:7;1160:1;1156;:5;1148:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;1214:1;1210;:5;;;;:::i;:::-;1203:12;;1070:153;;;;:::o;7489:106:7:-;7547:7;7578:1;7574;:5;:13;;7586:1;7574:13;;;7582:1;7574:13;7567:20;;7489:106;;;;:::o;238:179:6:-;296:7;316:9;332:1;328;:5;;;;:::i;:::-;316:17;;357:1;352;:6;;344:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;408:1;401:8;;;238:179;;;;:::o;7:99:8:-;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:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1349:75::-;1382:6;1415:2;1409:9;1399:19;;1349:75;:::o;1430:117::-;1539:1;1536;1529:12;1553:117;1662:1;1659;1652:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:118::-;3533:24;3551:5;3533:24;:::i;:::-;3528:3;3521:37;3446:118;;:::o;3570:222::-;3663:4;3701:2;3690:9;3686:18;3678:26;;3714:71;3782:1;3771:9;3767:17;3758:6;3714:71;:::i;:::-;3570:222;;;;:::o;3798:116::-;3868:21;3883:5;3868:21;:::i;:::-;3861:5;3858:32;3848:60;;3904:1;3901;3894:12;3848:60;3798:116;:::o;3920:133::-;3963:5;4001:6;3988:20;3979:29;;4017:30;4041:5;4017:30;:::i;:::-;3920:133;;;;:::o;4059:468::-;4124:6;4132;4181:2;4169:9;4160:7;4156:23;4152:32;4149:119;;;4187:79;;:::i;:::-;4149:119;4307:1;4332:53;4377:7;4368:6;4357:9;4353:22;4332:53;:::i;:::-;4322:63;;4278:117;4434:2;4460:50;4502:7;4493:6;4482:9;4478:22;4460:50;:::i;:::-;4450:60;;4405:115;4059:468;;;;;:::o;4533:619::-;4610:6;4618;4626;4675:2;4663:9;4654:7;4650:23;4646:32;4643:119;;;4681:79;;:::i;:::-;4643:119;4801:1;4826:53;4871:7;4862:6;4851:9;4847:22;4826:53;:::i;:::-;4816:63;;4772:117;4928:2;4954:53;4999:7;4990:6;4979:9;4975:22;4954:53;:::i;:::-;4944:63;;4899:118;5056:2;5082:53;5127:7;5118:6;5107:9;5103:22;5082:53;:::i;:::-;5072:63;;5027:118;4533:619;;;;;:::o;5158:86::-;5193:7;5233:4;5226:5;5222:16;5211:27;;5158:86;;;:::o;5250:112::-;5333:22;5349:5;5333:22;:::i;:::-;5328:3;5321:35;5250:112;;:::o;5368:214::-;5457:4;5495:2;5484:9;5480:18;5472:26;;5508:67;5572:1;5561:9;5557:17;5548:6;5508:67;:::i;:::-;5368:214;;;;:::o;5588:329::-;5647:6;5696:2;5684:9;5675:7;5671:23;5667:32;5664:119;;;5702:79;;:::i;:::-;5664:119;5822:1;5847:53;5892:7;5883:6;5872:9;5868:22;5847:53;:::i;:::-;5837:63;;5793:117;5588:329;;;;:::o;5923:118::-;6010:24;6028:5;6010:24;:::i;:::-;6005:3;5998:37;5923:118;;:::o;6047:222::-;6140:4;6178:2;6167:9;6163:18;6155:26;;6191:71;6259:1;6248:9;6244:17;6235:6;6191:71;:::i;:::-;6047:222;;;;:::o;6275:329::-;6334:6;6383:2;6371:9;6362:7;6358:23;6354:32;6351:119;;;6389:79;;:::i;:::-;6351:119;6509:1;6534:53;6579:7;6570:6;6559:9;6555:22;6534:53;:::i;:::-;6524:63;;6480:117;6275:329;;;;:::o;6610:541::-;6781:4;6819:3;6808:9;6804:19;6796:27;;6833:71;6901:1;6890:9;6886:17;6877:6;6833:71;:::i;:::-;6914:72;6982:2;6971:9;6967:18;6958:6;6914:72;:::i;:::-;6996;7064:2;7053:9;7049:18;7040:6;6996:72;:::i;:::-;7078:66;7140:2;7129:9;7125:18;7116:6;7078:66;:::i;:::-;6610:541;;;;;;;:::o;7157:474::-;7225:6;7233;7282:2;7270:9;7261:7;7257:23;7253:32;7250:119;;;7288:79;;:::i;:::-;7250:119;7408:1;7433:53;7478:7;7469:6;7458:9;7454:22;7433:53;:::i;:::-;7423:63;;7379:117;7535:2;7561:53;7606:7;7597:6;7586:9;7582:22;7561:53;:::i;:::-;7551:63;;7506:118;7157:474;;;;;:::o;7637:117::-;7746:1;7743;7736:12;7760:117;7869:1;7866;7859:12;7883:117;7992:1;7989;7982:12;8020:553;8078:8;8088:6;8138:3;8131:4;8123:6;8119:17;8115:27;8105:122;;8146:79;;:::i;:::-;8105:122;8259:6;8246:20;8236:30;;8289:18;8281:6;8278:30;8275:117;;;8311:79;;:::i;:::-;8275:117;8425:4;8417:6;8413:17;8401:29;;8479:3;8471:4;8463:6;8459:17;8449:8;8445:32;8442:41;8439:128;;;8486:79;;:::i;:::-;8439:128;8020:553;;;;;:::o;8579:529::-;8650:6;8658;8707:2;8695:9;8686:7;8682:23;8678:32;8675:119;;;8713:79;;:::i;:::-;8675:119;8861:1;8850:9;8846:17;8833:31;8891:18;8883:6;8880:30;8877:117;;;8913:79;;:::i;:::-;8877:117;9026:65;9083:7;9074:6;9063:9;9059:22;9026:65;:::i;:::-;9008:83;;;;8804:297;8579:529;;;;;:::o;9114:320::-;9229:4;9267:2;9256:9;9252:18;9244:26;;9280:71;9348:1;9337:9;9333:17;9324:6;9280:71;:::i;:::-;9361:66;9423:2;9412:9;9408:18;9399:6;9361:66;:::i;:::-;9114:320;;;;;:::o;9440:180::-;9488:77;9485:1;9478:88;9585:4;9582:1;9575:15;9609:4;9606:1;9599:15;9626:102;9668:8;9715:5;9712:1;9708:13;9687:34;;9626:102;;;:::o;9734:848::-;9795:5;9802:4;9826:6;9817:15;;9850:5;9841:14;;9864:712;9885:1;9875:8;9872:15;9864:712;;;9980:4;9975:3;9971:14;9965:4;9962:24;9959:50;;;9989:18;;:::i;:::-;9959:50;10039:1;10029:8;10025:16;10022:451;;;10454:4;10447:5;10443:16;10434:25;;10022:451;10504:4;10498;10494:15;10486:23;;10534:32;10557:8;10534:32;:::i;:::-;10522:44;;9864:712;;;9734:848;;;;;;;:::o;10588:1073::-;10642:5;10833:8;10823:40;;10854:1;10845:10;;10856:5;;10823:40;10882:4;10872:36;;10899:1;10890:10;;10901:5;;10872:36;10968:4;11016:1;11011:27;;;;11052:1;11047:191;;;;10961:277;;11011:27;11029:1;11020:10;;11031:5;;;11047:191;11092:3;11082:8;11079:17;11076:43;;;11099:18;;:::i;:::-;11076:43;11148:8;11145:1;11141:16;11132:25;;11183:3;11176:5;11173:14;11170:40;;;11190:18;;:::i;:::-;11170:40;11223:5;;;10961:277;;11347:2;11337:8;11334:16;11328:3;11322:4;11319:13;11315:36;11297:2;11287:8;11284:16;11279:2;11273:4;11270:12;11266:35;11250:111;11247:246;;;11403:8;11397:4;11393:19;11384:28;;11438:3;11431:5;11428:14;11425:40;;;11445:18;;:::i;:::-;11425:40;11478:5;;11247:246;11518:42;11556:3;11546:8;11540:4;11537:1;11518:42;:::i;:::-;11503:57;;;;11592:4;11587:3;11583:14;11576:5;11573:25;11570:51;;;11601:18;;:::i;:::-;11570:51;11650:4;11643:5;11639:16;11630:25;;10588:1073;;;;;;:::o;11667:281::-;11725:5;11749:23;11767:4;11749:23;:::i;:::-;11741:31;;11793:25;11809:8;11793:25;:::i;:::-;11781:37;;11837:104;11874:66;11864:8;11858:4;11837:104;:::i;:::-;11828:113;;11667:281;;;;:::o;11954:410::-;11994:7;12017:20;12035:1;12017:20;:::i;:::-;12012:25;;12051:20;12069:1;12051:20;:::i;:::-;12046:25;;12106:1;12103;12099:9;12128:30;12146:11;12128:30;:::i;:::-;12117:41;;12307:1;12298:7;12294:15;12291:1;12288:22;12268:1;12261:9;12241:83;12218:139;;12337:18;;:::i;:::-;12218:139;12002:362;11954:410;;;;:::o;12370:182::-;12510:34;12506:1;12498:6;12494:14;12487:58;12370:182;:::o;12558:366::-;12700:3;12721:67;12785:2;12780:3;12721:67;:::i;:::-;12714:74;;12797:93;12886:3;12797:93;:::i;:::-;12915:2;12910:3;12906:12;12899:19;;12558:366;;;:::o;12930:419::-;13096:4;13134:2;13123:9;13119:18;13111:26;;13183:9;13177:4;13173:20;13169:1;13158:9;13154:17;13147:47;13211:131;13337:4;13211:131;:::i;:::-;13203:139;;12930:419;;;:::o;13355:117::-;13464:1;13461;13454:12;13478:180;13526:77;13523:1;13516:88;13623:4;13620:1;13613:15;13647:4;13644:1;13637:15;13664:281;13747:27;13769:4;13747:27;:::i;:::-;13739:6;13735:40;13877:6;13865:10;13862:22;13841:18;13829:10;13826:34;13823:62;13820:88;;;13888:18;;:::i;:::-;13820:88;13928:10;13924:2;13917:22;13707:238;13664:281;;:::o;13951:129::-;13985:6;14012:20;;:::i;:::-;14002:30;;14041:33;14069:4;14061:6;14041:33;:::i;:::-;13951:129;;;:::o;14086:308::-;14148:4;14238:18;14230:6;14227:30;14224:56;;;14260:18;;:::i;:::-;14224:56;14298:29;14320:6;14298:29;:::i;:::-;14290:37;;14382:4;14376;14372:15;14364:23;;14086:308;;;:::o;14400:434::-;14489:5;14514:66;14530:49;14572:6;14530:49;:::i;:::-;14514:66;:::i;:::-;14505:75;;14603:6;14596:5;14589:21;14641:4;14634:5;14630:16;14679:3;14670:6;14665:3;14661:16;14658:25;14655:112;;;14686:79;;:::i;:::-;14655:112;14776:52;14821:6;14816:3;14811;14776:52;:::i;:::-;14495:339;14400:434;;;;;:::o;14854:355::-;14921:5;14970:3;14963:4;14955:6;14951:17;14947:27;14937:122;;14978:79;;:::i;:::-;14937:122;15088:6;15082:13;15113:90;15199:3;15191:6;15184:4;15176:6;15172:17;15113:90;:::i;:::-;15104:99;;14927:282;14854:355;;;;:::o;15215:524::-;15295:6;15344:2;15332:9;15323:7;15319:23;15315:32;15312:119;;;15350:79;;:::i;:::-;15312:119;15491:1;15480:9;15476:17;15470:24;15521:18;15513:6;15510:30;15507:117;;;15543:79;;:::i;:::-;15507:117;15648:74;15714:7;15705:6;15694:9;15690:22;15648:74;:::i;:::-;15638:84;;15441:291;15215:524;;;;:::o;15745:143::-;15802:5;15833:6;15827:13;15818:22;;15849:33;15876:5;15849:33;:::i;:::-;15745:143;;;;:::o;15894:137::-;15948:5;15979:6;15973:13;15964:22;;15995:30;16019:5;15995:30;:::i;:::-;15894:137;;;;:::o;16037:814::-;16131:6;16139;16147;16155;16204:3;16192:9;16183:7;16179:23;16175:33;16172:120;;;16211:79;;:::i;:::-;16172:120;16331:1;16356:64;16412:7;16403:6;16392:9;16388:22;16356:64;:::i;:::-;16346:74;;16302:128;16469:2;16495:64;16551:7;16542:6;16531:9;16527:22;16495:64;:::i;:::-;16485:74;;16440:129;16608:2;16634:64;16690:7;16681:6;16670:9;16666:22;16634:64;:::i;:::-;16624:74;;16579:129;16747:2;16773:61;16826:7;16817:6;16806:9;16802:22;16773:61;:::i;:::-;16763:71;;16718:126;16037:814;;;;;;;:::o;16857:146::-;16954:6;16949:3;16944;16931:30;16995:1;16986:6;16981:3;16977:16;16970:27;16857:146;;;:::o;17033:317::-;17131:3;17152:71;17216:6;17211:3;17152:71;:::i;:::-;17145:78;;17233:56;17282:6;17277:3;17270:5;17233:56;:::i;:::-;17314:29;17336:6;17314:29;:::i;:::-;17309:3;17305:39;17298:46;;17033:317;;;;;:::o;17356:333::-;17479:4;17517:2;17506:9;17502:18;17494:26;;17566:9;17560:4;17556:20;17552:1;17541:9;17537:17;17530:47;17594:88;17677:4;17668:6;17660;17594:88;:::i;:::-;17586:96;;17356:333;;;;;:::o;17695:162::-;17835:14;17831:1;17823:6;17819:14;17812:38;17695:162;:::o;17863:366::-;18005:3;18026:67;18090:2;18085:3;18026:67;:::i;:::-;18019:74;;18102:93;18191:3;18102:93;:::i;:::-;18220:2;18215:3;18211:12;18204:19;;17863:366;;;:::o;18235:419::-;18401:4;18439:2;18428:9;18424:18;18416:26;;18488:9;18482:4;18478:20;18474:1;18463:9;18459:17;18452:47;18516:131;18642:4;18516:131;:::i;:::-;18508:139;;18235:419;;;:::o;18660:143::-;18717:5;18748:6;18742:13;18733:22;;18764:33;18791:5;18764:33;:::i;:::-;18660:143;;;;:::o;18809:351::-;18879:6;18928:2;18916:9;18907:7;18903:23;18899:32;18896:119;;;18934:79;;:::i;:::-;18896:119;19054:1;19079:64;19135:7;19126:6;19115:9;19111:22;19079:64;:::i;:::-;19069:74;;19025:128;18809:351;;;;:::o;19166:332::-;19287:4;19325:2;19314:9;19310:18;19302:26;;19338:71;19406:1;19395:9;19391:17;19382:6;19338:71;:::i;:::-;19419:72;19487:2;19476:9;19472:18;19463:6;19419:72;:::i;:::-;19166:332;;;;;:::o;19504:85::-;19549:7;19578:5;19567:16;;19504:85;;;:::o;19595:60::-;19623:3;19644:5;19637:12;;19595:60;;;:::o;19661:158::-;19719:9;19752:61;19770:42;19779:32;19805:5;19779:32;:::i;:::-;19770:42;:::i;:::-;19752:61;:::i;:::-;19739:74;;19661:158;;;:::o;19825:147::-;19920:45;19959:5;19920:45;:::i;:::-;19915:3;19908:58;19825:147;;:::o;19978:807::-;20227:4;20265:3;20254:9;20250:19;20242:27;;20279:71;20347:1;20336:9;20332:17;20323:6;20279:71;:::i;:::-;20360:72;20428:2;20417:9;20413:18;20404:6;20360:72;:::i;:::-;20442:80;20518:2;20507:9;20503:18;20494:6;20442:80;:::i;:::-;20532;20608:2;20597:9;20593:18;20584:6;20532:80;:::i;:::-;20622:73;20690:3;20679:9;20675:19;20666:6;20622:73;:::i;:::-;20705;20773:3;20762:9;20758:19;20749:6;20705:73;:::i;:::-;19978:807;;;;;;;;;:::o;20791:663::-;20879:6;20887;20895;20944:2;20932:9;20923:7;20919:23;20915:32;20912:119;;;20950:79;;:::i;:::-;20912:119;21070:1;21095:64;21151:7;21142:6;21131:9;21127:22;21095:64;:::i;:::-;21085:74;;21041:128;21208:2;21234:64;21290:7;21281:6;21270:9;21266:22;21234:64;:::i;:::-;21224:74;;21179:129;21347:2;21373:64;21429:7;21420:6;21409:9;21405:22;21373:64;:::i;:::-;21363:74;;21318:129;20791:663;;;;;:::o;21460:332::-;21581:4;21619:2;21608:9;21604:18;21596:26;;21632:71;21700:1;21689:9;21685:17;21676:6;21632:71;:::i;:::-;21713:72;21781:2;21770:9;21766:18;21757:6;21713:72;:::i;:::-;21460:332;;;;;:::o;21798:345::-;21865:6;21914:2;21902:9;21893:7;21889:23;21885:32;21882:119;;;21920:79;;:::i;:::-;21882:119;22040:1;22065:61;22118:7;22109:6;22098:9;22094:22;22065:61;:::i;:::-;22055:71;;22011:125;21798:345;;;;:::o;22149:182::-;22289:34;22285:1;22277:6;22273:14;22266:58;22149:182;:::o;22337:366::-;22479:3;22500:67;22564:2;22559:3;22500:67;:::i;:::-;22493:74;;22576:93;22665:3;22576:93;:::i;:::-;22694:2;22689:3;22685:12;22678:19;;22337:366;;;:::o;22709:419::-;22875:4;22913:2;22902:9;22898:18;22890:26;;22962:9;22956:4;22952:20;22948:1;22937:9;22933:17;22926:47;22990:131;23116:4;22990:131;:::i;:::-;22982:139;;22709:419;;;:::o;23134:180::-;23274:32;23270:1;23262:6;23258:14;23251:56;23134:180;:::o;23320:366::-;23462:3;23483:67;23547:2;23542:3;23483:67;:::i;:::-;23476:74;;23559:93;23648:3;23559:93;:::i;:::-;23677:2;23672:3;23668:12;23661:19;;23320:366;;;:::o;23692:419::-;23858:4;23896:2;23885:9;23881:18;23873:26;;23945:9;23939:4;23935:20;23931:1;23920:9;23916:17;23909:47;23973:131;24099:4;23973:131;:::i;:::-;23965:139;;23692:419;;;:::o;24117:166::-;24257:18;24253:1;24245:6;24241:14;24234:42;24117:166;:::o;24289:366::-;24431:3;24452:67;24516:2;24511:3;24452:67;:::i;:::-;24445:74;;24528:93;24617:3;24528:93;:::i;:::-;24646:2;24641:3;24637:12;24630:19;;24289:366;;;:::o;24661:419::-;24827:4;24865:2;24854:9;24850:18;24842:26;;24914:9;24908:4;24904:20;24900:1;24889:9;24885:17;24878:47;24942:131;25068:4;24942:131;:::i;:::-;24934:139;;24661:419;;;:::o;25086:169::-;25226:21;25222:1;25214:6;25210:14;25203:45;25086:169;:::o;25261:366::-;25403:3;25424:67;25488:2;25483:3;25424:67;:::i;:::-;25417:74;;25500:93;25589:3;25500:93;:::i;:::-;25618:2;25613:3;25609:12;25602:19;;25261:366;;;:::o;25633:419::-;25799:4;25837:2;25826:9;25822:18;25814:26;;25886:9;25880:4;25876:20;25872:1;25861:9;25857:17;25850:47;25914:131;26040:4;25914:131;:::i;:::-;25906:139;;25633:419;;;:::o;26058:191::-;26098:3;26117:20;26135:1;26117:20;:::i;:::-;26112:25;;26151:20;26169:1;26151:20;:::i;:::-;26146:25;;26194:1;26191;26187:9;26180:16;;26215:3;26212:1;26209:10;26206:36;;;26222:18;;:::i;:::-;26206:36;26058:191;;;;:::o;26255:171::-;26395:23;26391:1;26383:6;26379:14;26372:47;26255:171;:::o;26432:366::-;26574:3;26595:67;26659:2;26654:3;26595:67;:::i;:::-;26588:74;;26671:93;26760:3;26671:93;:::i;:::-;26789:2;26784:3;26780:12;26773:19;;26432:366;;;:::o;26804:419::-;26970:4;27008:2;26997:9;26993:18;26985:26;;27057:9;27051:4;27047:20;27043:1;27032:9;27028:17;27021:47;27085:131;27211:4;27085:131;:::i;:::-;27077:139;;26804:419;;;:::o;27229:233::-;27268:3;27291:24;27309:5;27291:24;:::i;:::-;27282:33;;27337:66;27330:5;27327:77;27324:103;;27407:18;;:::i;:::-;27324:103;27454:1;27447:5;27443:13;27436:20;;27229:233;;;:::o;27468:178::-;27608:30;27604:1;27596:6;27592:14;27585:54;27468:178;:::o;27652:366::-;27794:3;27815:67;27879:2;27874:3;27815:67;:::i;:::-;27808:74;;27891:93;27980:3;27891:93;:::i;:::-;28009:2;28004:3;28000:12;27993:19;;27652:366;;;:::o;28024:419::-;28190:4;28228:2;28217:9;28213:18;28205:26;;28277:9;28271:4;28267:20;28263:1;28252:9;28248:17;28241:47;28305:131;28431:4;28305:131;:::i;:::-;28297:139;;28024:419;;;:::o;28449:180::-;28589:32;28585:1;28577:6;28573:14;28566:56;28449:180;:::o;28635:366::-;28777:3;28798:67;28862:2;28857:3;28798:67;:::i;:::-;28791:74;;28874:93;28963:3;28874:93;:::i;:::-;28992:2;28987:3;28983:12;28976:19;;28635:366;;;:::o;29007:419::-;29173:4;29211:2;29200:9;29196:18;29188:26;;29260:9;29254:4;29250:20;29246:1;29235:9;29231:17;29224:47;29288:131;29414:4;29288:131;:::i;:::-;29280:139;;29007:419;;;:::o;29432:194::-;29472:4;29492:20;29510:1;29492:20;:::i;:::-;29487:25;;29526:20;29544:1;29526:20;:::i;:::-;29521:25;;29570:1;29567;29563:9;29555:17;;29594:1;29588:4;29585:11;29582:37;;;29599:18;;:::i;:::-;29582:37;29432:194;;;;:::o;29632:180::-;29680:77;29677:1;29670:88;29777:4;29774:1;29767:15;29801:4;29798:1;29791:15;29818:114;29885:6;29919:5;29913:12;29903:22;;29818:114;;;:::o;29938:184::-;30037:11;30071:6;30066:3;30059:19;30111:4;30106:3;30102:14;30087:29;;29938:184;;;;:::o;30128:132::-;30195:4;30218:3;30210:11;;30248:4;30243:3;30239:14;30231:22;;30128:132;;;:::o;30266:108::-;30343:24;30361:5;30343:24;:::i;:::-;30338:3;30331:37;30266:108;;:::o;30380:179::-;30449:10;30470:46;30512:3;30504:6;30470:46;:::i;:::-;30548:4;30543:3;30539:14;30525:28;;30380:179;;;;:::o;30565:113::-;30635:4;30667;30662:3;30658:14;30650:22;;30565:113;;;:::o;30714:732::-;30833:3;30862:54;30910:5;30862:54;:::i;:::-;30932:86;31011:6;31006:3;30932:86;:::i;:::-;30925:93;;31042:56;31092:5;31042:56;:::i;:::-;31121:7;31152:1;31137:284;31162:6;31159:1;31156:13;31137:284;;;31238:6;31232:13;31265:63;31324:3;31309:13;31265:63;:::i;:::-;31258:70;;31351:60;31404:6;31351:60;:::i;:::-;31341:70;;31197:224;31184:1;31181;31177:9;31172:14;;31137:284;;;31141:14;31437:3;31430:10;;30838:608;;;30714:732;;;;:::o;31452:831::-;31715:4;31753:3;31742:9;31738:19;31730:27;;31767:71;31835:1;31824:9;31820:17;31811:6;31767:71;:::i;:::-;31848:80;31924:2;31913:9;31909:18;31900:6;31848:80;:::i;:::-;31975:9;31969:4;31965:20;31960:2;31949:9;31945:18;31938:48;32003:108;32106:4;32097:6;32003:108;:::i;:::-;31995:116;;32121:72;32189:2;32178:9;32174:18;32165:6;32121:72;:::i;:::-;32203:73;32271:3;32260:9;32256:19;32247:6;32203:73;:::i;:::-;31452:831;;;;;;;;:::o;32289:180::-;32337:77;32334:1;32327:88;32434:4;32431:1;32424:15;32458:4;32455:1;32448:15;32475:185;32515:1;32532:20;32550:1;32532:20;:::i;:::-;32527:25;;32566:20;32584:1;32566:20;:::i;:::-;32561:25;;32605:1;32595:35;;32610:18;;:::i;:::-;32595:35;32652:1;32649;32645:9;32640:14;;32475:185;;;;:::o;32666:220::-;32806:34;32802:1;32794:6;32790:14;32783:58;32875:3;32870:2;32862:6;32858:15;32851:28;32666:220;:::o;32892:366::-;33034:3;33055:67;33119:2;33114:3;33055:67;:::i;:::-;33048:74;;33131:93;33220:3;33131:93;:::i;:::-;33249:2;33244:3;33240:12;33233:19;;32892:366;;;:::o;33264:419::-;33430:4;33468:2;33457:9;33453:18;33445:26;;33517:9;33511:4;33507:20;33503:1;33492:9;33488:17;33481:47;33545:131;33671:4;33545:131;:::i;:::-;33537:139;;33264:419;;;:::o;33689:176::-;33829:28;33825:1;33817:6;33813:14;33806:52;33689:176;:::o;33871:366::-;34013:3;34034:67;34098:2;34093:3;34034:67;:::i;:::-;34027:74;;34110:93;34199:3;34110:93;:::i;:::-;34228:2;34223:3;34219:12;34212:19;;33871:366;;;:::o;34243:419::-;34409:4;34447:2;34436:9;34432:18;34424:26;;34496:9;34490:4;34486:20;34482:1;34471:9;34467:17;34460:47;34524:131;34650:4;34524:131;:::i;:::-;34516:139;;34243:419;;;:::o;34668:177::-;34808:29;34804:1;34796:6;34792:14;34785:53;34668:177;:::o;34851:366::-;34993:3;35014:67;35078:2;35073:3;35014:67;:::i;:::-;35007:74;;35090:93;35179:3;35090:93;:::i;:::-;35208:2;35203:3;35199:12;35192:19;;34851:366;;;:::o;35223:419::-;35389:4;35427:2;35416:9;35412:18;35404:26;;35476:9;35470:4;35466:20;35462:1;35451:9;35447:17;35440:47;35504:131;35630:4;35504:131;:::i;:::-;35496:139;;35223:419;;;:::o
Swarm Source
ipfs://288213f334261a8f2b622f0ad6eecb32145ebc092fada461de0d7432d85a4839
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)