Warning! Contract bytecode has been changed and doesn't match the verified one. Therefore, interaction with this smart contract may be risky.
This contract has been partially verified via Sourcify.
View contract in Sourcify repository
- Contract name:
- Hotspot
- Optimization enabled
- false
- Compiler version
- v0.8.21+commit.d9974bed
- EVM Version
- shanghai
- Verified at
- 2026-03-19T20:13:08.839678Z
HOTSPOT.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;
/**
* HOTSPOT (Hotspot)
* A fixed single-supply ERC-20 token deployed on PulseChain.
*
* Features:
* - Fixed total supply of 1 Hotspot (minted once to deployer)
* - Owner is always exempt from trading restrictions
* - Airdrop: send tokens to multiple wallets in one transaction
* - Ownership transfer and renounce supported
*/
abstract contract Ownable {
address private _owner;
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
event OwnershipRenounced(address indexed previousOwner);
error NotOwner();
error ZeroAddress();
constructor(address initialOwner) {
if (initialOwner == address(0)) revert ZeroAddress();
_owner = initialOwner;
emit OwnershipTransferred(address(0), initialOwner);
}
modifier onlyOwner() {
if (msg.sender != _owner) revert NotOwner();
_;
}
function owner() public view returns (address) {
return _owner;
}
function transferOwnership(address newOwner) external onlyOwner {
if (newOwner == address(0)) revert ZeroAddress();
emit OwnershipTransferred(_owner, newOwner);
_owner = newOwner;
}
function renounceOwnership() external onlyOwner {
emit OwnershipRenounced(_owner);
_owner = address(0);
}
}
contract Hotspot is Ownable {
// ── Metadata ──────────────────────────────────────────────────────────────
string public constant name = "Hotspot";
string public constant symbol = "Hotspot";
uint8 public constant decimals = 18;
// ── Supply ────────────────────────────────────────────────────────────────
uint256 public constant TOTAL_SUPPLY = 1 * 10 ** uint256(decimals);
// ── State ─────────────────────────────────────────────────────────────────
bool public tradingEnabled;
mapping(address => uint256) private _balances;
mapping(address => mapping(address => uint256)) private _allowances;
// ── Events ────────────────────────────────────────────────────────────────
event Transfer(address indexed from, address indexed to, uint256 value);
event Approval(address indexed owner, address indexed spender, uint256 value);
event TradingStarted(uint256 timestamp);
event TradingStopped(uint256 timestamp);
event AirdropSent(address indexed sender, uint256 recipientCount, uint256 totalAmount);
// ── Errors ────────────────────────────────────────────────────────────────
error TradingNotEnabled();
error InsufficientBalance();
error InsufficientAllowance();
error TransferToZeroAddress();
error ApproveToZeroAddress();
error TradingAlreadyInThisState();
error AirdropArrayMismatch();
error AirdropEmptyList();
error AirdropTooManyRecipients();
error AirdropZeroAmount();
error AirdropInsufficientBalance();
// ── Constructor ───────────────────────────────────────────────────────────
constructor() Ownable(msg.sender) {
_balances[msg.sender] = TOTAL_SUPPLY;
emit Transfer(address(0), msg.sender, TOTAL_SUPPLY);
// Trading starts DISABLED — owner must call startTrading() to open it
}
// ── Trading Control ───────────────────────────────────────────────────────
/// @notice Enable trading for all holders. Only owner.
function startTrading() external onlyOwner {
if (tradingEnabled) revert TradingAlreadyInThisState();
tradingEnabled = true;
emit TradingStarted(block.timestamp);
}
/// @notice Disable trading for all non-owner holders. Only owner.
function stopTrading() external onlyOwner {
if (!tradingEnabled) revert TradingAlreadyInThisState();
tradingEnabled = false;
emit TradingStopped(block.timestamp);
}
// ── Airdrop ───────────────────────────────────────────────────────────────
/**
* @notice Send the same fixed amount of Hotspot to multiple recipients.
* @dev Caller must hold enough tokens. Max 500 recipients per call.
* Bypasses trading gate — airdrop always works regardless of
* tradingEnabled state, so you can airdrop before launch.
* @param recipients Array of wallet addresses to receive tokens.
* @param amount Amount of Hotspot (in wei units) each recipient receives.
*/
function airdropEqual(address[] calldata recipients, uint256 amount) external {
if (recipients.length == 0) revert AirdropEmptyList();
if (recipients.length > 500) revert AirdropTooManyRecipients();
if (amount == 0) revert AirdropZeroAmount();
uint256 totalNeeded = amount * recipients.length;
if (_balances[msg.sender] < totalNeeded) revert AirdropInsufficientBalance();
unchecked {
_balances[msg.sender] -= totalNeeded;
}
for (uint256 i = 0; i < recipients.length; ) {
address to = recipients[i];
if (to == address(0)) revert TransferToZeroAddress();
unchecked {
_balances[to] += amount;
++i;
}
emit Transfer(msg.sender, to, amount);
}
emit AirdropSent(msg.sender, recipients.length, totalNeeded);
}
/**
* @notice Send different amounts of Hotspot to multiple recipients.
* @dev recipients[i] receives amounts[i]. Arrays must be same length.
* Max 500 recipients per call.
* @param recipients Array of wallet addresses.
* @param amounts Corresponding array of Hotspot amounts (in wei units).
*/
function airdropCustom(address[] calldata recipients, uint256[] calldata amounts) external {
if (recipients.length == 0) revert AirdropEmptyList();
if (recipients.length != amounts.length) revert AirdropArrayMismatch();
if (recipients.length > 500) revert AirdropTooManyRecipients();
// Pre-calculate total to validate balance upfront (safe, avoids partial sends)
uint256 totalNeeded = 0;
for (uint256 i = 0; i < amounts.length; ) {
if (amounts[i] == 0) revert AirdropZeroAmount();
unchecked {
totalNeeded += amounts[i];
++i;
}
}
if (_balances[msg.sender] < totalNeeded) revert AirdropInsufficientBalance();
unchecked {
_balances[msg.sender] -= totalNeeded;
}
for (uint256 i = 0; i < recipients.length; ) {
address to = recipients[i];
if (to == address(0)) revert TransferToZeroAddress();
unchecked {
_balances[to] += amounts[i];
++i;
}
emit Transfer(msg.sender, to, amounts[i]);
}
emit AirdropSent(msg.sender, recipients.length, totalNeeded);
}
// ── ERC-20 Standard ───────────────────────────────────────────────────────
function totalSupply() external pure returns (uint256) {
return TOTAL_SUPPLY;
}
function balanceOf(address account) external view returns (uint256) {
return _balances[account];
}
function allowance(address tokenOwner, address spender) external view returns (uint256) {
return _allowances[tokenOwner][spender];
}
function approve(address spender, uint256 amount) external returns (bool) {
if (spender == address(0)) revert ApproveToZeroAddress();
_allowances[msg.sender][spender] = amount;
emit Approval(msg.sender, spender, amount);
return true;
}
function transfer(address to, uint256 amount) external returns (bool) {
_transfer(msg.sender, to, amount);
return true;
}
function transferFrom(address from, address to, uint256 amount) external returns (bool) {
uint256 currentAllowance = _allowances[from][msg.sender];
if (currentAllowance != type(uint256).max) {
if (currentAllowance < amount) revert InsufficientAllowance();
unchecked { _allowances[from][msg.sender] = currentAllowance - amount; }
}
_transfer(from, to, amount);
return true;
}
// ── Internal ──────────────────────────────────────────────────────────────
function _transfer(address from, address to, uint256 amount) internal {
if (to == address(0)) revert TransferToZeroAddress();
// Owner is always exempt from the trading gate
if (!tradingEnabled && from != owner() && to != owner()) {
revert TradingNotEnabled();
}
uint256 fromBalance = _balances[from];
if (fromBalance < amount) revert InsufficientBalance();
unchecked {
_balances[from] = fromBalance - amount;
_balances[to] += amount;
}
emit Transfer(from, to, amount);
}
}
Compiler Settings
{"remappings":[],"optimizer":{"runs":200,"enabled":false},"metadata":{"bytecodeHash":"ipfs"},"libraries":{},"evmVersion":"shanghai","compilationTarget":{"HOTSPOT.sol":"Hotspot"}}
Contract ABI
[{"type":"constructor","stateMutability":"nonpayable","inputs":[]},{"type":"error","name":"AirdropArrayMismatch","inputs":[]},{"type":"error","name":"AirdropEmptyList","inputs":[]},{"type":"error","name":"AirdropInsufficientBalance","inputs":[]},{"type":"error","name":"AirdropTooManyRecipients","inputs":[]},{"type":"error","name":"AirdropZeroAmount","inputs":[]},{"type":"error","name":"ApproveToZeroAddress","inputs":[]},{"type":"error","name":"InsufficientAllowance","inputs":[]},{"type":"error","name":"InsufficientBalance","inputs":[]},{"type":"error","name":"NotOwner","inputs":[]},{"type":"error","name":"TradingAlreadyInThisState","inputs":[]},{"type":"error","name":"TradingNotEnabled","inputs":[]},{"type":"error","name":"TransferToZeroAddress","inputs":[]},{"type":"error","name":"ZeroAddress","inputs":[]},{"type":"event","name":"AirdropSent","inputs":[{"type":"address","name":"sender","internalType":"address","indexed":true},{"type":"uint256","name":"recipientCount","internalType":"uint256","indexed":false},{"type":"uint256","name":"totalAmount","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"event","name":"Approval","inputs":[{"type":"address","name":"owner","internalType":"address","indexed":true},{"type":"address","name":"spender","internalType":"address","indexed":true},{"type":"uint256","name":"value","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"event","name":"OwnershipRenounced","inputs":[{"type":"address","name":"previousOwner","internalType":"address","indexed":true}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"type":"address","name":"previousOwner","internalType":"address","indexed":true},{"type":"address","name":"newOwner","internalType":"address","indexed":true}],"anonymous":false},{"type":"event","name":"TradingStarted","inputs":[{"type":"uint256","name":"timestamp","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"event","name":"TradingStopped","inputs":[{"type":"uint256","name":"timestamp","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"type":"address","name":"from","internalType":"address","indexed":true},{"type":"address","name":"to","internalType":"address","indexed":true},{"type":"uint256","name":"value","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"TOTAL_SUPPLY","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"airdropCustom","inputs":[{"type":"address[]","name":"recipients","internalType":"address[]"},{"type":"uint256[]","name":"amounts","internalType":"uint256[]"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"airdropEqual","inputs":[{"type":"address[]","name":"recipients","internalType":"address[]"},{"type":"uint256","name":"amount","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"allowance","inputs":[{"type":"address","name":"tokenOwner","internalType":"address"},{"type":"address","name":"spender","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"approve","inputs":[{"type":"address","name":"spender","internalType":"address"},{"type":"uint256","name":"amount","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"balanceOf","inputs":[{"type":"address","name":"account","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint8","name":"","internalType":"uint8"}],"name":"decimals","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"string","name":"","internalType":"string"}],"name":"name","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"owner","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"renounceOwnership","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"startTrading","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"stopTrading","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"string","name":"","internalType":"string"}],"name":"symbol","inputs":[]},{"type":"function","stateMutability":"pure","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"totalSupply","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"tradingEnabled","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"transfer","inputs":[{"type":"address","name":"to","internalType":"address"},{"type":"uint256","name":"amount","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"transferFrom","inputs":[{"type":"address","name":"from","internalType":"address"},{"type":"address","name":"to","internalType":"address"},{"type":"uint256","name":"amount","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"transferOwnership","inputs":[{"type":"address","name":"newOwner","internalType":"address"}]}]
Contract Creation Code
0x608060405234801562000010575f80fd5b50335f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160362000078576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350601260ff16600a62000125919062000387565b6001620001339190620003d7565b60015f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503373ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef601260ff16600a620001d6919062000387565b6001620001e49190620003d7565b604051620001f3919062000432565b60405180910390a36200044d565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156200028b5780860481111562000263576200026262000201565b5b6001851615620002735780820291505b808102905062000283856200022e565b945062000243565b94509492505050565b5f82620002a5576001905062000377565b81620002b4575f905062000377565b8160018114620002cd5760028114620002d8576200030e565b600191505062000377565b60ff841115620002ed57620002ec62000201565b5b8360020a91508482111562000307576200030662000201565b5b5062000377565b5060208310610133831016604e8410600b8410161715620003485782820a90508381111562000342576200034162000201565b5b62000377565b6200035784848460016200023a565b9250905081840481111562000371576200037062000201565b5b81810290505b9392505050565b5f819050919050565b5f62000393826200037e565b9150620003a0836200037e565b9250620003cf7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000294565b905092915050565b5f620003e3826200037e565b9150620003f0836200037e565b925082820262000400816200037e565b915082820484148315176200041a576200041962000201565b5b5092915050565b6200042c816200037e565b82525050565b5f602082019050620004475f83018462000421565b92915050565b611d97806200045b5f395ff3fe608060405234801561000f575f80fd5b5060043610610114575f3560e01c8063715018a6116100a057806395d89b411161006f57806395d89b4114610296578063a9059cbb146102b4578063dd62ed3e146102e4578063e2ac48f714610314578063f2fde38b1461033057610114565b8063715018a6146102465780637185f163146102505780638da5cb5b1461025a578063902d55a51461027857610114565b806323b872dd116100e757806323b872dd146101a0578063293230b8146101d0578063313ce567146101da5780634ada218b146101f857806370a082311461021657610114565b806306fdde0314610118578063095ea7b31461013657806318160ddd146101665780631a37632114610184575b5f80fd5b61012061034c565b60405161012d9190611732565b60405180910390f35b610150600480360381019061014b91906117e7565b610385565b60405161015d919061183f565b60405180910390f35b61016e6104d7565b60405161017b9190611867565b60405180910390f35b61019e60048036038101906101999190611936565b6104fa565b005b6101ba60048036038101906101b591906119b4565b6108e4565b6040516101c7919061183f565b60405180910390f35b6101d8610a59565b005b6101e2610b76565b6040516101ef9190611a1f565b60405180910390f35b610200610b7b565b60405161020d919061183f565b60405180910390f35b610230600480360381019061022b9190611a38565b610b8d565b60405161023d9190611867565b60405180910390f35b61024e610bd3565b005b610258610cfa565b005b610262610e15565b60405161026f9190611a72565b60405180910390f35b610280610e3c565b60405161028d9190611867565b60405180910390f35b61029e610e5c565b6040516102ab9190611732565b60405180910390f35b6102ce60048036038101906102c991906117e7565b610e95565b6040516102db919061183f565b60405180910390f35b6102fe60048036038101906102f99190611a8b565b610eab565b60405161030b9190611867565b60405180910390f35b61032e60048036038101906103299190611ac9565b610f2d565b005b61034a60048036038101906103459190611a38565b611266565b005b6040518060400160405280600781526020017f486f7473706f740000000000000000000000000000000000000000000000000081525081565b5f8073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036103eb576040517f3b719e1800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8160025f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516104c59190611867565b60405180910390a36001905092915050565b5f601260ff16600a6104e99190611c82565b60016104f59190611ccc565b905090565b5f8484905003610536576040517f0146d1ba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b818190508484905014610575576040517f38dc0f0d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6101f48484905011156105b4576040517f9f1dfec600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f805b8383905081101561063d575f8484838181106105d6576105d5611d0d565b5b9050602002013503610614576040517f1e93cba900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b83838281811061062757610626611d0d565b5b90506020020135820191508060010190506105b7565b508060015f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410156106b5576040517f1fb81dbd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060015f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825403925050819055505f5b85859050811015610889575f8686838181106107205761071f611d0d565b5b90506020020160208101906107359190611a38565b90505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361079c576040517fea553b3400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8484838181106107af576107ae611d0d565b5b9050602002013560015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508160010191508073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef87878681811061086757610866611d0d565b5b9050602002013560405161087b9190611867565b60405180910390a350610701565b503373ffffffffffffffffffffffffffffffffffffffff167f72780f191f89f3e5f0938c2ccd8588b8196ee8fcdadf381212914f53164a9ac786869050836040516108d5929190611d3a565b60405180910390a25050505050565b5f8060025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610a4257828110156109c2576040517f13be252b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82810360025f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b610a4d85858561140a565b60019150509392505050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610add576040517f30cd747100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60149054906101000a900460ff1615610b23576040517fb883910d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60015f60146101000a81548160ff0219169083151502179055507f681fd8281014ec159aeba3c383293bbbc3db4d68f2c74f894d9f46a401f73fe442604051610b6c9190611867565b60405180910390a1565b601281565b5f60149054906101000a900460ff1681565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610c57576040517f30cd747100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482060405160405180910390a25f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d7e576040517f30cd747100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60149054906101000a900460ff16610dc3576040517fb883910d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8060146101000a81548160ff0219169083151502179055507f8861d9c6d1855d245b836e9c2e2da28d9ce999a4730dd493a6d354b6331a418542604051610e0b9190611867565b60405180910390a1565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b601260ff16600a610e4d9190611c82565b6001610e599190611ccc565b81565b6040518060400160405280600781526020017f486f7473706f740000000000000000000000000000000000000000000000000081525081565b5f610ea133848461140a565b6001905092915050565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f8383905003610f69576040517f0146d1ba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6101f4838390501115610fa8576040517f9f1dfec600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8103610fe1576040517f1e93cba900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8383905082610ff19190611ccc565b90508060015f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054101561106a576040517f1fb81dbd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060015f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825403925050819055505f5b8484905081101561120c575f8585838181106110d5576110d4611d0d565b5b90506020020160208101906110ea9190611a38565b90505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611151576040517fea553b3400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8360015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508160010191508073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040516111fe9190611867565b60405180910390a3506110b6565b503373ffffffffffffffffffffffffffffffffffffffff167f72780f191f89f3e5f0938c2ccd8588b8196ee8fcdadf381212914f53164a9ac78585905083604051611258929190611d3a565b60405180910390a250505050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146112ea576040517f30cd747100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361134f576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361146f576040517fea553b3400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60149054906101000a900460ff161580156114be575061148e610e15565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156114fd57506114cd610e15565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611534576040517f12f1f92300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050818110156115af576040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81810360015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508160015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161169a9190611867565b60405180910390a350505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156116df5780820151818401526020810190506116c4565b5f8484015250505050565b5f601f19601f8301169050919050565b5f611704826116a8565b61170e81856116b2565b935061171e8185602086016116c2565b611727816116ea565b840191505092915050565b5f6020820190508181035f83015261174a81846116fa565b905092915050565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6117838261175a565b9050919050565b61179381611779565b811461179d575f80fd5b50565b5f813590506117ae8161178a565b92915050565b5f819050919050565b6117c6816117b4565b81146117d0575f80fd5b50565b5f813590506117e1816117bd565b92915050565b5f80604083850312156117fd576117fc611752565b5b5f61180a858286016117a0565b925050602061181b858286016117d3565b9150509250929050565b5f8115159050919050565b61183981611825565b82525050565b5f6020820190506118525f830184611830565b92915050565b611861816117b4565b82525050565b5f60208201905061187a5f830184611858565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f8401126118a1576118a0611880565b5b8235905067ffffffffffffffff8111156118be576118bd611884565b5b6020830191508360208202830111156118da576118d9611888565b5b9250929050565b5f8083601f8401126118f6576118f5611880565b5b8235905067ffffffffffffffff81111561191357611912611884565b5b60208301915083602082028301111561192f5761192e611888565b5b9250929050565b5f805f806040858703121561194e5761194d611752565b5b5f85013567ffffffffffffffff81111561196b5761196a611756565b5b6119778782880161188c565b9450945050602085013567ffffffffffffffff81111561199a57611999611756565b5b6119a6878288016118e1565b925092505092959194509250565b5f805f606084860312156119cb576119ca611752565b5b5f6119d8868287016117a0565b93505060206119e9868287016117a0565b92505060406119fa868287016117d3565b9150509250925092565b5f60ff82169050919050565b611a1981611a04565b82525050565b5f602082019050611a325f830184611a10565b92915050565b5f60208284031215611a4d57611a4c611752565b5b5f611a5a848285016117a0565b91505092915050565b611a6c81611779565b82525050565b5f602082019050611a855f830184611a63565b92915050565b5f8060408385031215611aa157611aa0611752565b5b5f611aae858286016117a0565b9250506020611abf858286016117a0565b9150509250929050565b5f805f60408486031215611ae057611adf611752565b5b5f84013567ffffffffffffffff811115611afd57611afc611756565b5b611b098682870161188c565b93509350506020611b1c868287016117d3565b9150509250925092565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115611ba857808604811115611b8457611b83611b26565b5b6001851615611b935780820291505b8081029050611ba185611b53565b9450611b68565b94509492505050565b5f82611bc05760019050611c7b565b81611bcd575f9050611c7b565b8160018114611be35760028114611bed57611c1c565b6001915050611c7b565b60ff841115611bff57611bfe611b26565b5b8360020a915084821115611c1657611c15611b26565b5b50611c7b565b5060208310610133831016604e8410600b8410161715611c515782820a905083811115611c4c57611c4b611b26565b5b611c7b565b611c5e8484846001611b5f565b92509050818404811115611c7557611c74611b26565b5b81810290505b9392505050565b5f611c8c826117b4565b9150611c97836117b4565b9250611cc47fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484611bb1565b905092915050565b5f611cd6826117b4565b9150611ce1836117b4565b9250828202611cef816117b4565b91508282048414831517611d0657611d05611b26565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f604082019050611d4d5f830185611858565b611d5a6020830184611858565b939250505056fea2646970667358221220894d32a374c2d10ed7c2e64b9cd285227732f2ef1c4f3d3ea3d85e65e0bc5c0964736f6c63430008140033
Deployed ByteCode
0x608060405234801561000f575f80fd5b5060043610610114575f3560e01c8063715018a6116100a057806395d89b411161006f57806395d89b4114610296578063a9059cbb146102b4578063dd62ed3e146102e4578063e2ac48f714610314578063f2fde38b1461033057610114565b8063715018a6146102465780637185f163146102505780638da5cb5b1461025a578063902d55a51461027857610114565b806323b872dd116100e757806323b872dd146101a0578063293230b8146101d0578063313ce567146101da5780634ada218b146101f857806370a082311461021657610114565b806306fdde0314610118578063095ea7b31461013657806318160ddd146101665780631a37632114610184575b5f80fd5b61012061034c565b60405161012d9190611732565b60405180910390f35b610150600480360381019061014b91906117e7565b610385565b60405161015d919061183f565b60405180910390f35b61016e6104d7565b60405161017b9190611867565b60405180910390f35b61019e60048036038101906101999190611936565b6104fa565b005b6101ba60048036038101906101b591906119b4565b6108e4565b6040516101c7919061183f565b60405180910390f35b6101d8610a59565b005b6101e2610b76565b6040516101ef9190611a1f565b60405180910390f35b610200610b7b565b60405161020d919061183f565b60405180910390f35b610230600480360381019061022b9190611a38565b610b8d565b60405161023d9190611867565b60405180910390f35b61024e610bd3565b005b610258610cfa565b005b610262610e15565b60405161026f9190611a72565b60405180910390f35b610280610e3c565b60405161028d9190611867565b60405180910390f35b61029e610e5c565b6040516102ab9190611732565b60405180910390f35b6102ce60048036038101906102c991906117e7565b610e95565b6040516102db919061183f565b60405180910390f35b6102fe60048036038101906102f99190611a8b565b610eab565b60405161030b9190611867565b60405180910390f35b61032e60048036038101906103299190611ac9565b610f2d565b005b61034a60048036038101906103459190611a38565b611266565b005b6040518060400160405280600781526020017f486f7473706f740000000000000000000000000000000000000000000000000081525081565b5f8073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036103eb576040517f3b719e1800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8160025f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516104c59190611867565b60405180910390a36001905092915050565b5f601260ff16600a6104e99190611c82565b60016104f59190611ccc565b905090565b5f8484905003610536576040517f0146d1ba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b818190508484905014610575576040517f38dc0f0d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6101f48484905011156105b4576040517f9f1dfec600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f805b8383905081101561063d575f8484838181106105d6576105d5611d0d565b5b9050602002013503610614576040517f1e93cba900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b83838281811061062757610626611d0d565b5b90506020020135820191508060010190506105b7565b508060015f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410156106b5576040517f1fb81dbd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060015f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825403925050819055505f5b85859050811015610889575f8686838181106107205761071f611d0d565b5b90506020020160208101906107359190611a38565b90505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361079c576040517fea553b3400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8484838181106107af576107ae611d0d565b5b9050602002013560015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508160010191508073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef87878681811061086757610866611d0d565b5b9050602002013560405161087b9190611867565b60405180910390a350610701565b503373ffffffffffffffffffffffffffffffffffffffff167f72780f191f89f3e5f0938c2ccd8588b8196ee8fcdadf381212914f53164a9ac786869050836040516108d5929190611d3a565b60405180910390a25050505050565b5f8060025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610a4257828110156109c2576040517f13be252b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82810360025f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b610a4d85858561140a565b60019150509392505050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610add576040517f30cd747100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60149054906101000a900460ff1615610b23576040517fb883910d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60015f60146101000a81548160ff0219169083151502179055507f681fd8281014ec159aeba3c383293bbbc3db4d68f2c74f894d9f46a401f73fe442604051610b6c9190611867565b60405180910390a1565b601281565b5f60149054906101000a900460ff1681565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610c57576040517f30cd747100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482060405160405180910390a25f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d7e576040517f30cd747100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60149054906101000a900460ff16610dc3576040517fb883910d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8060146101000a81548160ff0219169083151502179055507f8861d9c6d1855d245b836e9c2e2da28d9ce999a4730dd493a6d354b6331a418542604051610e0b9190611867565b60405180910390a1565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b601260ff16600a610e4d9190611c82565b6001610e599190611ccc565b81565b6040518060400160405280600781526020017f486f7473706f740000000000000000000000000000000000000000000000000081525081565b5f610ea133848461140a565b6001905092915050565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f8383905003610f69576040517f0146d1ba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6101f4838390501115610fa8576040517f9f1dfec600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8103610fe1576040517f1e93cba900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8383905082610ff19190611ccc565b90508060015f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054101561106a576040517f1fb81dbd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060015f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825403925050819055505f5b8484905081101561120c575f8585838181106110d5576110d4611d0d565b5b90506020020160208101906110ea9190611a38565b90505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611151576040517fea553b3400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8360015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508160010191508073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040516111fe9190611867565b60405180910390a3506110b6565b503373ffffffffffffffffffffffffffffffffffffffff167f72780f191f89f3e5f0938c2ccd8588b8196ee8fcdadf381212914f53164a9ac78585905083604051611258929190611d3a565b60405180910390a250505050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146112ea576040517f30cd747100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361134f576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361146f576040517fea553b3400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60149054906101000a900460ff161580156114be575061148e610e15565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156114fd57506114cd610e15565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611534576040517f12f1f92300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050818110156115af576040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81810360015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508160015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161169a9190611867565b60405180910390a350505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156116df5780820151818401526020810190506116c4565b5f8484015250505050565b5f601f19601f8301169050919050565b5f611704826116a8565b61170e81856116b2565b935061171e8185602086016116c2565b611727816116ea565b840191505092915050565b5f6020820190508181035f83015261174a81846116fa565b905092915050565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6117838261175a565b9050919050565b61179381611779565b811461179d575f80fd5b50565b5f813590506117ae8161178a565b92915050565b5f819050919050565b6117c6816117b4565b81146117d0575f80fd5b50565b5f813590506117e1816117bd565b92915050565b5f80604083850312156117fd576117fc611752565b5b5f61180a858286016117a0565b925050602061181b858286016117d3565b9150509250929050565b5f8115159050919050565b61183981611825565b82525050565b5f6020820190506118525f830184611830565b92915050565b611861816117b4565b82525050565b5f60208201905061187a5f830184611858565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f8401126118a1576118a0611880565b5b8235905067ffffffffffffffff8111156118be576118bd611884565b5b6020830191508360208202830111156118da576118d9611888565b5b9250929050565b5f8083601f8401126118f6576118f5611880565b5b8235905067ffffffffffffffff81111561191357611912611884565b5b60208301915083602082028301111561192f5761192e611888565b5b9250929050565b5f805f806040858703121561194e5761194d611752565b5b5f85013567ffffffffffffffff81111561196b5761196a611756565b5b6119778782880161188c565b9450945050602085013567ffffffffffffffff81111561199a57611999611756565b5b6119a6878288016118e1565b925092505092959194509250565b5f805f606084860312156119cb576119ca611752565b5b5f6119d8868287016117a0565b93505060206119e9868287016117a0565b92505060406119fa868287016117d3565b9150509250925092565b5f60ff82169050919050565b611a1981611a04565b82525050565b5f602082019050611a325f830184611a10565b92915050565b5f60208284031215611a4d57611a4c611752565b5b5f611a5a848285016117a0565b91505092915050565b611a6c81611779565b82525050565b5f602082019050611a855f830184611a63565b92915050565b5f8060408385031215611aa157611aa0611752565b5b5f611aae858286016117a0565b9250506020611abf858286016117a0565b9150509250929050565b5f805f60408486031215611ae057611adf611752565b5b5f84013567ffffffffffffffff811115611afd57611afc611756565b5b611b098682870161188c565b93509350506020611b1c868287016117d3565b9150509250925092565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115611ba857808604811115611b8457611b83611b26565b5b6001851615611b935780820291505b8081029050611ba185611b53565b9450611b68565b94509492505050565b5f82611bc05760019050611c7b565b81611bcd575f9050611c7b565b8160018114611be35760028114611bed57611c1c565b6001915050611c7b565b60ff841115611bff57611bfe611b26565b5b8360020a915084821115611c1657611c15611b26565b5b50611c7b565b5060208310610133831016604e8410600b8410161715611c515782820a905083811115611c4c57611c4b611b26565b5b611c7b565b611c5e8484846001611b5f565b92509050818404811115611c7557611c74611b26565b5b81810290505b9392505050565b5f611c8c826117b4565b9150611c97836117b4565b9250611cc47fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484611bb1565b905092915050565b5f611cd6826117b4565b9150611ce1836117b4565b9250828202611cef816117b4565b91508282048414831517611d0657611d05611b26565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f604082019050611d4d5f830185611858565b611d5a6020830184611858565b939250505056fea2646970667358221220894d32a374c2d10ed7c2e64b9cd285227732f2ef1c4f3d3ea3d85e65e0bc5c0964736f6c63430008140033