Transactions
Token Transfers
Tokens
Internal Transactions
Coin Balance History
Code
Read Contract
Write Contract
Warning! Contract bytecode has been changed and doesn't match the verified one. Therefore, interaction with this smart contract may be risky.
- Contract name:
- LiquidityLock
- Optimization enabled
- false
- Compiler version
- v0.8.20+commit.a1b79de6
- EVM Version
- default
- Verified at
- 2025-04-07T08:22:57.539322Z
Constructor Arguments
0x000000000000000000000000dce001f55da9c00c438d4129c6f02000b818e792
Arg [0] (address) : 0xdce001f55da9c00c438d4129c6f02000b818e792
Contract source code
// SPDX-License-Identifier: MIT
pragma solidity 0.8.20;
interface IERC20 {
function totalSupply() external view returns (uint256);
function symbol() external view returns(string memory);
function name() external view returns(string memory);
function balanceOf(address account) external view returns (uint256);
function allowance(address owner, address spender) external view returns (uint256);
function decimals() external view returns (uint8);
function approve(address spender, uint256 amount) external returns (bool);
function transfer(address recipient, 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);
}
interface ISwapRouter {
function factory() external pure returns (address);
function WPLS() external pure returns (address);
function addLiquidity(address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline) external returns (uint amountA, uint amountB, uint liquidity);
function addLiquidityETH(address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline) external payable returns (uint amountToken, uint amountETH, uint liquidity);
function removeLiquidity(address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline) external returns (uint amountA, uint amountB);
function removeLiquidityETH(address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline) external returns (uint amountToken, uint amountETH);
function removeLiquidityWithPermit(address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s) external returns (uint amountA, uint amountB);
function removeLiquidityETHWithPermit(address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s) external returns (uint amountToken, uint amountETH);
function swapExactTokensForTokens(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts);
function swapTokensForExactTokens(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts);
function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts);
function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts);
function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts);
function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts);
function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
function removeLiquidityETHSupportingFeeOnTransferTokens(address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline) external returns (uint amountETH);
function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s) external returns (uint amountETH);
function swapExactTokensForTokensSupportingFeeOnTransferTokens(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external;
function swapExactETHForTokensSupportingFeeOnTransferTokens(uint amountOutMin, address[] calldata path, address to, uint deadline) external payable;
function swapExactTokensForETHSupportingFeeOnTransferTokens(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external;
}
interface ITIMEDividend is IERC20 {
function claimableDividendOf(address account) external view returns (uint256);
function claimDividend(address payable recipient, uint256 amount) external returns (uint256);
}
library Address {
function isContract(address account) internal view returns (bool) {
uint256 size;
assembly { size := extcodesize(account) }
return size > 0;
}
function sendValue(address payable recipient, uint256 amount) internal {
require(address(this).balance >= amount, "Address: insufficient balance");
(bool success, ) = recipient.call{ value: amount }("");
require(success, "Address: unable to send value, recipient may have reverted");
}
function functionCall(address target, bytes memory data) internal returns (bytes memory) {
return functionCall(target, data, "Address: low-level call failed");
}
function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
return functionCallWithValue(target, data, 0, errorMessage);
}
function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {
return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
}
function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {
require(address(this).balance >= value, "Address: insufficient balance for call");
require(isContract(target), "Address: call to non-contract");
(bool success, bytes memory returndata) = target.call{ value: value }(data);
return _verifyCallResult(success, returndata, errorMessage);
}
function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {
return functionStaticCall(target, data, "Address: low-level static call failed");
}
function functionStaticCall(address target, bytes memory data, string memory errorMessage) internal view returns (bytes memory) {
require(isContract(target), "Address: static call to non-contract");
(bool success, bytes memory returndata) = target.staticcall(data);
return _verifyCallResult(success, returndata, errorMessage);
}
function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {
return functionDelegateCall(target, data, "Address: low-level delegate call failed");
}
function functionDelegateCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
require(isContract(target), "Address: delegate call to non-contract");
(bool success, bytes memory returndata) = target.delegatecall(data);
return _verifyCallResult(success, returndata, errorMessage);
}
function _verifyCallResult(bool success, bytes memory returndata, string memory errorMessage) private pure returns(bytes memory) {
if (success) {
return returndata;
} else {
if (returndata.length > 0) {
assembly {
let returndata_size := mload(returndata)
revert(add(32, returndata), returndata_size)
}
} else {
revert(errorMessage);
}
}
}
}
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 safeSub(uint256 a, uint256 b) internal pure returns (uint256) {
if (b > a) {
return 0;
} else {
return a - b;
}
}
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;
}
function mod(uint256 a, uint256 b) internal pure returns (uint256) {
return mod(a, b, "SafeMath: modulo by zero");
}
function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
require(b != 0, errorMessage);
return a % b;
}
function max(uint256 a, uint256 b) internal pure returns (uint256) {
return a >= b ? a : b;
}
function min(uint256 a, uint256 b) internal pure returns (uint256) {
return a < b ? a : b;
}
}
library SafeERC20 {
using Address for address;
using SafeMath for uint256;
function safeTransfer(IERC20 token, address to, uint256 value) internal {
_callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value));
}
function safeTransferFrom(IERC20 token, address from, address to, uint256 value) internal {
_callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value));
}
function safeApprove(IERC20 token, address spender, uint256 value) internal {
_callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value));
}
function _callOptionalReturn(IERC20 token, bytes memory data) private {
bytes memory returndata = address(token).functionCall(data, "SafeERC20: low-level call failed");
if (returndata.length > 0) {
require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed");
}
}
}
abstract contract ReentrancyGuard {
uint256 private constant _NOT_ENTERED = 1;
uint256 private constant _ENTERED = 2;
uint256 private _status;
constructor() {
_status = _NOT_ENTERED;
}
modifier nonReentrant() {
require(_status != _ENTERED, "ReentrancyGuard: reentrant call");
_status = _ENTERED;
_;
_status = _NOT_ENTERED;
}
}
contract LiquidityLock is ReentrancyGuard {
ISwapRouter public constant swapRouter = ISwapRouter(0x165C3410fC91EF562C50559f7d2289fEbed552d9);
IERC20 public immutable token;
constructor (address _token) {
token = IERC20(_token);
}
receive () external payable {
}
// Buy token, then Add token + PLS to PulseX V2 LP
function boost() external nonReentrant() returns (bool success) {
// Get PLS Balance
uint256 plsBalance = address(this).balance;
uint256 halfBalance = plsBalance / 2;
success = (plsBalance > 0);
require(success, "CANNOT_BOOST_ZERO_PLS");
address[] memory path = new address[](2);
path[0] = address(0xA1077a294dDE1B09bB078844df40758a5D0f9a27);
path[1] = address(token);
// Buy token on PulseX V2 with PLS
swapRouter.swapExactETHForTokens{value: halfBalance}(0, path, address(this), block.timestamp + 3 minutes);
// Get PLS & token balances in this contract
uint256 tknBal = token.balanceOf(address(this));
uint256 plsBal = address(this).balance;
// Approve token & PLS for use on the router
token.approve(address(swapRouter), tknBal);
// Add token/PLS Liquidity and burn it
swapRouter.addLiquidityETH{value: plsBal}(address(token), tknBal, 0, 0, address(0), block.timestamp + 3 minutes);
}
}
Contract ABI
[{"type":"constructor","stateMutability":"nonpayable","inputs":[{"type":"address","name":"_token","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"success","internalType":"bool"}],"name":"boost","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"contract ISwapRouter"}],"name":"swapRouter","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"contract IERC20"}],"name":"token","inputs":[]},{"type":"receive","stateMutability":"payable"}]
Contract Creation Code
0x60a060405234801561000f575f80fd5b50604051610e6b380380610e6b833981810160405281019061003191906100d0565b60015f819055508073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1681525050506100fb565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61009f82610076565b9050919050565b6100af81610095565b81146100b9575f80fd5b50565b5f815190506100ca816100a6565b92915050565b5f602082840312156100e5576100e4610072565b5b5f6100f2848285016100bc565b91505092915050565b608051610d3c61012f5f395f81816102160152818161032b015281816103c9015281816104aa01526105680152610d3c5ff3fe608060405260043610610037575f3560e01c8063a66f42c014610042578063c31c9c071461006c578063fc0c546a146100965761003e565b3661003e57005b5f80fd5b34801561004d575f80fd5b506100566100c0565b60405161006391906105a4565b60405180910390f35b348015610077575f80fd5b5061008061054e565b60405161008d9190610637565b60405180910390f35b3480156100a1575f80fd5b506100aa610566565b6040516100b79190610670565b60405180910390f35b5f60025f5403610105576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100fc906106e3565b60405180910390fd5b60025f819055505f4790505f60028261011e9190610764565b90505f8211925082610165576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161015c906107de565b60405180910390fd5b5f600267ffffffffffffffff811115610181576101806107fc565b5b6040519080825280602002602001820160405280156101af5781602001602082028036833780820191505090505b50905073a1077a294dde1b09bb078844df40758a5d0f9a27815f815181106101da576101d9610829565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f00000000000000000000000000000000000000000000000000000000000000008160018151811061024957610248610829565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505073165c3410fc91ef562c50559f7d2289febed552d973ffffffffffffffffffffffffffffffffffffffff16637ff36ab5835f843060b4426102c49190610856565b6040518663ffffffff1660e01b81526004016102e394939291906109a8565b5f6040518083038185885af11580156102fe573d5f803e3d5ffd5b50505050506040513d5f823e3d601f19601f820116820180604052508101906103279190610b50565b505f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016103829190610b97565b602060405180830381865afa15801561039d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103c19190610bb0565b90505f4790507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663095ea7b373165c3410fc91ef562c50559f7d2289febed552d9846040518363ffffffff1660e01b8152600401610436929190610bdb565b6020604051808303815f875af1158015610452573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104769190610c2c565b5073165c3410fc91ef562c50559f7d2289febed552d973ffffffffffffffffffffffffffffffffffffffff1663f305d719827f0000000000000000000000000000000000000000000000000000000000000000855f805f60b4426104da9190610856565b6040518863ffffffff1660e01b81526004016104fb96959493929190610c57565b60606040518083038185885af1158015610517573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061053c9190610cb6565b505050505050505060015f8190555090565b73165c3410fc91ef562c50559f7d2289febed552d981565b7f000000000000000000000000000000000000000000000000000000000000000081565b5f8115159050919050565b61059e8161058a565b82525050565b5f6020820190506105b75f830184610595565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f819050919050565b5f6105ff6105fa6105f5846105bd565b6105dc565b6105bd565b9050919050565b5f610610826105e5565b9050919050565b5f61062182610606565b9050919050565b61063181610617565b82525050565b5f60208201905061064a5f830184610628565b92915050565b5f61065a82610606565b9050919050565b61066a81610650565b82525050565b5f6020820190506106835f830184610661565b92915050565b5f82825260208201905092915050565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c005f82015250565b5f6106cd601f83610689565b91506106d882610699565b602082019050919050565b5f6020820190508181035f8301526106fa816106c1565b9050919050565b5f819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61076e82610701565b915061077983610701565b9250826107895761078861070a565b5b828204905092915050565b7f43414e4e4f545f424f4f53545f5a45524f5f504c5300000000000000000000005f82015250565b5f6107c8601583610689565b91506107d382610794565b602082019050919050565b5f6020820190508181035f8301526107f5816107bc565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f61086082610701565b915061086b83610701565b925082820190508082111561088357610882610737565b5b92915050565b5f819050919050565b5f6108ac6108a76108a284610889565b6105dc565b610701565b9050919050565b6108bc81610892565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f6108f5826105bd565b9050919050565b610905816108eb565b82525050565b5f61091683836108fc565b60208301905092915050565b5f602082019050919050565b5f610938826108c2565b61094281856108cc565b935061094d836108dc565b805f5b8381101561097d578151610964888261090b565b975061096f83610922565b925050600181019050610950565b5085935050505092915050565b610993816108eb565b82525050565b6109a281610701565b82525050565b5f6080820190506109bb5f8301876108b3565b81810360208301526109cd818661092e565b90506109dc604083018561098a565b6109e96060830184610999565b95945050505050565b5f604051905090565b5f80fd5b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b610a2082610a07565b810181811067ffffffffffffffff82111715610a3f57610a3e6107fc565b5b80604052505050565b5f610a516109f2565b9050610a5d8282610a17565b919050565b5f67ffffffffffffffff821115610a7c57610a7b6107fc565b5b602082029050602081019050919050565b5f80fd5b610a9a81610701565b8114610aa4575f80fd5b50565b5f81519050610ab581610a91565b92915050565b5f610acd610ac884610a62565b610a48565b90508083825260208201905060208402830185811115610af057610aef610a8d565b5b835b81811015610b195780610b058882610aa7565b845260208401935050602081019050610af2565b5050509392505050565b5f82601f830112610b3757610b36610a03565b5b8151610b47848260208601610abb565b91505092915050565b5f60208284031215610b6557610b646109fb565b5b5f82015167ffffffffffffffff811115610b8257610b816109ff565b5b610b8e84828501610b23565b91505092915050565b5f602082019050610baa5f83018461098a565b92915050565b5f60208284031215610bc557610bc46109fb565b5b5f610bd284828501610aa7565b91505092915050565b5f604082019050610bee5f83018561098a565b610bfb6020830184610999565b9392505050565b610c0b8161058a565b8114610c15575f80fd5b50565b5f81519050610c2681610c02565b92915050565b5f60208284031215610c4157610c406109fb565b5b5f610c4e84828501610c18565b91505092915050565b5f60c082019050610c6a5f83018961098a565b610c776020830188610999565b610c8460408301876108b3565b610c9160608301866108b3565b610c9e608083018561098a565b610cab60a0830184610999565b979650505050505050565b5f805f60608486031215610ccd57610ccc6109fb565b5b5f610cda86828701610aa7565b9350506020610ceb86828701610aa7565b9250506040610cfc86828701610aa7565b915050925092509256fea26469706673582212202940eeb7333ad4c14f297fc5a45b6fdfa9908b4b9f4731994c9c3d6a250000dc64736f6c63430008140033000000000000000000000000dce001f55da9c00c438d4129c6f02000b818e792
Deployed ByteCode
0x608060405260043610610037575f3560e01c8063a66f42c014610042578063c31c9c071461006c578063fc0c546a146100965761003e565b3661003e57005b5f80fd5b34801561004d575f80fd5b506100566100c0565b60405161006391906105a4565b60405180910390f35b348015610077575f80fd5b5061008061054e565b60405161008d9190610637565b60405180910390f35b3480156100a1575f80fd5b506100aa610566565b6040516100b79190610670565b60405180910390f35b5f60025f5403610105576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100fc906106e3565b60405180910390fd5b60025f819055505f4790505f60028261011e9190610764565b90505f8211925082610165576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161015c906107de565b60405180910390fd5b5f600267ffffffffffffffff811115610181576101806107fc565b5b6040519080825280602002602001820160405280156101af5781602001602082028036833780820191505090505b50905073a1077a294dde1b09bb078844df40758a5d0f9a27815f815181106101da576101d9610829565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000dce001f55da9c00c438d4129c6f02000b818e7928160018151811061024957610248610829565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505073165c3410fc91ef562c50559f7d2289febed552d973ffffffffffffffffffffffffffffffffffffffff16637ff36ab5835f843060b4426102c49190610856565b6040518663ffffffff1660e01b81526004016102e394939291906109a8565b5f6040518083038185885af11580156102fe573d5f803e3d5ffd5b50505050506040513d5f823e3d601f19601f820116820180604052508101906103279190610b50565b505f7f000000000000000000000000dce001f55da9c00c438d4129c6f02000b818e79273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016103829190610b97565b602060405180830381865afa15801561039d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103c19190610bb0565b90505f4790507f000000000000000000000000dce001f55da9c00c438d4129c6f02000b818e79273ffffffffffffffffffffffffffffffffffffffff1663095ea7b373165c3410fc91ef562c50559f7d2289febed552d9846040518363ffffffff1660e01b8152600401610436929190610bdb565b6020604051808303815f875af1158015610452573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104769190610c2c565b5073165c3410fc91ef562c50559f7d2289febed552d973ffffffffffffffffffffffffffffffffffffffff1663f305d719827f000000000000000000000000dce001f55da9c00c438d4129c6f02000b818e792855f805f60b4426104da9190610856565b6040518863ffffffff1660e01b81526004016104fb96959493929190610c57565b60606040518083038185885af1158015610517573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061053c9190610cb6565b505050505050505060015f8190555090565b73165c3410fc91ef562c50559f7d2289febed552d981565b7f000000000000000000000000dce001f55da9c00c438d4129c6f02000b818e79281565b5f8115159050919050565b61059e8161058a565b82525050565b5f6020820190506105b75f830184610595565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f819050919050565b5f6105ff6105fa6105f5846105bd565b6105dc565b6105bd565b9050919050565b5f610610826105e5565b9050919050565b5f61062182610606565b9050919050565b61063181610617565b82525050565b5f60208201905061064a5f830184610628565b92915050565b5f61065a82610606565b9050919050565b61066a81610650565b82525050565b5f6020820190506106835f830184610661565b92915050565b5f82825260208201905092915050565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c005f82015250565b5f6106cd601f83610689565b91506106d882610699565b602082019050919050565b5f6020820190508181035f8301526106fa816106c1565b9050919050565b5f819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61076e82610701565b915061077983610701565b9250826107895761078861070a565b5b828204905092915050565b7f43414e4e4f545f424f4f53545f5a45524f5f504c5300000000000000000000005f82015250565b5f6107c8601583610689565b91506107d382610794565b602082019050919050565b5f6020820190508181035f8301526107f5816107bc565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f61086082610701565b915061086b83610701565b925082820190508082111561088357610882610737565b5b92915050565b5f819050919050565b5f6108ac6108a76108a284610889565b6105dc565b610701565b9050919050565b6108bc81610892565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f6108f5826105bd565b9050919050565b610905816108eb565b82525050565b5f61091683836108fc565b60208301905092915050565b5f602082019050919050565b5f610938826108c2565b61094281856108cc565b935061094d836108dc565b805f5b8381101561097d578151610964888261090b565b975061096f83610922565b925050600181019050610950565b5085935050505092915050565b610993816108eb565b82525050565b6109a281610701565b82525050565b5f6080820190506109bb5f8301876108b3565b81810360208301526109cd818661092e565b90506109dc604083018561098a565b6109e96060830184610999565b95945050505050565b5f604051905090565b5f80fd5b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b610a2082610a07565b810181811067ffffffffffffffff82111715610a3f57610a3e6107fc565b5b80604052505050565b5f610a516109f2565b9050610a5d8282610a17565b919050565b5f67ffffffffffffffff821115610a7c57610a7b6107fc565b5b602082029050602081019050919050565b5f80fd5b610a9a81610701565b8114610aa4575f80fd5b50565b5f81519050610ab581610a91565b92915050565b5f610acd610ac884610a62565b610a48565b90508083825260208201905060208402830185811115610af057610aef610a8d565b5b835b81811015610b195780610b058882610aa7565b845260208401935050602081019050610af2565b5050509392505050565b5f82601f830112610b3757610b36610a03565b5b8151610b47848260208601610abb565b91505092915050565b5f60208284031215610b6557610b646109fb565b5b5f82015167ffffffffffffffff811115610b8257610b816109ff565b5b610b8e84828501610b23565b91505092915050565b5f602082019050610baa5f83018461098a565b92915050565b5f60208284031215610bc557610bc46109fb565b5b5f610bd284828501610aa7565b91505092915050565b5f604082019050610bee5f83018561098a565b610bfb6020830184610999565b9392505050565b610c0b8161058a565b8114610c15575f80fd5b50565b5f81519050610c2681610c02565b92915050565b5f60208284031215610c4157610c406109fb565b5b5f610c4e84828501610c18565b91505092915050565b5f60c082019050610c6a5f83018961098a565b610c776020830188610999565b610c8460408301876108b3565b610c9160608301866108b3565b610c9e608083018561098a565b610cab60a0830184610999565b979650505050505050565b5f805f60608486031215610ccd57610ccc6109fb565b5b5f610cda86828701610aa7565b9350506020610ceb86828701610aa7565b9250506040610cfc86828701610aa7565b915050925092509256fea26469706673582212202940eeb7333ad4c14f297fc5a45b6fdfa9908b4b9f4731994c9c3d6a250000dc64736f6c63430008140033