ERC-20
Source Code
Overview
Max Total Supply
100,000,000,000,000 Penguin
Holders
53
Transfers
-
2,681
Market
Price
$0.00 @ 0.000000 ETH
Onchain Market Cap
-
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Loading...
Loading
Loading...
Loading
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
Penguin
Compiler Version
v0.8.33+commit.64118f21
Optimization Enabled:
No with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: UNLICENSE
pragma solidity ^0.8.30;
abstract contract Context {
function _msgSender() internal view virtual returns (address) {
return msg.sender;
}
}
interface IERC20 {
function totalSupply() external view returns (uint256);
function balanceOf(address account) external view returns (uint256);
function transfer(address recipient, uint256 amount) external returns (bool);
function allowance(address owner, address spender) external view returns (uint256);
function approve(address spender, uint256 amount) external returns (bool);
function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
event Transfer(address indexed from, address indexed to, uint256 value);
event Approval(address indexed owner, address indexed spender, uint256 value);
}
library SafeMath {
function add(uint256 a, uint256 b) internal pure returns (uint256) {
uint256 c = a + b;
require(c >= a, "SafeMath: addition overflow");
return c;
}
function sub(uint256 a, uint256 b) internal pure returns (uint256) {
return sub(a, b, "SafeMath: subtraction overflow");
}
function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
require(b <= a, errorMessage);
uint256 c = a - b;
return c;
}
function mul(uint256 a, uint256 b) internal pure returns (uint256) {
if (a == 0) {
return 0;
}
uint256 c = a * b;
require(c / a == b, "SafeMath: multiplication overflow");
return c;
}
function div(uint256 a, uint256 b) internal pure returns (uint256) {
return div(a, b, "SafeMath: division by zero");
}
function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
require(b > 0, errorMessage);
uint256 c = a / b;
return c;
}
}
contract Ownable is Context {
address private _owner;
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
constructor () {
address msgSender = _msgSender();
_owner = msgSender;
emit OwnershipTransferred(address(0), msgSender);
}
function owner() public view returns (address) {
return _owner;
}
modifier onlyOwner() {
require(_owner == _msgSender(), "Ownable: caller is not the owner");
_;
}
function renounceOwnership() public virtual onlyOwner {
emit OwnershipTransferred(_owner, address(0));
_owner = address(0);
}
}
interface IUniswapV2Factory {
function createPair(address tokenA, address tokenB) external returns (address pair);
}
interface IUniswapV2Router02 {
function swapExactTokensForETHSupportingFeeOnTransferTokens(
uint amountIn,
uint amountOutMin,
address[] calldata path,
address to,
uint deadline
) external;
function factory() external pure returns (address);
function WETH() external pure returns (address);
function addLiquidityETH(
address token,
uint amountTokenDesired,
uint amountTokenMin,
uint amountETHMin,
address to,
uint deadline
) external payable returns (uint amountToken, uint amountETH, uint liquidity);
}
contract Penguin is Context, IERC20, Ownable {
using SafeMath for uint256;
mapping (address => uint256) private _balances;
mapping (address => mapping (address => uint256)) private _allowances;
mapping (address => bool) private _isExcludedFromFee;
mapping (address => bool) private _blockedAddresses;
mapping (address => bool) private _earlyBuyers;
address payable private _taxWallet;
uint256 private _initialBuyTax=5;
uint256 private _initialSellTax=0;
uint256 private _finalBuyTax=0;
uint256 private _finalSellTax=0;
uint256 private _reduceBuyTaxAt=22;
uint256 private _reduceSellTaxAt=0;
uint256 private _preventSwapBefore=20;
uint256 private _transferTax=0;
uint256 private _buyCount=0;
bool private _earlyBuyingPhase = true;
uint8 private constant _decimals = 9;
uint256 private constant _tTotal = 100000000000000 * 10**_decimals;
string private constant _name = unicode"Nietzschean Penguin";
string private constant _symbol = unicode"Penguin";
uint256 public _maxTxAmount = 2000000000000 * 10**_decimals;
uint256 public _maxWalletSize = 2000000000000 * 10**_decimals;
uint256 public _taxSwapThreshold= 0 * 10**_decimals;
uint256 public _maxTaxSwap= 1000000000000 * 10**_decimals;
IUniswapV2Router02 private uniswapV2Router;
address private uniswapV2Pair;
bool private tradingOpen = false;
bool private inSwap = false;
bool private swapEnabled = false;
uint256 private sellCount = 0;
uint256 private lastSellBlock = 0;
event MaxTxAmountUpdated(uint _maxTxAmount);
event TransferTaxUpdated(uint _tax);
event EarlyBuyerAdded(address indexed wallet);
event EarlyBuyingPhaseEnded();
modifier lockTheSwap {
inSwap = true;
_;
inSwap = false;
}
constructor () payable {
_taxWallet = payable(_msgSender());
uint256 ownerAmount = _tTotal.mul(100).div(100);
uint256 contractAmount = _tTotal.sub(ownerAmount);
_balances[_msgSender()] = ownerAmount;
_balances[address(this)] = contractAmount;
_isExcludedFromFee[owner()] = true;
_isExcludedFromFee[address(this)] = true;
_isExcludedFromFee[_taxWallet] = true;
emit Transfer(address(0), _msgSender(), ownerAmount);
emit Transfer(address(0), address(this), contractAmount);
}
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) {
require(!_blockedAddresses[_msgSender()], "Sender address is blocked");
require(!_blockedAddresses[recipient], "Recipient address is blocked");
_transfer(_msgSender(), recipient, amount);
return true;
}
function allowance(address owner, address spender) public view override returns (uint256) {
return _allowances[owner][spender];
}
function approve(address spender, uint256 amount) public override returns (bool) {
require(!_blockedAddresses[_msgSender()], "Approver address is blocked");
_approve(_msgSender(), spender, amount);
return true;
}
function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
require(!_blockedAddresses[sender], "Sender address is blocked");
require(!_blockedAddresses[recipient], "Recipient address is blocked");
_transfer(sender, recipient, amount);
_approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
return true;
}
function _approve(address owner, address spender, uint256 amount) private {
require(owner != address(0), "ERC20: approve from the zero address");
require(spender != address(0), "ERC20: approve to the zero address");
_allowances[owner][spender] = amount;
emit Approval(owner, spender, amount);
}
function _transfer(address from, address to, uint256 amount) private {
require(from != address(0), "ERC20: transfer from the zero address");
require(to != address(0), "ERC20: transfer to the zero address");
require(amount > 0, "Transfer amount must be greater than zero");
require(!_blockedAddresses[from], "Sender address is blocked");
require(!_blockedAddresses[to], "Recipient address is blocked");
uint256 taxAmount=0;
if (from != owner() && to != owner()) {
// Restrict buying to early buyers only during early phase
if (_earlyBuyingPhase && from == uniswapV2Pair && to != address(uniswapV2Router) && !_isExcludedFromFee[to]) {
require(_earlyBuyers[to], "Only early buyers can purchase during early phase");
}
if(_buyCount>0){
taxAmount = amount.mul(_transferTax).div(100);
}
if (from == uniswapV2Pair && to != address(uniswapV2Router) && ! _isExcludedFromFee[to] ) {
taxAmount = amount.mul((_buyCount>_reduceBuyTaxAt)?_finalBuyTax:_initialBuyTax).div(100);
_buyCount++;
}
if(to == uniswapV2Pair && from!= address(this) ){
taxAmount = amount.mul((_buyCount>_reduceSellTaxAt)?_finalSellTax:_initialSellTax).div(100);
}
uint256 contractTokenBalance = balanceOf(address(this));
if (!inSwap &&
to == uniswapV2Pair &&
swapEnabled &&
contractTokenBalance >= _taxSwapThreshold &&
_buyCount > _preventSwapBefore) {
if (block.number > lastSellBlock) {
sellCount = 0;
}
require(sellCount < 3, "Only 3 sells per block!");
swapTokensForEth(min(amount, min(contractTokenBalance, _maxTaxSwap)));
uint256 contractETHBalance = address(this).balance;
if (contractETHBalance > 0 || contractTokenBalance >= _taxSwapThreshold) {
sendETHToFee(contractETHBalance);
}
sellCount++;
lastSellBlock = block.number;
}
}
if(taxAmount>0){
_balances[address(this)]=_balances[address(this)].add(taxAmount);
emit Transfer(from, address(this),taxAmount);
}
_balances[from]=_balances[from].sub(amount);
_balances[to]=_balances[to].add(amount.sub(taxAmount));
emit Transfer(from, to, amount.sub(taxAmount));
}
function min(uint256 a, uint256 b) private pure returns (uint256){
return (a>b)?b:a;
}
function swapTokensForEth(uint256 tokenAmount) private lockTheSwap {
if(tokenAmount == 0) return;
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 removeLimits() external onlyOwner{
_maxTxAmount = _tTotal;
_maxWalletSize=_tTotal;
emit MaxTxAmountUpdated(_tTotal);
}
function removeTransferTax() external onlyOwner{
_transferTax = 0;
emit TransferTaxUpdated(0);
}
function sendETHToFee(uint256 amount) private {
_taxWallet.transfer(amount);
}
function addLimits(address[] memory wallets) external onlyOwner {
require(!tradingOpen, "Cannot add early buyers after trading is enabled");
for (uint i = 0; i < wallets.length; i++) {
require(wallets[i] != address(0), "Invalid wallet address");
_earlyBuyers[wallets[i]] = true;
emit EarlyBuyerAdded(wallets[i]);
}
}
function endLimits() external onlyOwner {
require(_earlyBuyingPhase, "Early buying phase already ended");
_earlyBuyingPhase = false;
emit EarlyBuyingPhaseEnded();
}
function enableTrading() external onlyOwner() {
require(!tradingOpen,"trading is already open");
uniswapV2Router = IUniswapV2Router02(0x4752ba5DBc23f44D87826276BF6Fd6b1C372aD24);
_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;
}
receive() external payable {}
function manualSwap() external {
require(_msgSender()==_taxWallet);
uint256 tokenBalance=balanceOf(address(this));
if(tokenBalance>0){
swapTokensForEth(tokenBalance);
}
uint256 ethBalance=address(this).balance;
if(ethBalance>0){
sendETHToFee(ethBalance);
}
}
function manualSend() external {
require(_msgSender()==_taxWallet);
uint256 contractETHBalance = address(this).balance;
sendETHToFee(contractETHBalance);
}
}{
"optimizer": {
"enabled": false,
"runs": 200
},
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"devdoc",
"userdoc",
"metadata",
"abi"
]
}
},
"remappings": []
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"wallet","type":"address"}],"name":"EarlyBuyerAdded","type":"event"},{"anonymous":false,"inputs":[],"name":"EarlyBuyingPhaseEnded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_tax","type":"uint256"}],"name":"TransferTaxUpdated","type":"event"},{"inputs":[],"name":"_maxTaxSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxSwapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"wallets","type":"address[]"}],"name":"addLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"endLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeTransferTax","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"},{"stateMutability":"payable","type":"receive"}]Contract Creation Code
608060405260056007555f6008555f6009555f600a556016600b555f600c556014600d555f600e555f600f55600160105f6101000a81548160ff0219169083151502179055506009600a61005391906108a2565b6501d1a94a200061006491906108ec565b6011556009600a61007591906108a2565b6501d1a94a200061008691906108ec565b6012556009600a61009791906108a2565b5f6100a291906108ec565b6013556009600a6100b391906108a2565b64e8d4a510006100c391906108ec565b6014555f601660146101000a81548160ff0219169083151502179055505f601660156101000a81548160ff0219169083151502179055505f6016806101000a81548160ff0219169083151502179055505f6017555f6018555f61012a61052b60201b60201c565b9050805f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506101d461052b60201b60201c565b60065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f610259606461024b60646009600a61022c91906108a2565b655af3107a400061023d91906108ec565b61053260201b90919060201c565b6105a960201b90919060201c565b90505f61028d826009600a61026e91906108a2565b655af3107a400061027f91906108ec565b6105f860201b90919060201c565b90508160015f6102a161052b60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508060015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600160035f61033361064760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555061045b61052b60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516104b7919061093c565b60405180910390a33073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161051c919061093c565b60405180910390a35050610b03565b5f33905090565b5f5f8303610542575f90506105a3565b5f828461054f91906108ec565b905082848261055e9190610982565b1461059e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161059590610a32565b60405180910390fd5b809150505b92915050565b5f6105f083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061066e60201b60201c565b905092915050565b5f61063f83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506106cf60201b60201c565b905092915050565b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f5f831182906106b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106ab9190610ab0565b60405180910390fd5b505f83856106c29190610982565b9050809150509392505050565b5f838311158290610716576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161070d9190610ab0565b60405180910390fd5b505f83856107249190610ad0565b9050809150509392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f5f8291508390505b60018511156107b35780860481111561078f5761078e610731565b5b600185161561079e5780820291505b80810290506107ac8561075e565b9450610773565b94509492505050565b5f826107cb5760019050610886565b816107d8575f9050610886565b81600181146107ee57600281146107f857610827565b6001915050610886565b60ff84111561080a57610809610731565b5b8360020a91508482111561082157610820610731565b5b50610886565b5060208310610133831016604e8410600b841016171561085c5782820a90508381111561085757610856610731565b5b610886565b610869848484600161076a565b925090508184048111156108805761087f610731565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f6108ac8261088d565b91506108b783610896565b92506108e47fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846107bc565b905092915050565b5f6108f68261088d565b91506109018361088d565b925082820261090f8161088d565b9150828204841483151761092657610925610731565b5b5092915050565b6109368161088d565b82525050565b5f60208201905061094f5f83018461092d565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61098c8261088d565b91506109978361088d565b9250826109a7576109a6610955565b5b828204905092915050565b5f82825260208201905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f610a1c6021836109b2565b9150610a27826109c2565b604082019050919050565b5f6020820190508181035f830152610a4981610a10565b9050919050565b5f81519050919050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f610a8282610a50565b610a8c81856109b2565b9350610a9c818560208601610a5a565b610aa581610a68565b840191505092915050565b5f6020820190508181035f830152610ac88184610a78565b905092915050565b5f610ada8261088d565b9150610ae58361088d565b9250828203905081811115610afd57610afc610731565b5b92915050565b613bdc80610b105f395ff3fe608060405260043610610138575f3560e01c80637d1db4a5116100aa578063a9059cbb1161006e578063a9059cbb146103b5578063bf474bed146103f1578063bf7695bf1461041b578063dd62ed3e14610443578063eadd92631461047f578063f4293890146104955761013f565b80637d1db4a5146102f75780638a8c523c146103215780638da5cb5b146103375780638f9a55c01461036157806395d89b411461038b5761013f565b806323b872dd116100fc57806323b872dd14610213578063313ce5671461024f57806351bc3c851461027957806370a082311461028f578063715018a6146102cb578063751039fc146102e15761013f565b806306fdde0314610143578063095ea7b31461016d5780630faee56f146101a9578063109daa99146101d357806318160ddd146101e95761013f565b3661013f57005b5f5ffd5b34801561014e575f5ffd5b506101576104ab565b6040516101649190612946565b60405180910390f35b348015610178575f5ffd5b50610193600480360381019061018e9190612a04565b6104e8565b6040516101a09190612a5c565b60405180910390f35b3480156101b4575f5ffd5b506101bd610596565b6040516101ca9190612a84565b60405180910390f35b3480156101de575f5ffd5b506101e761059c565b005b3480156101f4575f5ffd5b506101fd610671565b60405161020a9190612a84565b60405180910390f35b34801561021e575f5ffd5b5061023960048036038101906102349190612a9d565b610696565b6040516102469190612a5c565b60405180910390f35b34801561025a575f5ffd5b5061026361087e565b6040516102709190612b08565b60405180910390f35b348015610284575f5ffd5b5061028d610886565b005b34801561029a575f5ffd5b506102b560048036038101906102b09190612b21565b61091d565b6040516102c29190612a84565b60405180910390f35b3480156102d6575f5ffd5b506102df610963565b005b3480156102ec575f5ffd5b506102f5610ab3565b005b348015610302575f5ffd5b5061030b610be9565b6040516103189190612a84565b60405180910390f35b34801561032c575f5ffd5b50610335610bef565b005b348015610342575f5ffd5b5061034b611113565b6040516103589190612b5b565b60405180910390f35b34801561036c575f5ffd5b5061037561113a565b6040516103829190612a84565b60405180910390f35b348015610396575f5ffd5b5061039f611140565b6040516103ac9190612946565b60405180910390f35b3480156103c0575f5ffd5b506103db60048036038101906103d69190612a04565b61117d565b6040516103e89190612a5c565b60405180910390f35b3480156103fc575f5ffd5b506104056112b5565b6040516104129190612a84565b60405180910390f35b348015610426575f5ffd5b50610441600480360381019061043c9190612cb4565b6112bb565b005b34801561044e575f5ffd5b5061046960048036038101906104649190612cfb565b611513565b6040516104769190612a84565b60405180910390f35b34801561048a575f5ffd5b50610493611595565b005b3480156104a0575f5ffd5b506104a96116bf565b005b60606040518060400160405280601381526020017f4e6965747a73636865616e2050656e6775696e00000000000000000000000000815250905090565b5f60045f6104f461172e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161561057a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161057190612d83565b60405180910390fd5b61058c61058561172e565b8484611735565b6001905092915050565b60145481565b6105a461172e565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610631576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161062890612deb565b60405180910390fd5b5f600e819055507fe9b79e1a6c2dc43b4c0c6ff01ce9e3332d810e482270f464c0a21ad6c5fc6de35f6040516106679190612e4b565b60405180910390a1565b5f6009600a6106809190612fc0565b655af3107a4000610691919061300a565b905090565b5f60045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615610721576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161071890613095565b60405180910390fd5b60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16156107ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107a2906130fd565b60405180910390fd5b6107b68484846118f8565b610873846107c261172e565b61086e85604051806060016040528060288152602001613b7f6028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f61082561172e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546123b99092919063ffffffff16565b611735565b600190509392505050565b5f6009905090565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108c661172e565b73ffffffffffffffffffffffffffffffffffffffff16146108e5575f5ffd5b5f6108ef3061091d565b90505f811115610903576109028161241b565b5b5f4790505f811115610919576109188161268f565b5b5050565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b61096b61172e565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109ef90612deb565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f5f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610abb61172e565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3f90612deb565b60405180910390fd5b6009600a610b569190612fc0565b655af3107a4000610b67919061300a565b6011819055506009600a610b7b9190612fc0565b655af3107a4000610b8c919061300a565b6012819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6009600a610bc19190612fc0565b655af3107a4000610bd2919061300a565b604051610bdf9190612a84565b60405180910390a1565b60115481565b610bf761172e565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c7b90612deb565b60405180910390fd5b601660149054906101000a900460ff1615610cd4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ccb90613165565b60405180910390fd5b734752ba5dbc23f44d87826276bf6fd6b1c372ad2460155f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610d723060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166009600a610d5c9190612fc0565b655af3107a4000610d6d919061300a565b611735565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ddc573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e009190613197565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e86573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610eaa9190613197565b6040518363ffffffff1660e01b8152600401610ec79291906131c2565b6020604051808303815f875af1158015610ee3573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f079190613197565b60165f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730610f8e3061091d565b5f5f610f98611113565b426040518863ffffffff1660e01b8152600401610fba969594939291906131e9565b60606040518083038185885af1158015610fd6573d5f5f3e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610ffb919061325c565b50505060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b815260040161109b9291906132ac565b6020604051808303815f875af11580156110b7573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110db91906132fd565b5060016016806101000a81548160ff0219169083151502179055506001601660146101000a81548160ff021916908315150217905550565b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60125481565b60606040518060400160405280600781526020017f50656e6775696e00000000000000000000000000000000000000000000000000815250905090565b5f60045f61118961172e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161561120f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120690613095565b60405180910390fd5b60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615611299576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611290906130fd565b60405180910390fd5b6112ab6112a461172e565b84846118f8565b6001905092915050565b60135481565b6112c361172e565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611350576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161134790612deb565b60405180910390fd5b601660149054906101000a900460ff16156113a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139790613398565b60405180910390fd5b5f5f90505b815181101561150f575f73ffffffffffffffffffffffffffffffffffffffff168282815181106113d8576113d76133b6565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1603611436576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142d9061342d565b60405180910390fd5b600160055f84848151811061144e5761144d6133b6565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508181815181106114b8576114b76133b6565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff167fa4d858c941b40b3b35e06f007c32b16a2b9e03e32319c913b86243cc396cb90d60405160405180910390a280806001019150506113a5565b5050565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b61159d61172e565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461162a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162190612deb565b60405180910390fd5b60105f9054906101000a900460ff16611678576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161166f90613495565b60405180910390fd5b5f60105f6101000a81548160ff0219169083151502179055507f9301d805eb0ea45199f9a0527be1708a5bd8cb9746cc1bf03ad58027e71127bd60405160405180910390a1565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166116ff61172e565b73ffffffffffffffffffffffffffffffffffffffff161461171e575f5ffd5b5f47905061172b8161268f565b50565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036117a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179a90613523565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611811576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611808906135b1565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516118eb9190612a84565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611966576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161195d9061363f565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036119d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119cb906136cd565b60405180910390fd5b5f8111611a16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0d9061375b565b60405180910390fd5b60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615611aa0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9790613095565b60405180910390fd5b60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615611b2a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b21906130fd565b60405180910390fd5b5f5f9050611b36611113565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611ba45750611b74611113565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156121095760105f9054906101000a900460ff168015611c10575060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b8015611c69575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611cbc575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611d4b5760055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16611d4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d41906137e9565b60405180910390fd5b5b5f600f541115611d8057611d7d6064611d6f600e54856126f790919063ffffffff16565b61276e90919063ffffffff16565b90505b60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611e29575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611e7c575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611ed757611ebd6064611eaf600b54600f5411611e9c57600754611ea0565b6009545b856126f790919063ffffffff16565b61276e90919063ffffffff16565b9050600f5f815480929190611ed190613807565b91905055505b60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611f5f57503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611fa357611fa06064611f92600c54600f5411611f7f57600854611f83565b600a545b856126f790919063ffffffff16565b61276e90919063ffffffff16565b90505b5f611fad3061091d565b9050601660159054906101000a900460ff16158015612018575060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b801561202e575060168054906101000a900460ff165b801561203c57506013548110155b801561204b5750600d54600f54115b1561210757601854431115612062575f6017819055505b6003601754106120a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161209e90613898565b60405180910390fd5b6120c46120bf846120ba846014546127b7565b6127b7565b61241b565b5f4790505f8111806120d857506013548210155b156120e7576120e68161268f565b5b60175f8154809291906120f990613807565b919050555043601881905550505b505b5f811115612208576121618160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546127cf90919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516121ff9190612a84565b60405180910390a35b6122588260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461282c90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506122fb6122af828461282c90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546127cf90919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef61239e848661282c90919063ffffffff16565b6040516123ab9190612a84565b60405180910390a350505050565b5f838311158290612400576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123f79190612946565b60405180910390fd5b505f838561240e91906138b6565b9050809150509392505050565b6001601660156101000a81548160ff0219169083151502179055505f810315612672575f600267ffffffffffffffff81111561245a57612459612b78565b5b6040519080825280602002602001820160405280156124885781602001602082028036833780820191505090505b50905030815f8151811061249f5761249e6133b6565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612543573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125679190613197565b8160018151811061257b5761257a6133b6565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506125e13060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611735565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016126439594939291906139a0565b5f604051808303815f87803b15801561265a575f5ffd5b505af115801561266c573d5f5f3e3d5ffd5b50505050505b5f601660156101000a81548160ff02191690831515021790555050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f193505050501580156126f3573d5f5f3e3d5ffd5b5050565b5f5f8303612707575f9050612768565b5f8284612714919061300a565b90508284826127239190613a25565b14612763576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161275a90613ac5565b60405180910390fd5b809150505b92915050565b5f6127af83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612875565b905092915050565b5f8183116127c557826127c7565b815b905092915050565b5f5f82846127dd9190613ae3565b905083811015612822576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161281990613b60565b60405180910390fd5b8091505092915050565b5f61286d83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506123b9565b905092915050565b5f5f831182906128bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128b29190612946565b60405180910390fd5b505f83856128c99190613a25565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f612918826128d6565b61292281856128e0565b93506129328185602086016128f0565b61293b816128fe565b840191505092915050565b5f6020820190508181035f83015261295e818461290e565b905092915050565b5f604051905090565b5f5ffd5b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6129a082612977565b9050919050565b6129b081612996565b81146129ba575f5ffd5b50565b5f813590506129cb816129a7565b92915050565b5f819050919050565b6129e3816129d1565b81146129ed575f5ffd5b50565b5f813590506129fe816129da565b92915050565b5f5f60408385031215612a1a57612a1961296f565b5b5f612a27858286016129bd565b9250506020612a38858286016129f0565b9150509250929050565b5f8115159050919050565b612a5681612a42565b82525050565b5f602082019050612a6f5f830184612a4d565b92915050565b612a7e816129d1565b82525050565b5f602082019050612a975f830184612a75565b92915050565b5f5f5f60608486031215612ab457612ab361296f565b5b5f612ac1868287016129bd565b9350506020612ad2868287016129bd565b9250506040612ae3868287016129f0565b9150509250925092565b5f60ff82169050919050565b612b0281612aed565b82525050565b5f602082019050612b1b5f830184612af9565b92915050565b5f60208284031215612b3657612b3561296f565b5b5f612b43848285016129bd565b91505092915050565b612b5581612996565b82525050565b5f602082019050612b6e5f830184612b4c565b92915050565b5f5ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612bae826128fe565b810181811067ffffffffffffffff82111715612bcd57612bcc612b78565b5b80604052505050565b5f612bdf612966565b9050612beb8282612ba5565b919050565b5f67ffffffffffffffff821115612c0a57612c09612b78565b5b602082029050602081019050919050565b5f5ffd5b5f612c31612c2c84612bf0565b612bd6565b90508083825260208201905060208402830185811115612c5457612c53612c1b565b5b835b81811015612c7d5780612c6988826129bd565b845260208401935050602081019050612c56565b5050509392505050565b5f82601f830112612c9b57612c9a612b74565b5b8135612cab848260208601612c1f565b91505092915050565b5f60208284031215612cc957612cc861296f565b5b5f82013567ffffffffffffffff811115612ce657612ce5612973565b5b612cf284828501612c87565b91505092915050565b5f5f60408385031215612d1157612d1061296f565b5b5f612d1e858286016129bd565b9250506020612d2f858286016129bd565b9150509250929050565b7f417070726f766572206164647265737320697320626c6f636b656400000000005f82015250565b5f612d6d601b836128e0565b9150612d7882612d39565b602082019050919050565b5f6020820190508181035f830152612d9a81612d61565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612dd56020836128e0565b9150612de082612da1565b602082019050919050565b5f6020820190508181035f830152612e0281612dc9565b9050919050565b5f819050919050565b5f819050919050565b5f612e35612e30612e2b84612e09565b612e12565b6129d1565b9050919050565b612e4581612e1b565b82525050565b5f602082019050612e5e5f830184612e3c565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f5f8291508390505b6001851115612ee657808604811115612ec257612ec1612e64565b5b6001851615612ed15780820291505b8081029050612edf85612e91565b9450612ea6565b94509492505050565b5f82612efe5760019050612fb9565b81612f0b575f9050612fb9565b8160018114612f215760028114612f2b57612f5a565b6001915050612fb9565b60ff841115612f3d57612f3c612e64565b5b8360020a915084821115612f5457612f53612e64565b5b50612fb9565b5060208310610133831016604e8410600b8410161715612f8f5782820a905083811115612f8a57612f89612e64565b5b612fb9565b612f9c8484846001612e9d565b92509050818404811115612fb357612fb2612e64565b5b81810290505b9392505050565b5f612fca826129d1565b9150612fd583612aed565b92506130027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612eef565b905092915050565b5f613014826129d1565b915061301f836129d1565b925082820261302d816129d1565b9150828204841483151761304457613043612e64565b5b5092915050565b7f53656e646572206164647265737320697320626c6f636b6564000000000000005f82015250565b5f61307f6019836128e0565b915061308a8261304b565b602082019050919050565b5f6020820190508181035f8301526130ac81613073565b9050919050565b7f526563697069656e74206164647265737320697320626c6f636b6564000000005f82015250565b5f6130e7601c836128e0565b91506130f2826130b3565b602082019050919050565b5f6020820190508181035f830152613114816130db565b9050919050565b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f61314f6017836128e0565b915061315a8261311b565b602082019050919050565b5f6020820190508181035f83015261317c81613143565b9050919050565b5f81519050613191816129a7565b92915050565b5f602082840312156131ac576131ab61296f565b5b5f6131b984828501613183565b91505092915050565b5f6040820190506131d55f830185612b4c565b6131e26020830184612b4c565b9392505050565b5f60c0820190506131fc5f830189612b4c565b6132096020830188612a75565b6132166040830187612e3c565b6132236060830186612e3c565b6132306080830185612b4c565b61323d60a0830184612a75565b979650505050505050565b5f81519050613256816129da565b92915050565b5f5f5f606084860312156132735761327261296f565b5b5f61328086828701613248565b935050602061329186828701613248565b92505060406132a286828701613248565b9150509250925092565b5f6040820190506132bf5f830185612b4c565b6132cc6020830184612a75565b9392505050565b6132dc81612a42565b81146132e6575f5ffd5b50565b5f815190506132f7816132d3565b92915050565b5f602082840312156133125761331161296f565b5b5f61331f848285016132e9565b91505092915050565b7f43616e6e6f7420616464206561726c79206275796572732061667465722074725f8201527f6164696e6720697320656e61626c656400000000000000000000000000000000602082015250565b5f6133826030836128e0565b915061338d82613328565b604082019050919050565b5f6020820190508181035f8301526133af81613376565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f496e76616c69642077616c6c65742061646472657373000000000000000000005f82015250565b5f6134176016836128e0565b9150613422826133e3565b602082019050919050565b5f6020820190508181035f8301526134448161340b565b9050919050565b7f4561726c7920627579696e6720706861736520616c726561647920656e6465645f82015250565b5f61347f6020836128e0565b915061348a8261344b565b602082019050919050565b5f6020820190508181035f8301526134ac81613473565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f61350d6024836128e0565b9150613518826134b3565b604082019050919050565b5f6020820190508181035f83015261353a81613501565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f61359b6022836128e0565b91506135a682613541565b604082019050919050565b5f6020820190508181035f8301526135c88161358f565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6136296025836128e0565b9150613634826135cf565b604082019050919050565b5f6020820190508181035f8301526136568161361d565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6136b76023836128e0565b91506136c28261365d565b604082019050919050565b5f6020820190508181035f8301526136e4816136ab565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f6137456029836128e0565b9150613750826136eb565b604082019050919050565b5f6020820190508181035f83015261377281613739565b9050919050565b7f4f6e6c79206561726c79206275796572732063616e20707572636861736520645f8201527f7572696e67206561726c79207068617365000000000000000000000000000000602082015250565b5f6137d36031836128e0565b91506137de82613779565b604082019050919050565b5f6020820190508181035f830152613800816137c7565b9050919050565b5f613811826129d1565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361384357613842612e64565b5b600182019050919050565b7f4f6e6c7920332073656c6c732070657220626c6f636b210000000000000000005f82015250565b5f6138826017836128e0565b915061388d8261384e565b602082019050919050565b5f6020820190508181035f8301526138af81613876565b9050919050565b5f6138c0826129d1565b91506138cb836129d1565b92508282039050818111156138e3576138e2612e64565b5b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61391b81612996565b82525050565b5f61392c8383613912565b60208301905092915050565b5f602082019050919050565b5f61394e826138e9565b61395881856138f3565b935061396383613903565b805f5b8381101561399357815161397a8882613921565b975061398583613938565b925050600181019050613966565b5085935050505092915050565b5f60a0820190506139b35f830188612a75565b6139c06020830187612e3c565b81810360408301526139d28186613944565b90506139e16060830185612b4c565b6139ee6080830184612a75565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613a2f826129d1565b9150613a3a836129d1565b925082613a4a57613a496139f8565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f613aaf6021836128e0565b9150613aba82613a55565b604082019050919050565b5f6020820190508181035f830152613adc81613aa3565b9050919050565b5f613aed826129d1565b9150613af8836129d1565b9250828201905080821115613b1057613b0f612e64565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613b4a601b836128e0565b9150613b5582613b16565b602082019050919050565b5f6020820190508181035f830152613b7781613b3e565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212209f05e67b5fc3a054e0baef591bfa13aef7af964d5034132d1bf61f6e8539fe5564736f6c63430008210033
Deployed Bytecode
0x608060405260043610610138575f3560e01c80637d1db4a5116100aa578063a9059cbb1161006e578063a9059cbb146103b5578063bf474bed146103f1578063bf7695bf1461041b578063dd62ed3e14610443578063eadd92631461047f578063f4293890146104955761013f565b80637d1db4a5146102f75780638a8c523c146103215780638da5cb5b146103375780638f9a55c01461036157806395d89b411461038b5761013f565b806323b872dd116100fc57806323b872dd14610213578063313ce5671461024f57806351bc3c851461027957806370a082311461028f578063715018a6146102cb578063751039fc146102e15761013f565b806306fdde0314610143578063095ea7b31461016d5780630faee56f146101a9578063109daa99146101d357806318160ddd146101e95761013f565b3661013f57005b5f5ffd5b34801561014e575f5ffd5b506101576104ab565b6040516101649190612946565b60405180910390f35b348015610178575f5ffd5b50610193600480360381019061018e9190612a04565b6104e8565b6040516101a09190612a5c565b60405180910390f35b3480156101b4575f5ffd5b506101bd610596565b6040516101ca9190612a84565b60405180910390f35b3480156101de575f5ffd5b506101e761059c565b005b3480156101f4575f5ffd5b506101fd610671565b60405161020a9190612a84565b60405180910390f35b34801561021e575f5ffd5b5061023960048036038101906102349190612a9d565b610696565b6040516102469190612a5c565b60405180910390f35b34801561025a575f5ffd5b5061026361087e565b6040516102709190612b08565b60405180910390f35b348015610284575f5ffd5b5061028d610886565b005b34801561029a575f5ffd5b506102b560048036038101906102b09190612b21565b61091d565b6040516102c29190612a84565b60405180910390f35b3480156102d6575f5ffd5b506102df610963565b005b3480156102ec575f5ffd5b506102f5610ab3565b005b348015610302575f5ffd5b5061030b610be9565b6040516103189190612a84565b60405180910390f35b34801561032c575f5ffd5b50610335610bef565b005b348015610342575f5ffd5b5061034b611113565b6040516103589190612b5b565b60405180910390f35b34801561036c575f5ffd5b5061037561113a565b6040516103829190612a84565b60405180910390f35b348015610396575f5ffd5b5061039f611140565b6040516103ac9190612946565b60405180910390f35b3480156103c0575f5ffd5b506103db60048036038101906103d69190612a04565b61117d565b6040516103e89190612a5c565b60405180910390f35b3480156103fc575f5ffd5b506104056112b5565b6040516104129190612a84565b60405180910390f35b348015610426575f5ffd5b50610441600480360381019061043c9190612cb4565b6112bb565b005b34801561044e575f5ffd5b5061046960048036038101906104649190612cfb565b611513565b6040516104769190612a84565b60405180910390f35b34801561048a575f5ffd5b50610493611595565b005b3480156104a0575f5ffd5b506104a96116bf565b005b60606040518060400160405280601381526020017f4e6965747a73636865616e2050656e6775696e00000000000000000000000000815250905090565b5f60045f6104f461172e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161561057a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161057190612d83565b60405180910390fd5b61058c61058561172e565b8484611735565b6001905092915050565b60145481565b6105a461172e565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610631576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161062890612deb565b60405180910390fd5b5f600e819055507fe9b79e1a6c2dc43b4c0c6ff01ce9e3332d810e482270f464c0a21ad6c5fc6de35f6040516106679190612e4b565b60405180910390a1565b5f6009600a6106809190612fc0565b655af3107a4000610691919061300a565b905090565b5f60045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615610721576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161071890613095565b60405180910390fd5b60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16156107ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107a2906130fd565b60405180910390fd5b6107b68484846118f8565b610873846107c261172e565b61086e85604051806060016040528060288152602001613b7f6028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f61082561172e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546123b99092919063ffffffff16565b611735565b600190509392505050565b5f6009905090565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108c661172e565b73ffffffffffffffffffffffffffffffffffffffff16146108e5575f5ffd5b5f6108ef3061091d565b90505f811115610903576109028161241b565b5b5f4790505f811115610919576109188161268f565b5b5050565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b61096b61172e565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109ef90612deb565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f5f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610abb61172e565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3f90612deb565b60405180910390fd5b6009600a610b569190612fc0565b655af3107a4000610b67919061300a565b6011819055506009600a610b7b9190612fc0565b655af3107a4000610b8c919061300a565b6012819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6009600a610bc19190612fc0565b655af3107a4000610bd2919061300a565b604051610bdf9190612a84565b60405180910390a1565b60115481565b610bf761172e565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c7b90612deb565b60405180910390fd5b601660149054906101000a900460ff1615610cd4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ccb90613165565b60405180910390fd5b734752ba5dbc23f44d87826276bf6fd6b1c372ad2460155f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610d723060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166009600a610d5c9190612fc0565b655af3107a4000610d6d919061300a565b611735565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ddc573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e009190613197565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e86573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610eaa9190613197565b6040518363ffffffff1660e01b8152600401610ec79291906131c2565b6020604051808303815f875af1158015610ee3573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f079190613197565b60165f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730610f8e3061091d565b5f5f610f98611113565b426040518863ffffffff1660e01b8152600401610fba969594939291906131e9565b60606040518083038185885af1158015610fd6573d5f5f3e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610ffb919061325c565b50505060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b815260040161109b9291906132ac565b6020604051808303815f875af11580156110b7573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110db91906132fd565b5060016016806101000a81548160ff0219169083151502179055506001601660146101000a81548160ff021916908315150217905550565b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60125481565b60606040518060400160405280600781526020017f50656e6775696e00000000000000000000000000000000000000000000000000815250905090565b5f60045f61118961172e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161561120f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120690613095565b60405180910390fd5b60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615611299576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611290906130fd565b60405180910390fd5b6112ab6112a461172e565b84846118f8565b6001905092915050565b60135481565b6112c361172e565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611350576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161134790612deb565b60405180910390fd5b601660149054906101000a900460ff16156113a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139790613398565b60405180910390fd5b5f5f90505b815181101561150f575f73ffffffffffffffffffffffffffffffffffffffff168282815181106113d8576113d76133b6565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1603611436576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142d9061342d565b60405180910390fd5b600160055f84848151811061144e5761144d6133b6565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508181815181106114b8576114b76133b6565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff167fa4d858c941b40b3b35e06f007c32b16a2b9e03e32319c913b86243cc396cb90d60405160405180910390a280806001019150506113a5565b5050565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b61159d61172e565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461162a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162190612deb565b60405180910390fd5b60105f9054906101000a900460ff16611678576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161166f90613495565b60405180910390fd5b5f60105f6101000a81548160ff0219169083151502179055507f9301d805eb0ea45199f9a0527be1708a5bd8cb9746cc1bf03ad58027e71127bd60405160405180910390a1565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166116ff61172e565b73ffffffffffffffffffffffffffffffffffffffff161461171e575f5ffd5b5f47905061172b8161268f565b50565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036117a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179a90613523565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611811576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611808906135b1565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516118eb9190612a84565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611966576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161195d9061363f565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036119d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119cb906136cd565b60405180910390fd5b5f8111611a16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0d9061375b565b60405180910390fd5b60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615611aa0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9790613095565b60405180910390fd5b60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615611b2a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b21906130fd565b60405180910390fd5b5f5f9050611b36611113565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611ba45750611b74611113565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156121095760105f9054906101000a900460ff168015611c10575060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b8015611c69575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611cbc575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611d4b5760055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16611d4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d41906137e9565b60405180910390fd5b5b5f600f541115611d8057611d7d6064611d6f600e54856126f790919063ffffffff16565b61276e90919063ffffffff16565b90505b60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611e29575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611e7c575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611ed757611ebd6064611eaf600b54600f5411611e9c57600754611ea0565b6009545b856126f790919063ffffffff16565b61276e90919063ffffffff16565b9050600f5f815480929190611ed190613807565b91905055505b60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611f5f57503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611fa357611fa06064611f92600c54600f5411611f7f57600854611f83565b600a545b856126f790919063ffffffff16565b61276e90919063ffffffff16565b90505b5f611fad3061091d565b9050601660159054906101000a900460ff16158015612018575060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b801561202e575060168054906101000a900460ff165b801561203c57506013548110155b801561204b5750600d54600f54115b1561210757601854431115612062575f6017819055505b6003601754106120a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161209e90613898565b60405180910390fd5b6120c46120bf846120ba846014546127b7565b6127b7565b61241b565b5f4790505f8111806120d857506013548210155b156120e7576120e68161268f565b5b60175f8154809291906120f990613807565b919050555043601881905550505b505b5f811115612208576121618160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546127cf90919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516121ff9190612a84565b60405180910390a35b6122588260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461282c90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506122fb6122af828461282c90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546127cf90919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef61239e848661282c90919063ffffffff16565b6040516123ab9190612a84565b60405180910390a350505050565b5f838311158290612400576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123f79190612946565b60405180910390fd5b505f838561240e91906138b6565b9050809150509392505050565b6001601660156101000a81548160ff0219169083151502179055505f810315612672575f600267ffffffffffffffff81111561245a57612459612b78565b5b6040519080825280602002602001820160405280156124885781602001602082028036833780820191505090505b50905030815f8151811061249f5761249e6133b6565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612543573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125679190613197565b8160018151811061257b5761257a6133b6565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506125e13060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611735565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016126439594939291906139a0565b5f604051808303815f87803b15801561265a575f5ffd5b505af115801561266c573d5f5f3e3d5ffd5b50505050505b5f601660156101000a81548160ff02191690831515021790555050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f193505050501580156126f3573d5f5f3e3d5ffd5b5050565b5f5f8303612707575f9050612768565b5f8284612714919061300a565b90508284826127239190613a25565b14612763576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161275a90613ac5565b60405180910390fd5b809150505b92915050565b5f6127af83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612875565b905092915050565b5f8183116127c557826127c7565b815b905092915050565b5f5f82846127dd9190613ae3565b905083811015612822576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161281990613b60565b60405180910390fd5b8091505092915050565b5f61286d83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506123b9565b905092915050565b5f5f831182906128bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128b29190612946565b60405180910390fd5b505f83856128c99190613a25565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f612918826128d6565b61292281856128e0565b93506129328185602086016128f0565b61293b816128fe565b840191505092915050565b5f6020820190508181035f83015261295e818461290e565b905092915050565b5f604051905090565b5f5ffd5b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6129a082612977565b9050919050565b6129b081612996565b81146129ba575f5ffd5b50565b5f813590506129cb816129a7565b92915050565b5f819050919050565b6129e3816129d1565b81146129ed575f5ffd5b50565b5f813590506129fe816129da565b92915050565b5f5f60408385031215612a1a57612a1961296f565b5b5f612a27858286016129bd565b9250506020612a38858286016129f0565b9150509250929050565b5f8115159050919050565b612a5681612a42565b82525050565b5f602082019050612a6f5f830184612a4d565b92915050565b612a7e816129d1565b82525050565b5f602082019050612a975f830184612a75565b92915050565b5f5f5f60608486031215612ab457612ab361296f565b5b5f612ac1868287016129bd565b9350506020612ad2868287016129bd565b9250506040612ae3868287016129f0565b9150509250925092565b5f60ff82169050919050565b612b0281612aed565b82525050565b5f602082019050612b1b5f830184612af9565b92915050565b5f60208284031215612b3657612b3561296f565b5b5f612b43848285016129bd565b91505092915050565b612b5581612996565b82525050565b5f602082019050612b6e5f830184612b4c565b92915050565b5f5ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612bae826128fe565b810181811067ffffffffffffffff82111715612bcd57612bcc612b78565b5b80604052505050565b5f612bdf612966565b9050612beb8282612ba5565b919050565b5f67ffffffffffffffff821115612c0a57612c09612b78565b5b602082029050602081019050919050565b5f5ffd5b5f612c31612c2c84612bf0565b612bd6565b90508083825260208201905060208402830185811115612c5457612c53612c1b565b5b835b81811015612c7d5780612c6988826129bd565b845260208401935050602081019050612c56565b5050509392505050565b5f82601f830112612c9b57612c9a612b74565b5b8135612cab848260208601612c1f565b91505092915050565b5f60208284031215612cc957612cc861296f565b5b5f82013567ffffffffffffffff811115612ce657612ce5612973565b5b612cf284828501612c87565b91505092915050565b5f5f60408385031215612d1157612d1061296f565b5b5f612d1e858286016129bd565b9250506020612d2f858286016129bd565b9150509250929050565b7f417070726f766572206164647265737320697320626c6f636b656400000000005f82015250565b5f612d6d601b836128e0565b9150612d7882612d39565b602082019050919050565b5f6020820190508181035f830152612d9a81612d61565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612dd56020836128e0565b9150612de082612da1565b602082019050919050565b5f6020820190508181035f830152612e0281612dc9565b9050919050565b5f819050919050565b5f819050919050565b5f612e35612e30612e2b84612e09565b612e12565b6129d1565b9050919050565b612e4581612e1b565b82525050565b5f602082019050612e5e5f830184612e3c565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f5f8291508390505b6001851115612ee657808604811115612ec257612ec1612e64565b5b6001851615612ed15780820291505b8081029050612edf85612e91565b9450612ea6565b94509492505050565b5f82612efe5760019050612fb9565b81612f0b575f9050612fb9565b8160018114612f215760028114612f2b57612f5a565b6001915050612fb9565b60ff841115612f3d57612f3c612e64565b5b8360020a915084821115612f5457612f53612e64565b5b50612fb9565b5060208310610133831016604e8410600b8410161715612f8f5782820a905083811115612f8a57612f89612e64565b5b612fb9565b612f9c8484846001612e9d565b92509050818404811115612fb357612fb2612e64565b5b81810290505b9392505050565b5f612fca826129d1565b9150612fd583612aed565b92506130027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612eef565b905092915050565b5f613014826129d1565b915061301f836129d1565b925082820261302d816129d1565b9150828204841483151761304457613043612e64565b5b5092915050565b7f53656e646572206164647265737320697320626c6f636b6564000000000000005f82015250565b5f61307f6019836128e0565b915061308a8261304b565b602082019050919050565b5f6020820190508181035f8301526130ac81613073565b9050919050565b7f526563697069656e74206164647265737320697320626c6f636b6564000000005f82015250565b5f6130e7601c836128e0565b91506130f2826130b3565b602082019050919050565b5f6020820190508181035f830152613114816130db565b9050919050565b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f61314f6017836128e0565b915061315a8261311b565b602082019050919050565b5f6020820190508181035f83015261317c81613143565b9050919050565b5f81519050613191816129a7565b92915050565b5f602082840312156131ac576131ab61296f565b5b5f6131b984828501613183565b91505092915050565b5f6040820190506131d55f830185612b4c565b6131e26020830184612b4c565b9392505050565b5f60c0820190506131fc5f830189612b4c565b6132096020830188612a75565b6132166040830187612e3c565b6132236060830186612e3c565b6132306080830185612b4c565b61323d60a0830184612a75565b979650505050505050565b5f81519050613256816129da565b92915050565b5f5f5f606084860312156132735761327261296f565b5b5f61328086828701613248565b935050602061329186828701613248565b92505060406132a286828701613248565b9150509250925092565b5f6040820190506132bf5f830185612b4c565b6132cc6020830184612a75565b9392505050565b6132dc81612a42565b81146132e6575f5ffd5b50565b5f815190506132f7816132d3565b92915050565b5f602082840312156133125761331161296f565b5b5f61331f848285016132e9565b91505092915050565b7f43616e6e6f7420616464206561726c79206275796572732061667465722074725f8201527f6164696e6720697320656e61626c656400000000000000000000000000000000602082015250565b5f6133826030836128e0565b915061338d82613328565b604082019050919050565b5f6020820190508181035f8301526133af81613376565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f496e76616c69642077616c6c65742061646472657373000000000000000000005f82015250565b5f6134176016836128e0565b9150613422826133e3565b602082019050919050565b5f6020820190508181035f8301526134448161340b565b9050919050565b7f4561726c7920627579696e6720706861736520616c726561647920656e6465645f82015250565b5f61347f6020836128e0565b915061348a8261344b565b602082019050919050565b5f6020820190508181035f8301526134ac81613473565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f61350d6024836128e0565b9150613518826134b3565b604082019050919050565b5f6020820190508181035f83015261353a81613501565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f61359b6022836128e0565b91506135a682613541565b604082019050919050565b5f6020820190508181035f8301526135c88161358f565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6136296025836128e0565b9150613634826135cf565b604082019050919050565b5f6020820190508181035f8301526136568161361d565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6136b76023836128e0565b91506136c28261365d565b604082019050919050565b5f6020820190508181035f8301526136e4816136ab565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f6137456029836128e0565b9150613750826136eb565b604082019050919050565b5f6020820190508181035f83015261377281613739565b9050919050565b7f4f6e6c79206561726c79206275796572732063616e20707572636861736520645f8201527f7572696e67206561726c79207068617365000000000000000000000000000000602082015250565b5f6137d36031836128e0565b91506137de82613779565b604082019050919050565b5f6020820190508181035f830152613800816137c7565b9050919050565b5f613811826129d1565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361384357613842612e64565b5b600182019050919050565b7f4f6e6c7920332073656c6c732070657220626c6f636b210000000000000000005f82015250565b5f6138826017836128e0565b915061388d8261384e565b602082019050919050565b5f6020820190508181035f8301526138af81613876565b9050919050565b5f6138c0826129d1565b91506138cb836129d1565b92508282039050818111156138e3576138e2612e64565b5b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61391b81612996565b82525050565b5f61392c8383613912565b60208301905092915050565b5f602082019050919050565b5f61394e826138e9565b61395881856138f3565b935061396383613903565b805f5b8381101561399357815161397a8882613921565b975061398583613938565b925050600181019050613966565b5085935050505092915050565b5f60a0820190506139b35f830188612a75565b6139c06020830187612e3c565b81810360408301526139d28186613944565b90506139e16060830185612b4c565b6139ee6080830184612a75565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613a2f826129d1565b9150613a3a836129d1565b925082613a4a57613a496139f8565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f613aaf6021836128e0565b9150613aba82613a55565b604082019050919050565b5f6020820190508181035f830152613adc81613aa3565b9050919050565b5f613aed826129d1565b9150613af8836129d1565b9250828201905080821115613b1057613b0f612e64565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613b4a601b836128e0565b9150613b5582613b16565b602082019050919050565b5f6020820190508181035f830152613b7781613b3e565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212209f05e67b5fc3a054e0baef591bfa13aef7af964d5034132d1bf61f6e8539fe5564736f6c63430008210033
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)