ETH Price: $3,709.00 (+2.21%)
 

Overview

Max Total Supply

610,712.62397769256398256 iIMX-9

Holders

425

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Filtered by Token Holder
aralekor.eth
Balance
0.002752675988468442 iIMX-9

Value
$0.00
0x475b6ff6603F17177B7E419d1aD2791fb82a3a56
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Similar Match Source Code
This contract matches the deployed Bytecode of the Source Code for Contract 0xbD8b5a61...677872A6f
The constructor portion of the code might be different and could alter the actual behaviour of the contract

Contract Name:
Borrowable

Compiler Version
v0.5.16+commit.9c3226ce

Optimization Enabled:
Yes with 999999 runs

Other Settings:
default evmVersion
File 1 of 16 : Borrowable.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
pragma solidity =0.5.16;
import "./PoolToken.sol";
import "./BAllowance.sol";
import "./BInterestRateModel.sol";
import "./BSetter.sol";
import "./BStorage.sol";
import "./interfaces/IBorrowable.sol";
import "./interfaces/ICollateral.sol";
import "./interfaces/IImpermaxCallee.sol";
import "./interfaces/IERC20.sol";
import "./interfaces/IFactory.sol";
import "./interfaces/IBorrowTracker.sol";
import "./libraries/Math.sol";
contract Borrowable is IBorrowable, PoolToken, BStorage, BSetter, BInterestRateModel, BAllowance {
uint public constant BORROW_FEE = 0.001e18; //0.1%
event Borrow(address indexed sender, address indexed borrower, address indexed receiver, uint borrowAmount, uint repayAmount, uint
        accountBorrowsPrior, uint accountBorrows, uint totalBorrows);
event Liquidate(address indexed sender, address indexed borrower, address indexed liquidator, uint seizeTokens, uint repayAmount, uint
        accountBorrowsPrior, uint accountBorrows, uint totalBorrows);
constructor() public {}
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 2 of 16 : BAllowance.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
pragma solidity =0.5.16;
import "./BStorage.sol";
import "./PoolToken.sol";
contract BAllowance is PoolToken, BStorage {
event BorrowApproval(address indexed owner, address indexed spender, uint256 value);
function _borrowApprove(address owner, address spender, uint256 value) private {
borrowAllowance[owner][spender] = value;
emit BorrowApproval(owner, spender, value);
}
function borrowApprove(address spender, uint256 value) external returns (bool) {
_borrowApprove(msg.sender, spender, value);
return true;
}
function _checkBorrowAllowance(address owner, address spender, uint256 value) internal {
uint _borrowAllowance = borrowAllowance[owner][spender];
if (spender != owner && _borrowAllowance != uint256(-1)) {
require(_borrowAllowance >= value, "Impermax: BORROW_NOT_ALLOWED");
borrowAllowance[owner][spender] = _borrowAllowance - value;
}
}
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 3 of 16 : BInterestRateModel.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
pragma solidity =0.5.16;
import "./BStorage.sol";
import "./PoolToken.sol";
contract BInterestRateModel is PoolToken, BStorage {
// When utilization is 100% borrowRate is kinkBorrowRate * KINK_MULTIPLIER
// kinkBorrowRate relative adjustment per second belongs to [1-adjustSpeed, 1+adjustSpeed*(KINK_MULTIPLIER-1)]
uint public constant KINK_MULTIPLIER = 5;
uint public constant KINK_BORROW_RATE_MAX = 31.7097920e9; //100% per year
uint public constant KINK_BORROW_RATE_MIN = 0.31709792e9; //1% per year
event AccrueInterest(uint interestAccumulated, uint borrowIndex, uint totalBorrows);
event CalculateKinkBorrowRate(uint kinkBorrowRate);
event CalculateBorrowRate(uint borrowRate);
function _calculateBorrowRate() internal {
uint _kinkUtilizationRate = kinkUtilizationRate;
uint _adjustSpeed = adjustSpeed;
uint _borrowRate = borrowRate;
uint _kinkBorrowRate = kinkBorrowRate;
uint32 _rateUpdateTimestamp = rateUpdateTimestamp;
// update kinkBorrowRate using previous borrowRate
uint32 timeElapsed = getBlockTimestamp() - _rateUpdateTimestamp; // underflow is desired
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 4 of 16 : BSetter.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
pragma solidity =0.5.16;
import "./BStorage.sol";
import "./PoolToken.sol";
import "./interfaces/IFactory.sol";
contract BSetter is PoolToken, BStorage {
uint public constant RESERVE_FACTOR_MAX = 0.20e18; //20%
uint public constant KINK_UR_MIN = 0.50e18; //50%
uint public constant KINK_UR_MAX = 0.99e18; //99%
uint public constant ADJUST_SPEED_MIN = 0.05787037e12; //0.5% per day
uint public constant ADJUST_SPEED_MAX = 5.787037e12; //50% per day
event NewReserveFactor(uint newReserveFactor);
event NewKinkUtilizationRate(uint newKinkUtilizationRate);
event NewAdjustSpeed(uint newAdjustSpeed);
event NewBorrowTracker(address newBorrowTracker);
// called once by the factory at time of deployment
function _initialize (
string calldata _name,
string calldata _symbol,
address _underlying,
address _collateral
) external {
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 5 of 16 : BStorage.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
pragma solidity =0.5.16;
contract BStorage {
address public collateral;
mapping (address => mapping (address => uint256)) public borrowAllowance;
struct BorrowSnapshot {
uint112 principal; // amount in underlying when the borrow was last updated
uint112 interestIndex; // borrow index when borrow was last updated
}
mapping(address => BorrowSnapshot) internal borrowBalances;
// use one memory slot
uint112 public borrowIndex = 1e18;
uint112 public totalBorrows;
uint32 public accrualTimestamp = uint32(block.timestamp % 2**32);
uint public exchangeRateLast;
// use one memory slot
uint48 public borrowRate;
uint48 public kinkBorrowRate = 3.1709792e9; //10% per year
uint32 public rateUpdateTimestamp = uint32(block.timestamp % 2**32);
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 6 of 16 : ImpermaxERC20.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
pragma solidity =0.5.16;
import "./libraries/SafeMath.sol";
// This contract is basically UniswapV2ERC20 with small modifications
// src: https://github.com/Uniswap/uniswap-v2-core/blob/master/contracts/UniswapV2ERC20.sol
contract ImpermaxERC20 {
using SafeMath for uint;
string public name;
string public symbol;
uint8 public decimals = 18;
uint public totalSupply;
mapping(address => uint) public balanceOf;
mapping(address => mapping(address => uint)) public allowance;
bytes32 public DOMAIN_SEPARATOR;
mapping(address => uint) public nonces;
event Transfer(address indexed from, address indexed to, uint value);
event Approval(address indexed owner, address indexed spender, uint value);
constructor() public {}
function _setName(string memory _name, string memory _symbol) internal {
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 7 of 16 : PoolToken.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
pragma solidity =0.5.16;
import "./ImpermaxERC20.sol";
import "./interfaces/IERC20.sol";
import "./interfaces/IPoolToken.sol";
import "./libraries/SafeMath.sol";
contract PoolToken is IPoolToken, ImpermaxERC20 {
uint internal constant initialExchangeRate = 1e18;
address public underlying;
address public factory;
uint public totalBalance;
uint public constant MINIMUM_LIQUIDITY = 1000;
event Mint(address indexed sender, address indexed minter, uint mintAmount, uint mintTokens);
event Redeem(address indexed sender, address indexed redeemer, uint redeemAmount, uint redeemTokens);
event Sync(uint totalBalance);
/*** Initialize ***/
// called once by the factory
function _setFactory() external {
require(factory == address(0), "Impermax: FACTORY_ALREADY_SET");
factory = msg.sender;
}
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 8 of 16 : IBorrowTracker.sol
1
2
3
4
5
pragma solidity >=0.5.0;
interface IBorrowTracker {
function trackBorrow(address borrower, uint borrowBalance, uint borrowIndex) external;
}
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 9 of 16 : IBorrowable.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
pragma solidity >=0.5.0;
interface IBorrowable {
/*** Impermax ERC20 ***/
event Transfer(address indexed from, address indexed to, uint value);
event Approval(address indexed owner, address indexed spender, uint value);
function name() external pure returns (string memory);
function symbol() external pure returns (string memory);
function decimals() external pure returns (uint8);
function totalSupply() external view returns (uint);
function balanceOf(address owner) external view returns (uint);
function allowance(address owner, address spender) external view returns (uint);
function approve(address spender, uint value) external returns (bool);
function transfer(address to, uint value) external returns (bool);
function transferFrom(address from, address to, uint value) external returns (bool);
function DOMAIN_SEPARATOR() external view returns (bytes32);
function PERMIT_TYPEHASH() external pure returns (bytes32);
function nonces(address owner) external view returns (uint);
function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;
/*** Pool Token ***/
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 10 of 16 : ICollateral.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
pragma solidity >=0.5.0;
interface ICollateral {
/*** Impermax ERC20 ***/
event Transfer(address indexed from, address indexed to, uint value);
event Approval(address indexed owner, address indexed spender, uint value);
function name() external pure returns (string memory);
function symbol() external pure returns (string memory);
function decimals() external pure returns (uint8);
function totalSupply() external view returns (uint);
function balanceOf(address owner) external view returns (uint);
function allowance(address owner, address spender) external view returns (uint);
function approve(address spender, uint value) external returns (bool);
function transfer(address to, uint value) external returns (bool);
function transferFrom(address from, address to, uint value) external returns (bool);
function DOMAIN_SEPARATOR() external view returns (bytes32);
function PERMIT_TYPEHASH() external pure returns (bytes32);
function nonces(address owner) external view returns (uint);
function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;
/*** Pool Token ***/
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 11 of 16 : IERC20.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
pragma solidity >=0.5.0;
interface IERC20 {
event Approval(address indexed owner, address indexed spender, uint value);
event Transfer(address indexed from, address indexed to, uint value);
function name() external view returns (string memory);
function symbol() external view returns (string memory);
function decimals() external view returns (uint8);
function totalSupply() external view returns (uint);
function balanceOf(address owner) external view returns (uint);
function allowance(address owner, address spender) external view returns (uint);
function approve(address spender, uint value) external returns (bool);
function transfer(address to, uint value) external returns (bool);
function transferFrom(address from, address to, uint value) external returns (bool);
}
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 12 of 16 : IFactory.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
pragma solidity >=0.5.0;
interface IFactory {
event LendingPoolInitialized(address indexed uniswapV2Pair, address indexed token0, address indexed token1,
address collateral, address borrowable0, address borrowable1, uint lendingPoolId);
event NewPendingAdmin(address oldPendingAdmin, address newPendingAdmin);
event NewAdmin(address oldAdmin, address newAdmin);
event NewReservesPendingAdmin(address oldReservesPendingAdmin, address newReservesPendingAdmin);
event NewReservesAdmin(address oldReservesAdmin, address newReservesAdmin);
event NewReservesManager(address oldReservesManager, address newReservesManager);
function admin() external view returns (address);
function pendingAdmin() external view returns (address);
function reservesAdmin() external view returns (address);
function reservesPendingAdmin() external view returns (address);
function reservesManager() external view returns (address);
function getLendingPool(address uniswapV2Pair) external view returns (
bool initialized,
uint24 lendingPoolId,
address collateral,
address borrowable0,
address borrowable1
);
function allLendingPools(uint) external view returns (address uniswapV2Pair);
function allLendingPoolsLength() external view returns (uint);
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 13 of 16 : IImpermaxCallee.sol
1
2
3
4
5
6
pragma solidity >=0.5.0;
interface IImpermaxCallee {
function impermaxBorrow(address sender, address borrower, uint borrowAmount, bytes calldata data) external;
function impermaxRedeem(address sender, uint redeemAmount, bytes calldata data) external;
}
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 14 of 16 : IPoolToken.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
pragma solidity >=0.5.0;
interface IPoolToken {
/*** Impermax ERC20 ***/
event Transfer(address indexed from, address indexed to, uint value);
event Approval(address indexed owner, address indexed spender, uint value);
function name() external pure returns (string memory);
function symbol() external pure returns (string memory);
function decimals() external pure returns (uint8);
function totalSupply() external view returns (uint);
function balanceOf(address owner) external view returns (uint);
function allowance(address owner, address spender) external view returns (uint);
function approve(address spender, uint value) external returns (bool);
function transfer(address to, uint value) external returns (bool);
function transferFrom(address from, address to, uint value) external returns (bool);
function DOMAIN_SEPARATOR() external view returns (bytes32);
function PERMIT_TYPEHASH() external pure returns (bytes32);
function nonces(address owner) external view returns (uint);
function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;
/*** Pool Token ***/
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 15 of 16 : Math.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
pragma solidity =0.5.16;
// a library for performing various math operations
// forked from: https://github.com/Uniswap/uniswap-v2-core/blob/master/contracts/libraries/Math.sol
library Math {
function min(uint x, uint y) internal pure returns (uint z) {
z = x < y ? x : y;
}
// babylonian method (https://en.wikipedia.org/wiki/Methods_of_computing_square_roots#Babylonian_method)
function sqrt(uint y) internal pure returns (uint z) {
if (y > 3) {
z = y;
uint x = y / 2 + 1;
while (x < z) {
z = x;
x = (y / x + x) / 2;
}
} else if (y != 0) {
z = 1;
}
}
}
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 16 of 16 : SafeMath.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
pragma solidity =0.5.16;
// From https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/math/Math.sol
// Subject to the MIT license.
/**
* @dev Wrappers over Solidity's arithmetic operations with added overflow
* checks.
*
* Arithmetic operations in Solidity wrap on overflow. This can easily result
* in bugs, because programmers usually assume that an overflow raises an
* error, which is the standard behavior in high level programming languages.
* `SafeMath` restores this intuition by reverting the transaction when an
* operation overflows.
*
* Using this library instead of the unchecked operations eliminates an entire
* class of bugs, so it's recommended to use it always.
*/
library SafeMath {
/**
* @dev Returns the addition of two unsigned integers, reverting on overflow.
*
* Counterpart to Solidity's `+` operator.
*
* Requirements:
* - Addition cannot overflow.
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Settings
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
{
"remappings": [],
"optimizer": {
"enabled": true,
"runs": 999999
},
"evmVersion": "istanbul",
"libraries": {},
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"abi"
]
}
}
}
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Contract Security Audit

Contract ABI

[{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"interestAccumulated","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"borrowIndex","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"totalBorrows","type":"uint256"}],"name":"AccrueInterest","type":"event"},{"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":"sender","type":"address"},{"indexed":true,"internalType":"address","name":"borrower","type":"address"},{"indexed":true,"internalType":"address","name":"receiver","type":"address"},{"indexed":false,"internalType":"uint256","name":"borrowAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"repayAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"accountBorrowsPrior","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"accountBorrows","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"totalBorrows","type":"uint256"}],"name":"Borrow","type":"event"},{"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":"BorrowApproval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"borrowRate","type":"uint256"}],"name":"CalculateBorrowRate","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"kinkRate","type":"uint256"}],"name":"CalculateKink","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"kinkBorrowRate","type":"uint256"}],"name":"CalculateKinkBorrowRate","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":true,"internalType":"address","name":"borrower","type":"address"},{"indexed":true,"internalType":"address","name":"liquidator","type":"address"},{"indexed":false,"internalType":"uint256","name":"seizeTokens","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"repayAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"accountBorrowsPrior","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"accountBorrows","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"totalBorrows","type":"uint256"}],"name":"Liquidate","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":true,"internalType":"address","name":"minter","type":"address"},{"indexed":false,"internalType":"uint256","name":"mintAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"mintTokens","type":"uint256"}],"name":"Mint","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAdjustSpeed","type":"uint256"}],"name":"NewAdjustSpeed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newBorrowTracker","type":"address"}],"name":"NewBorrowTracker","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newKinkUtilizationRate","type":"uint256"}],"name":"NewKinkUtilizationRate","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newReserveFactor","type":"uint256"}],"name":"NewReserveFactor","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":true,"internalType":"address","name":"redeemer","type":"address"},{"indexed":false,"internalType":"uint256","name":"redeemAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"redeemTokens","type":"uint256"}],"name":"Redeem","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"totalBalance","type":"uint256"}],"name":"Sync","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"},{"constant":true,"inputs":[],"name":"ADJUST_SPEED_MAX","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"ADJUST_SPEED_MIN","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"BORROW_FEE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"BORROW_PERMIT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"KINK_BORROW_RATE_MAX","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"KINK_BORROW_RATE_MIN","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"KINK_MULTIPLIER","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"KINK_UR_MAX","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"KINK_UR_MIN","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"MINIMUM_LIQUIDITY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"PERMIT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"RESERVE_FACTOR_MAX","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"address","name":"_underlying","type":"address"},{"internalType":"address","name":"_collateral","type":"address"}],"name":"_initialize","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"newAdjustSpeed","type":"uint256"}],"name":"_setAdjustSpeed","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"newBorrowTracker","type":"address"}],"name":"_setBorrowTracker","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"_setFactory","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"newKinkUtilizationRate","type":"uint256"}],"name":"_setKinkUtilizationRate","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"newReserveFactor","type":"uint256"}],"name":"_setReserveFactor","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"accrualTimestamp","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"accrueInterest","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"adjustSpeed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"borrower","type":"address"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"borrowAmount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"borrow","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"borrowAllowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"borrowApprove","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"borrower","type":"address"}],"name":"borrowBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"borrowIndex","outputs":[{"internalType":"uint112","name":"","type":"uint112"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"borrowPermit","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"borrowRate","outputs":[{"internalType":"uint48","name":"","type":"uint48"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"borrowTracker","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"collateral","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"exchangeRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"exchangeRateLast","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"factory","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getBlockTimestamp","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"kinkBorrowRate","outputs":[{"internalType":"uint48","name":"","type":"uint48"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"kinkUtilizationRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"borrower","type":"address"},{"internalType":"address","name":"liquidator","type":"address"}],"name":"liquidate","outputs":[{"internalType":"uint256","name":"seizeTokens","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"minter","type":"address"}],"name":"mint","outputs":[{"internalType":"uint256","name":"mintTokens","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"rateUpdateTimestamp","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"redeemer","type":"address"}],"name":"redeem","outputs":[{"internalType":"uint256","name":"redeemAmount","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"reserveFactor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"to","type":"address"}],"name":"skim","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"sync","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalBorrows","outputs":[{"internalType":"uint112","name":"","type":"uint112"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"borrower","type":"address"}],"name":"trackBorrow","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"underlying","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"}]

60806040526002805460ff199081166012908117909255600b80549091166001179055600e80546001600160701b031916670de0b6b3a7640000176001600160e01b0316600160e01b4263ffffffff16908102919091179091556010805465ffffffffffff60301b191669bd014d800000000000001763ffffffff60601b19166c0100000000000000000000000090920291909117905567016345785d8a00006011556709b6e64a8ec6000090556486bd6db0206013553480156100c257600080fd5b5061449a806100d26000396000f3fe608060405234801561001057600080fd5b50600436106103995760003560e01c806370a08231116101e9578063b7f1118a1161010f578063c914b437116100ad578063e07660001161007c578063e076600014610b8b578063e12b630614610b93578063fca7820b14610b9b578063fff6cae914610bb857610399565b8063c914b43714610ae2578063d505accf14610aea578063d8dfeb4514610b48578063dd62ed3e14610b5057610399565b8063bc25cf77116100e9578063bc25cf7714610a97578063be340e3214610aca578063c45a015514610ad2578063c72f3fbb14610ada57610399565b8063b7f1118a14610a54578063b95b92a314610a87578063ba9a7a5614610a8f57610399565b806395a2251f11610187578063a6afed9511610156578063a6afed9514610a03578063a9059cbb14610a0b578063aa5af0fd14610a44578063ad7a672f14610a4c57610399565b806395a2251f1461096257806395d89b41146109955780639e79b55c1461099d578063a0715719146109fb57610399565b806386b9d81f116101c357806386b9d81f146108ae57806391b42745146108e9578063926d845b1461090c5780639292b0321461094557610399565b806370a0823114610827578063796b89b91461085a5780637ecebe001461087b57610399565b806335542822116102ce5780634d73e9ba1161026c5780636a030c111161023b5780636a030c11146106d15780636a627842146107b15780636bd76d24146107e45780636f307dc31461081f57610399565b80634d73e9ba1461065d57806355957220146106905780635b2b9d1a146106c157806368544065146106c957610399565b80634322b714116102a85780634322b7141461061a578063452ae95f1461062257806347bd37181461062a5780634a5d316c1461065557610399565b806335542822146105d75780633644e5151461060a5780633ba0b9a91461061257610399565b80632374e8a91161033b57806327549a0b1161031557806327549a0b1461058c5780632d5231d3146105a957806330adf81f146105b1578063313ce567146105b957610399565b80632374e8a91461053957806323b872dd14610541578063253c24f31461058457610399565b8063095ea7b311610377578063095ea7b31461043d57806318160ddd1461048a5780631aebf12f146104925780631e7dcc0d1461049a57610399565b806301f8c1c81461039e57806306fdde03146103b8578063075f4e7f14610435575b600080fd5b6103a6610bc0565b60408051918252519081900360200190f35b6103c0610be4565b6040805160208082528351818301528351919283929083019185019080838360005b838110156103fa5781810151838201526020016103e2565b50505050905090810190601f1680156104275780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6103a6610c90565b6104766004803603604081101561045357600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610c99565b604080519115158252519081900360200190f35b6103a6610cb0565b6103a6610cb6565b610537600480360360808110156104b057600080fd5b73ffffffffffffffffffffffffffffffffffffffff8235811692602081013590911691604082013591908101906080810160608201356401000000008111156104f857600080fd5b82018360208201111561050a57600080fd5b8035906020019184600183028401116401000000008311171561052c57600080fd5b509092509050610cbc565b005b6103a661123c565b6104766004803603606081101561055757600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135611248565b6103a661135c565b610537600480360360208110156105a257600080fd5b5035611366565b6103a661147b565b6103a6611481565b6105c16114a5565b6040805160ff9092168252519081900360200190f35b610537600480360360208110156105ed57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166114ae565b6103a66115f3565b6103a66115f9565b6103a6611692565b6103a6611698565b6106326116a1565b604080516dffffffffffffffffffffffffffff9092168252519081900360200190f35b6105376116c9565b6103a66004803603602081101561067357600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661177a565b610698611830565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6103a661184c565b6103a6611851565b610537600480360360808110156106e757600080fd5b81019060208101813564010000000081111561070257600080fd5b82018360208201111561071457600080fd5b8035906020019184600183028401116401000000008311171561073657600080fd5b91939092909160208101903564010000000081111561075457600080fd5b82018360208201111561076657600080fd5b8035906020019184600183028401116401000000008311171561078857600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff8135811691602001351661185d565b6103a6600480360360208110156107c757600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166119de565b6103a6600480360360408110156107fa57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516611c8c565b610698611ca9565b6103a66004803603602081101561083d57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611cc5565b610862611cd7565b6040805163ffffffff9092168252519081900360200190f35b6103a66004803603602081101561089157600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611ce1565b6103a6600480360360408110156108c457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516611cf3565b6108f1611fe0565b6040805165ffffffffffff9092168252519081900360200190f35b6104766004803603604081101561092257600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135611ff8565b6105376004803603602081101561095b57600080fd5b5035612005565b6103a66004803603602081101561097857600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661211f565b6103c0612343565b610537600480360360e08110156109b357600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c001356123bb565b6103a66123ff565b61053761240a565b61047660048036036040811015610a2157600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135612649565b610632612656565b6103a661266c565b61053760048036036020811015610a6a57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16612672565b61086261269a565b6103a66126c6565b61053760048036036020811015610aad57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166126cc565b6103a661284f565b610698612855565b6103a6612871565b6108f161287d565b610537600480360360e0811015610b0057600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c0013561288b565b6106986128c6565b6103a660048036036040811015610b6657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160200135166128e7565b6103a6612904565b61086261290c565b61053760048036036020811015610bb157600080fd5b5035612928565b610537612a3b565b7ff6d86ed606f871fa1a557ac0ba607adce07767acf53f492fb215a1a4db4aea6f81565b6000805460408051602060026001851615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190941693909304601f81018490048402820184019092528181529291830182828015610c885780601f10610c5d57610100808354040283529160200191610c88565b820191906000526020600020905b815481529060010190602001808311610c6b57829003601f168201915b505050505081565b640d7957c4d081565b6000610ca6338484612b11565b5060015b92915050565b60035481565b60125481565b600b5460ff16610d2d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f496d7065726d61783a205245454e544552454400000000000000000000000000604482015290519081900360640190fd5b600b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055610d5d61240a565b600a5480841115610dcf57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f496d7065726d61783a20494e53554646494349454e545f434153480000000000604482015290519081900360640190fd5b610dda863386612b80565b8315610dea57610dea8585612c97565b8115610ec2576040517f876d9d9e000000000000000000000000000000000000000000000000000000008152336004820181815273ffffffffffffffffffffffffffffffffffffffff898116602485015260448401889052608060648501908152608485018790529089169363876d9d9e93928b928a928a928a92909160a401848480828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b158015610ea957600080fd5b505af1158015610ebd573d6000803e3d6000fd5b505050505b600854604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905160009273ffffffffffffffffffffffffffffffffffffffff16916370a08231916024808301926020929190829003018186803b158015610f3357600080fd5b505afa158015610f47573d6000803e3d6000fd5b505050506040513d6020811015610f5d57600080fd5b505190506000610f92670de0b6b3a7640000610f868866038d7ea4c6800063ffffffff612e9d16565b9063ffffffff612f1716565b90506000610fa6878363ffffffff612f5916565b90506000610fca85610fbe868b63ffffffff612f5916565b9063ffffffff612fcd16565b90506000806000610fdc8d868661300f565b9250925092508385111561115e57600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639aac2c538e30856040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b1580156110c757600080fd5b505af11580156110db573d6000803e3d6000fd5b505050506040513d60208110156110f157600080fd5b505161115e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f496d7065726d61783a20494e53554646494349454e545f4c4951554944495459604482015290519081900360640190fd5b8b73ffffffffffffffffffffffffffffffffffffffff168d73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f33f3048bd4e6af45e53afb722adfd57dbde82da7e93e44db921fb4b8c6a70c4b8e88888888604051808681526020018581526020018481526020018381526020018281526020019550505050505060405180910390a4505050505050505061120a61332b565b5050600b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055505050565b6706f05b59d3b2000081565b73ffffffffffffffffffffffffffffffffffffffff831660009081526005602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1461134757604080518082018252601e81527f496d7065726d61783a205452414e534645525f4e4f545f414c4c4f574544000060208083019190915273ffffffffffffffffffffffffffffffffffffffff8716600090815260058252838120338252909152919091205461131591849063ffffffff61333b16565b73ffffffffffffffffffffffffffffffffffffffff851660009081526005602090815260408083203384529091529020555b6113528484846133ec565b5060019392505050565b6505436648e14081565b600b5460ff166113d757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f496d7065726d61783a205245454e544552454400000000000000000000000000604482015290519081900360640190fd5b600b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905561141581640d7957c4d06505436648e140613505565b60138190556040805182815290517f1396dfcdb64fb7eb77fb84966f27b81afe14aa70b6e966c68d74af3302a9fe909181900360200190a150600b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b60135481565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b60025460ff1681565b600b5460ff1661151f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f496d7065726d61783a205245454e544552454400000000000000000000000000604482015290519081900360640190fd5b600b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905561154f6135f0565b6014805473ffffffffffffffffffffffffffffffffffffffff83167fffffffffffffffffffffffff0000000000000000000000000000000000000000909116811790915560408051918252517f468b6598e7e810c65c9858b5f23a2d5b8692fb753b78a032232de4c6ed3cabbf9181900360200190a150600b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b60065481565b600061160361240a565b600354600e54600a5460009161163b91906e01000000000000000000000000000090046dffffffffffffffffffffffffffff16612f59565b9050811580611648575080155b1561165f57670de0b6b3a76400009250505061168f565b600061167d83610f8684670de0b6b3a764000063ffffffff612e9d16565b90506116898184613707565b93505050505b90565b60115481565b6407620d070081565b600e546e01000000000000000000000000000090046dffffffffffffffffffffffffffff1681565b60095473ffffffffffffffffffffffffffffffffffffffff161561174e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f496d7065726d61783a20464143544f52595f414c52454144595f534554000000604482015290519081900360640190fd5b600980547fffffffffffffffffffffffff00000000000000000000000000000000000000001633179055565b600061178461434d565b5073ffffffffffffffffffffffffffffffffffffffff82166000908152600d60209081526040918290208251808401909352546dffffffffffffffffffffffffffff80821684526e010000000000000000000000000000909104169082018190526117f357600091505061182b565b6020810151600e548251611827926dffffffffffffffffffffffffffff90811692610f86928216911663ffffffff612e9d16565b9150505b919050565b60145473ffffffffffffffffffffffffffffffffffffffff1681565b600581565b670dbd2fc137a3000081565b60095473ffffffffffffffffffffffffffffffffffffffff1633146118e357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f496d7065726d61783a20554e415554484f52495a454400000000000000000000604482015290519081900360640190fd5b61195686868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8a01819004810282018101909252888152925088915087908190840183828082843760009201919091525061384292505050565b6008805473ffffffffffffffffffffffffffffffffffffffff9384167fffffffffffffffffffffffff0000000000000000000000000000000000000000909116179055600b805491909216610100027fffffffffffffffffffffff0000000000000000000000000000000000000000ff9091161790555050670de0b6b3a7640000600f555050565b600b5460009060ff16611a5257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f496d7065726d61783a205245454e544552454400000000000000000000000000604482015290519081900360640190fd5b600b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055600854604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905160009273ffffffffffffffffffffffffffffffffffffffff16916370a08231916024808301926020929190829003018186803b158015611aeb57600080fd5b505afa158015611aff573d6000803e3d6000fd5b505050506040513d6020811015611b1557600080fd5b5051600a54909150600090611b3190839063ffffffff612fcd16565b9050611b56611b3e6115f9565b610f8683670de0b6b3a764000063ffffffff612e9d16565b925060035460001415611b8457611b75836103e863ffffffff612fcd16565b9250611b8460006103e8613926565b60008311611bf357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f496d7065726d61783a204d494e545f414d4f554e545f5a45524f000000000000604482015290519081900360640190fd5b611bfd8484613926565b6040805182815260208101859052815173ffffffffffffffffffffffffffffffffffffffff87169233927f2f00e3cdd69a77be7ed215ec7b2a36784dd158f921fca79ac29deffa353fe6ee929081900390910190a35050611c5c61332b565b600b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055919050565b600c60209081526000928352604080842090915290825290205481565b60085473ffffffffffffffffffffffffffffffffffffffff1681565b60046020526000908152604090205481565b63ffffffff421690565b60076020526000908152604090205481565b600b5460009060ff16611d6757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f496d7065726d61783a205245454e544552454400000000000000000000000000604482015290519081900360640190fd5b600b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055611d9761240a565b600854604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905160009273ffffffffffffffffffffffffffffffffffffffff16916370a08231916024808301926020929190829003018186803b158015611e0857600080fd5b505afa158015611e1c573d6000803e3d6000fd5b505050506040513d6020811015611e3257600080fd5b5051600a54909150600090611e4e90839063ffffffff612fcd16565b90506000611e64611e5e8761177a565b836139d7565b600b54604080517fb2a02ff100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff89811660048301528a81166024830152604482018590529151939450610100909204169163b2a02ff1916064808201926020929091908290030181600087803b158015611eef57600080fd5b505af1158015611f03573d6000803e3d6000fd5b505050506040513d6020811015611f1957600080fd5b5051935060008080611f2c89828761300f565b604080518b8152602081018a905280820185905260608101849052608081018390529051939650919450925073ffffffffffffffffffffffffffffffffffffffff808b1692908c169133917fb0dbe18c6ffdf0da655dd690e77211d379205c497be44c64447c3f5f021b51679181900360a00190a4505050505050611faf61332b565b600b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905592915050565b6010546601000000000000900465ffffffffffff1681565b6000610ca63384846139ed565b600b5460ff1661207657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f496d7065726d61783a205245454e544552454400000000000000000000000000604482015290519081900360640190fd5b600b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690556120b9816706f05b59d3b20000670dbd2fc137a30000613505565b60128190556040805182815290517f7a550b1995ff63260fb313f12024e66e73bad425372e5af6b1e04cb3799ef38c9181900360200190a150600b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b600b5460009060ff1661219357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f496d7065726d61783a205245454e544552454400000000000000000000000000604482015290519081900360640190fd5b600b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055306000908152600460205260409020546121ef670de0b6b3a7640000610f866121e26115f9565b849063ffffffff612e9d16565b91506000821161226057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f496d7065726d61783a2052454445454d5f414d4f554e545f5a45524f00000000604482015290519081900360640190fd5b600a548211156122d157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f496d7065726d61783a20494e53554646494349454e545f434153480000000000604482015290519081900360640190fd5b6122db3082613a5c565b6122e58383612c97565b6040805183815260208101839052815173ffffffffffffffffffffffffffffffffffffffff86169233927f3f693fff038bb8a046aa76d9516190ac7444f7d69cf952c4cbdc086fdef2d6fc929081900390910190a350611c5c61332b565b60018054604080516020600284861615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190941693909304601f81018490048402820184019092528181529291830182828015610c885780601f10610c5d57610100808354040283529160200191610c88565b6123eb878787878787877ff6d86ed606f871fa1a557ac0ba607adce07767acf53f492fb215a1a4db4aea6f613b20565b6123f68787876139ed565b50505050505050565b66038d7ea4c6800081565b600e546dffffffffffffffffffffffffffff808216916e0100000000000000000000000000008104909116907c0100000000000000000000000000000000000000000000000000000000900463ffffffff166000612466611cd7565b90508063ffffffff168263ffffffff1614156124855750505050612647565b600e805463ffffffff8084167c0100000000000000000000000000000000000000000000000000000000027bffffffffffffffffffffffffffffffffffffffffffffffffffffffff90921691909117909155601054838303916000916124fa9165ffffffffffff9091169080851690612e9d16565b9050600061251a670de0b6b3a7640000610f86848963ffffffff612e9d16565b905061252c868263ffffffff612f5916565b955061255a61254d670de0b6b3a7640000610f86858b63ffffffff612e9d16565b889063ffffffff612f5916565b965061256587613dc3565b600e80547fffffffffffffffffffffffffffffffffffff0000000000000000000000000000166dffffffffffffffffffffffffffff929092169190911790556125ad86613dc3565b600e80546dffffffffffffffffffffffffffff929092166e010000000000000000000000000000027fffffffff0000000000000000000000000000ffffffffffffffffffffffffffff909216919091179055604080518281526020810189905280820188905290517f875352fb3fadeb8c0be7cbbe8ff761b308fa7033470cd0287f02f3436fd76cb99181900360600190a1505050505050505b565b6000610ca63384846133ec565b600e546dffffffffffffffffffffffffffff1681565b600a5481565b6126978161267f8361177a565b600e546dffffffffffffffffffffffffffff16613e46565b50565b600e547c0100000000000000000000000000000000000000000000000000000000900463ffffffff1681565b6103e881565b600b5460ff1661273d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f496d7065726d61783a205245454e544552454400000000000000000000000000604482015290519081900360640190fd5b600b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055600a54600854604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905161282193859361281c93919273ffffffffffffffffffffffffffffffffffffffff909116916370a08231916024808301926020929190829003018186803b1580156127e457600080fd5b505afa1580156127f8573d6000803e3d6000fd5b505050506040513d602081101561280e57600080fd5b50519063ffffffff612fcd16565b612c97565b50600b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b600f5481565b60095473ffffffffffffffffffffffffffffffffffffffff1681565b6702c68af0bb14000081565b60105465ffffffffffff1681565b6128bb878787878787877f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9613b20565b6123f6878787612b11565b600b54610100900473ffffffffffffffffffffffffffffffffffffffff1681565b600560209081526000928352604080842090915290825290205481565b6312e687c081565b6010546c01000000000000000000000000900463ffffffff1681565b600b5460ff1661299957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f496d7065726d61783a205245454e544552454400000000000000000000000000604482015290519081900360640190fd5b600b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690556129d58160006702c68af0bb140000613505565b60118190556040805182815290517f9d9cd27245b4e6b06dcf523ac57b6e851b934e199eee376313f906e94bfbfd559181900360200190a150600b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b600b5460ff16612aac57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f496d7065726d61783a205245454e544552454400000000000000000000000000604482015290519081900360640190fd5b600b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055612adc61240a565b612ae461332b565b600b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b73ffffffffffffffffffffffffffffffffffffffff808416600081815260056020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b73ffffffffffffffffffffffffffffffffffffffff8084166000818152600c60209081526040808320948716808452949091529020549114801590612be557507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114155b15612c915781811015612c5957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f496d7065726d61783a20424f52524f575f4e4f545f414c4c4f57454400000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8085166000908152600c6020908152604080832093871683529290522082820390555b50505050565b600854604080518082018252601981527f7472616e7366657228616464726573732c75696e743235362900000000000000602091820152815173ffffffffffffffffffffffffffffffffffffffff86811660248301526044808301879052845180840390910181526064909201845291810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001781529251815160009560609594169382918083835b60208310612d9d57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101612d60565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114612dff576040519150601f19603f3d011682016040523d82523d6000602084013e612e04565b606091505b5091509150818015612e32575080511580612e325750808060200190516020811015612e2f57600080fd5b50515b612c9157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f496d7065726d61783a205452414e534645525f4641494c454400000000000000604482015290519081900360640190fd5b600082612eac57506000610caa565b82820282848281612eb957fe5b0414612f10576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806144456021913960400191505060405180910390fd5b9392505050565b6000612f1083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613f07565b600082820183811015612f1057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6000612f1083836040518060400160405280601f81526020017f536166654d6174683a207375627472616374696f6e20756e646572666c6f770081525061333b565b600080600061301d8661177a565b925083851415613055575050600e5481906e01000000000000000000000000000090046dffffffffffffffffffffffffffff16613322565b600e546dffffffffffffffffffffffffffff168486111561317d5773ffffffffffffffffffffffffffffffffffffffff87166000908152600d602052604090208587036130a8868263ffffffff612f5916565b94506130b385613dc3565b82547fffffffffffffffffffffffffffffffffffff0000000000000000000000000000166dffffffffffffffffffffffffffff918216177fffffffff0000000000000000000000000000ffffffffffffffffffffffffffff166e0100000000000000000000000000008583168102919091178455600e54613138929190041682612f59565b935061314384613dc3565b600e806101000a8154816dffffffffffffffffffffffffffff02191690836dffffffffffffffffffffffffffff1602179055505050613305565b73ffffffffffffffffffffffffffffffffffffffff87166000908152600d602052604090208686038086116131b35760006131b7565b8086035b94506131c285613dc3565b82547fffffffffffffffffffffffffffffffffffff0000000000000000000000000000166dffffffffffffffffffffffffffff919091161782558461322c5781547fffffffff0000000000000000000000000000ffffffffffffffffffffffffffff168255613276565b81547fffffffff0000000000000000000000000000ffffffffffffffffffffffffffff166e0100000000000000000000000000006dffffffffffffffffffffffffffff8516021782555b6000613288878763ffffffff612fcd16565b600e546e01000000000000000000000000000090046dffffffffffffffffffffffffffff16955090508085116132bf5760006132c3565b8085035b94506132ce85613dc3565b600e806101000a8154816dffffffffffffffffffffffffffff02191690836dffffffffffffffffffffffffffff1602179055505050505b6133208784836dffffffffffffffffffffffffffff16613e46565b505b93509350939050565b613333613f86565b61264761405c565b600081848411156133e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156133a9578181015183820152602001613391565b50505050905090810190601f1680156133d65780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b604080518082018252601b81527f496d7065726d61783a205452414e534645525f544f4f5f48494748000000000060208083019190915273ffffffffffffffffffffffffffffffffffffffff861660009081526004909152919091205461345a91839063ffffffff61333b16565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260046020526040808220939093559084168152205461349c908263ffffffff612f5916565b73ffffffffffffffffffffffffffffffffffffffff80841660008181526004602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b61350d6135f0565b8183101561357c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f496d7065726d61783a20494e56414c49445f53455454494e4700000000000000604482015290519081900360640190fd5b808311156135eb57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f496d7065726d61783a20494e56414c49445f53455454494e4700000000000000604482015290519081900360640190fd5b505050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f851a4406040518163ffffffff1660e01b815260040160206040518083038186803b15801561365857600080fd5b505afa15801561366c573d6000803e3d6000fd5b505050506040513d602081101561368257600080fd5b505173ffffffffffffffffffffffffffffffffffffffff16331461264757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f496d7065726d61783a20554e415554484f52495a454400000000000000000000604482015290519081900360640190fd5b600f546000908084111561383957600061375861374b670de0b6b3a7640000610f8660115461373f878b612fcd90919063ffffffff16565b9063ffffffff612e9d16565b869063ffffffff612fcd16565b9050600061377485610fbe84610f86838b63ffffffff612e9d16565b90508061378657859350505050610caa565b600954604080517f345ef941000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff169163345ef941916004808301926020929190829003018186803b1580156137f157600080fd5b505afa158015613805573d6000803e3d6000fd5b505050506040513d602081101561381b57600080fd5b505190506138298183613926565b5050600f8190559150610caa9050565b83915050610caa565b8151613855906000906020850190614364565b508051613869906001906020840190614364565b5060405146908060526143f382396040805191829003605201822086516020978801208383018352600184527f310000000000000000000000000000000000000000000000000000000000000093880193909352815180880191909152808201929092527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6606083015260808201939093523060a0808301919091528351808303909101815260c090910190925250805192019190912060065550565b600354613939908263ffffffff612f5916565b60035573ffffffffffffffffffffffffffffffffffffffff8216600090815260046020526040902054613972908263ffffffff612f5916565b73ffffffffffffffffffffffffffffffffffffffff831660008181526004602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b60008183106139e65781612f10565b5090919050565b73ffffffffffffffffffffffffffffffffffffffff8084166000818152600c6020908152604080832094871680845294825291829020859055815185815291517fc3c1215b41d54142382d54a05fb991007165ae91bcb1879bac8b290d9111aaf49281900390910190a3505050565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260046020526040902054613a92908263ffffffff612fcd16565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260046020526040902055600354613acb908263ffffffff612fcd16565b60035560408051828152905160009173ffffffffffffffffffffffffffffffffffffffff8516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b42851015613b8f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f496d7065726d61783a2045585049524544000000000000000000000000000000604482015290519081900360640190fd5b60065473ffffffffffffffffffffffffffffffffffffffff808a1660008181526007602090815260408083208054600180820190925582518085018a905280840196909652958e166060860152608085018d905260a085019590955260c08085018c90528151808603909101815260e0850182528051908301207f19010000000000000000000000000000000000000000000000000000000000006101008601526101028501969096526101228085019690965280518085039096018652610142840180825286519683019690962095839052610162840180825286905260ff8a166101828501526101a284018990526101c28401889052519193926101e2808201937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081019281900390910190855afa158015613cd1573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff811615801590613d4c57508973ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b613db757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f496d7065726d61783a20494e56414c49445f5349474e41545552450000000000604482015290519081900360640190fd5b50505050505050505050565b60006e0100000000000000000000000000008210613e4257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f496d7065726d61783a2053414645313132000000000000000000000000000000604482015290519081900360640190fd5b5090565b60145473ffffffffffffffffffffffffffffffffffffffff1680613e6a57506135eb565b604080517f05285d7f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff868116600483015260248201869052604482018590529151918316916305285d7f9160648082019260009290919082900301818387803b158015613ee957600080fd5b505af1158015613efd573d6000803e3d6000fd5b5050505050505050565b60008183613f70576040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482018181528351602484015283519092839260449091019190850190808383600083156133a9578181015183820152602001613391565b506000838581613f7c57fe5b0495945050505050565b600854604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff909216916370a0823191602480820192602092909190829003018186803b158015613ff757600080fd5b505afa15801561400b573d6000803e3d6000fd5b505050506040513d602081101561402157600080fd5b5051600a81905560408051918252517f8a0df8ef054fae2c3d2d19a7b322e864870cc9fd3cb07fb9526309c596244bf49181900360200190a1565b60125460135460105465ffffffffffff8082169166010000000000008104909116906c01000000000000000000000000900463ffffffff1660008161409f611cd7565b03905063ffffffff81161561422a576140b6611cd7565b6010600c6101000a81548163ffffffff021916908363ffffffff16021790555060008385101561413f576000670de0b6b3a76400008363ffffffff168887898903670de0b6b3a7640000028161410857fe5b0402028161411257fe5b049050670de0b6b3a764000081116141345780670de0b6b3a764000003614137565b60005b915050614180565b6000670de0b6b3a76400008363ffffffff168887888a03670de0b6b3a7640000028161416757fe5b0402028161417157fe5b04670de0b6b3a7640000019150505b670de0b6b3a76400008482020493506407620d07008411156141a5576407620d070093505b6312e687c08410156141b9576312e687c093505b601080547fffffffffffffffffffffffffffffffffffffffff000000000000ffffffffffff16660100000000000065ffffffffffff8716021790556040805185815290517f713a98ffb7d769b8e33e2ee945ebb6acb7f397532688164d3ce1081f903c77bc916020908290030190a1505b600e54600a546000916e01000000000000000000000000000090046dffffffffffffffffffffffffffff169082906142629083612f59565b90508015614283578082670de0b6b3a7640000028161427d57fe5b04614286565b60005b925050508681116142a457868185028161429c57fe5b0494506142de565b600087670de0b6b3a764000003888303670de0b6b3a764000002816142c557fe5b049050670de0b6b3a76400006004820281018602049550505b601080547fffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000001665ffffffffffff87161790556040805186815290517f338541dc9083f6af6715482fb419e1483c1ae9097764fd68a5dc98109bd5a788916020908290030190a150505050505050565b604080518082019091526000808252602082015290565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106143a557805160ff19168380011785556143d2565b828001600101855582156143d2579182015b828111156143d25782518255916020019190600101906143b7565b50613e429261168f9250905b80821115613e4257600081556001016143de56fe454950373132446f6d61696e28737472696e67206e616d652c737472696e672076657273696f6e2c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e747261637429536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a265627a7a7231582099abf930eaca13ec309e81a3d68a76931f2f678ef0c3db9233b8cfbaba64659c64736f6c63430005100032

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106103995760003560e01c806370a08231116101e9578063b7f1118a1161010f578063c914b437116100ad578063e07660001161007c578063e076600014610b8b578063e12b630614610b93578063fca7820b14610b9b578063fff6cae914610bb857610399565b8063c914b43714610ae2578063d505accf14610aea578063d8dfeb4514610b48578063dd62ed3e14610b5057610399565b8063bc25cf77116100e9578063bc25cf7714610a97578063be340e3214610aca578063c45a015514610ad2578063c72f3fbb14610ada57610399565b8063b7f1118a14610a54578063b95b92a314610a87578063ba9a7a5614610a8f57610399565b806395a2251f11610187578063a6afed9511610156578063a6afed9514610a03578063a9059cbb14610a0b578063aa5af0fd14610a44578063ad7a672f14610a4c57610399565b806395a2251f1461096257806395d89b41146109955780639e79b55c1461099d578063a0715719146109fb57610399565b806386b9d81f116101c357806386b9d81f146108ae57806391b42745146108e9578063926d845b1461090c5780639292b0321461094557610399565b806370a0823114610827578063796b89b91461085a5780637ecebe001461087b57610399565b806335542822116102ce5780634d73e9ba1161026c5780636a030c111161023b5780636a030c11146106d15780636a627842146107b15780636bd76d24146107e45780636f307dc31461081f57610399565b80634d73e9ba1461065d57806355957220146106905780635b2b9d1a146106c157806368544065146106c957610399565b80634322b714116102a85780634322b7141461061a578063452ae95f1461062257806347bd37181461062a5780634a5d316c1461065557610399565b806335542822146105d75780633644e5151461060a5780633ba0b9a91461061257610399565b80632374e8a91161033b57806327549a0b1161031557806327549a0b1461058c5780632d5231d3146105a957806330adf81f146105b1578063313ce567146105b957610399565b80632374e8a91461053957806323b872dd14610541578063253c24f31461058457610399565b8063095ea7b311610377578063095ea7b31461043d57806318160ddd1461048a5780631aebf12f146104925780631e7dcc0d1461049a57610399565b806301f8c1c81461039e57806306fdde03146103b8578063075f4e7f14610435575b600080fd5b6103a6610bc0565b60408051918252519081900360200190f35b6103c0610be4565b6040805160208082528351818301528351919283929083019185019080838360005b838110156103fa5781810151838201526020016103e2565b50505050905090810190601f1680156104275780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6103a6610c90565b6104766004803603604081101561045357600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610c99565b604080519115158252519081900360200190f35b6103a6610cb0565b6103a6610cb6565b610537600480360360808110156104b057600080fd5b73ffffffffffffffffffffffffffffffffffffffff8235811692602081013590911691604082013591908101906080810160608201356401000000008111156104f857600080fd5b82018360208201111561050a57600080fd5b8035906020019184600183028401116401000000008311171561052c57600080fd5b509092509050610cbc565b005b6103a661123c565b6104766004803603606081101561055757600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135611248565b6103a661135c565b610537600480360360208110156105a257600080fd5b5035611366565b6103a661147b565b6103a6611481565b6105c16114a5565b6040805160ff9092168252519081900360200190f35b610537600480360360208110156105ed57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166114ae565b6103a66115f3565b6103a66115f9565b6103a6611692565b6103a6611698565b6106326116a1565b604080516dffffffffffffffffffffffffffff9092168252519081900360200190f35b6105376116c9565b6103a66004803603602081101561067357600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661177a565b610698611830565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6103a661184c565b6103a6611851565b610537600480360360808110156106e757600080fd5b81019060208101813564010000000081111561070257600080fd5b82018360208201111561071457600080fd5b8035906020019184600183028401116401000000008311171561073657600080fd5b91939092909160208101903564010000000081111561075457600080fd5b82018360208201111561076657600080fd5b8035906020019184600183028401116401000000008311171561078857600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff8135811691602001351661185d565b6103a6600480360360208110156107c757600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166119de565b6103a6600480360360408110156107fa57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516611c8c565b610698611ca9565b6103a66004803603602081101561083d57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611cc5565b610862611cd7565b6040805163ffffffff9092168252519081900360200190f35b6103a66004803603602081101561089157600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611ce1565b6103a6600480360360408110156108c457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516611cf3565b6108f1611fe0565b6040805165ffffffffffff9092168252519081900360200190f35b6104766004803603604081101561092257600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135611ff8565b6105376004803603602081101561095b57600080fd5b5035612005565b6103a66004803603602081101561097857600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661211f565b6103c0612343565b610537600480360360e08110156109b357600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c001356123bb565b6103a66123ff565b61053761240a565b61047660048036036040811015610a2157600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135612649565b610632612656565b6103a661266c565b61053760048036036020811015610a6a57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16612672565b61086261269a565b6103a66126c6565b61053760048036036020811015610aad57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166126cc565b6103a661284f565b610698612855565b6103a6612871565b6108f161287d565b610537600480360360e0811015610b0057600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c0013561288b565b6106986128c6565b6103a660048036036040811015610b6657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160200135166128e7565b6103a6612904565b61086261290c565b61053760048036036020811015610bb157600080fd5b5035612928565b610537612a3b565b7ff6d86ed606f871fa1a557ac0ba607adce07767acf53f492fb215a1a4db4aea6f81565b6000805460408051602060026001851615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190941693909304601f81018490048402820184019092528181529291830182828015610c885780601f10610c5d57610100808354040283529160200191610c88565b820191906000526020600020905b815481529060010190602001808311610c6b57829003601f168201915b505050505081565b640d7957c4d081565b6000610ca6338484612b11565b5060015b92915050565b60035481565b60125481565b600b5460ff16610d2d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f496d7065726d61783a205245454e544552454400000000000000000000000000604482015290519081900360640190fd5b600b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055610d5d61240a565b600a5480841115610dcf57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f496d7065726d61783a20494e53554646494349454e545f434153480000000000604482015290519081900360640190fd5b610dda863386612b80565b8315610dea57610dea8585612c97565b8115610ec2576040517f876d9d9e000000000000000000000000000000000000000000000000000000008152336004820181815273ffffffffffffffffffffffffffffffffffffffff898116602485015260448401889052608060648501908152608485018790529089169363876d9d9e93928b928a928a928a92909160a401848480828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b158015610ea957600080fd5b505af1158015610ebd573d6000803e3d6000fd5b505050505b600854604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905160009273ffffffffffffffffffffffffffffffffffffffff16916370a08231916024808301926020929190829003018186803b158015610f3357600080fd5b505afa158015610f47573d6000803e3d6000fd5b505050506040513d6020811015610f5d57600080fd5b505190506000610f92670de0b6b3a7640000610f868866038d7ea4c6800063ffffffff612e9d16565b9063ffffffff612f1716565b90506000610fa6878363ffffffff612f5916565b90506000610fca85610fbe868b63ffffffff612f5916565b9063ffffffff612fcd16565b90506000806000610fdc8d868661300f565b9250925092508385111561115e57600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639aac2c538e30856040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b1580156110c757600080fd5b505af11580156110db573d6000803e3d6000fd5b505050506040513d60208110156110f157600080fd5b505161115e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f496d7065726d61783a20494e53554646494349454e545f4c4951554944495459604482015290519081900360640190fd5b8b73ffffffffffffffffffffffffffffffffffffffff168d73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f33f3048bd4e6af45e53afb722adfd57dbde82da7e93e44db921fb4b8c6a70c4b8e88888888604051808681526020018581526020018481526020018381526020018281526020019550505050505060405180910390a4505050505050505061120a61332b565b5050600b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055505050565b6706f05b59d3b2000081565b73ffffffffffffffffffffffffffffffffffffffff831660009081526005602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1461134757604080518082018252601e81527f496d7065726d61783a205452414e534645525f4e4f545f414c4c4f574544000060208083019190915273ffffffffffffffffffffffffffffffffffffffff8716600090815260058252838120338252909152919091205461131591849063ffffffff61333b16565b73ffffffffffffffffffffffffffffffffffffffff851660009081526005602090815260408083203384529091529020555b6113528484846133ec565b5060019392505050565b6505436648e14081565b600b5460ff166113d757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f496d7065726d61783a205245454e544552454400000000000000000000000000604482015290519081900360640190fd5b600b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905561141581640d7957c4d06505436648e140613505565b60138190556040805182815290517f1396dfcdb64fb7eb77fb84966f27b81afe14aa70b6e966c68d74af3302a9fe909181900360200190a150600b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b60135481565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b60025460ff1681565b600b5460ff1661151f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f496d7065726d61783a205245454e544552454400000000000000000000000000604482015290519081900360640190fd5b600b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905561154f6135f0565b6014805473ffffffffffffffffffffffffffffffffffffffff83167fffffffffffffffffffffffff0000000000000000000000000000000000000000909116811790915560408051918252517f468b6598e7e810c65c9858b5f23a2d5b8692fb753b78a032232de4c6ed3cabbf9181900360200190a150600b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b60065481565b600061160361240a565b600354600e54600a5460009161163b91906e01000000000000000000000000000090046dffffffffffffffffffffffffffff16612f59565b9050811580611648575080155b1561165f57670de0b6b3a76400009250505061168f565b600061167d83610f8684670de0b6b3a764000063ffffffff612e9d16565b90506116898184613707565b93505050505b90565b60115481565b6407620d070081565b600e546e01000000000000000000000000000090046dffffffffffffffffffffffffffff1681565b60095473ffffffffffffffffffffffffffffffffffffffff161561174e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f496d7065726d61783a20464143544f52595f414c52454144595f534554000000604482015290519081900360640190fd5b600980547fffffffffffffffffffffffff00000000000000000000000000000000000000001633179055565b600061178461434d565b5073ffffffffffffffffffffffffffffffffffffffff82166000908152600d60209081526040918290208251808401909352546dffffffffffffffffffffffffffff80821684526e010000000000000000000000000000909104169082018190526117f357600091505061182b565b6020810151600e548251611827926dffffffffffffffffffffffffffff90811692610f86928216911663ffffffff612e9d16565b9150505b919050565b60145473ffffffffffffffffffffffffffffffffffffffff1681565b600581565b670dbd2fc137a3000081565b60095473ffffffffffffffffffffffffffffffffffffffff1633146118e357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f496d7065726d61783a20554e415554484f52495a454400000000000000000000604482015290519081900360640190fd5b61195686868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8a01819004810282018101909252888152925088915087908190840183828082843760009201919091525061384292505050565b6008805473ffffffffffffffffffffffffffffffffffffffff9384167fffffffffffffffffffffffff0000000000000000000000000000000000000000909116179055600b805491909216610100027fffffffffffffffffffffff0000000000000000000000000000000000000000ff9091161790555050670de0b6b3a7640000600f555050565b600b5460009060ff16611a5257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f496d7065726d61783a205245454e544552454400000000000000000000000000604482015290519081900360640190fd5b600b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055600854604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905160009273ffffffffffffffffffffffffffffffffffffffff16916370a08231916024808301926020929190829003018186803b158015611aeb57600080fd5b505afa158015611aff573d6000803e3d6000fd5b505050506040513d6020811015611b1557600080fd5b5051600a54909150600090611b3190839063ffffffff612fcd16565b9050611b56611b3e6115f9565b610f8683670de0b6b3a764000063ffffffff612e9d16565b925060035460001415611b8457611b75836103e863ffffffff612fcd16565b9250611b8460006103e8613926565b60008311611bf357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f496d7065726d61783a204d494e545f414d4f554e545f5a45524f000000000000604482015290519081900360640190fd5b611bfd8484613926565b6040805182815260208101859052815173ffffffffffffffffffffffffffffffffffffffff87169233927f2f00e3cdd69a77be7ed215ec7b2a36784dd158f921fca79ac29deffa353fe6ee929081900390910190a35050611c5c61332b565b600b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055919050565b600c60209081526000928352604080842090915290825290205481565b60085473ffffffffffffffffffffffffffffffffffffffff1681565b60046020526000908152604090205481565b63ffffffff421690565b60076020526000908152604090205481565b600b5460009060ff16611d6757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f496d7065726d61783a205245454e544552454400000000000000000000000000604482015290519081900360640190fd5b600b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055611d9761240a565b600854604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905160009273ffffffffffffffffffffffffffffffffffffffff16916370a08231916024808301926020929190829003018186803b158015611e0857600080fd5b505afa158015611e1c573d6000803e3d6000fd5b505050506040513d6020811015611e3257600080fd5b5051600a54909150600090611e4e90839063ffffffff612fcd16565b90506000611e64611e5e8761177a565b836139d7565b600b54604080517fb2a02ff100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff89811660048301528a81166024830152604482018590529151939450610100909204169163b2a02ff1916064808201926020929091908290030181600087803b158015611eef57600080fd5b505af1158015611f03573d6000803e3d6000fd5b505050506040513d6020811015611f1957600080fd5b5051935060008080611f2c89828761300f565b604080518b8152602081018a905280820185905260608101849052608081018390529051939650919450925073ffffffffffffffffffffffffffffffffffffffff808b1692908c169133917fb0dbe18c6ffdf0da655dd690e77211d379205c497be44c64447c3f5f021b51679181900360a00190a4505050505050611faf61332b565b600b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905592915050565b6010546601000000000000900465ffffffffffff1681565b6000610ca63384846139ed565b600b5460ff1661207657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f496d7065726d61783a205245454e544552454400000000000000000000000000604482015290519081900360640190fd5b600b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690556120b9816706f05b59d3b20000670dbd2fc137a30000613505565b60128190556040805182815290517f7a550b1995ff63260fb313f12024e66e73bad425372e5af6b1e04cb3799ef38c9181900360200190a150600b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b600b5460009060ff1661219357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f496d7065726d61783a205245454e544552454400000000000000000000000000604482015290519081900360640190fd5b600b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055306000908152600460205260409020546121ef670de0b6b3a7640000610f866121e26115f9565b849063ffffffff612e9d16565b91506000821161226057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f496d7065726d61783a2052454445454d5f414d4f554e545f5a45524f00000000604482015290519081900360640190fd5b600a548211156122d157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f496d7065726d61783a20494e53554646494349454e545f434153480000000000604482015290519081900360640190fd5b6122db3082613a5c565b6122e58383612c97565b6040805183815260208101839052815173ffffffffffffffffffffffffffffffffffffffff86169233927f3f693fff038bb8a046aa76d9516190ac7444f7d69cf952c4cbdc086fdef2d6fc929081900390910190a350611c5c61332b565b60018054604080516020600284861615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190941693909304601f81018490048402820184019092528181529291830182828015610c885780601f10610c5d57610100808354040283529160200191610c88565b6123eb878787878787877ff6d86ed606f871fa1a557ac0ba607adce07767acf53f492fb215a1a4db4aea6f613b20565b6123f68787876139ed565b50505050505050565b66038d7ea4c6800081565b600e546dffffffffffffffffffffffffffff808216916e0100000000000000000000000000008104909116907c0100000000000000000000000000000000000000000000000000000000900463ffffffff166000612466611cd7565b90508063ffffffff168263ffffffff1614156124855750505050612647565b600e805463ffffffff8084167c0100000000000000000000000000000000000000000000000000000000027bffffffffffffffffffffffffffffffffffffffffffffffffffffffff90921691909117909155601054838303916000916124fa9165ffffffffffff9091169080851690612e9d16565b9050600061251a670de0b6b3a7640000610f86848963ffffffff612e9d16565b905061252c868263ffffffff612f5916565b955061255a61254d670de0b6b3a7640000610f86858b63ffffffff612e9d16565b889063ffffffff612f5916565b965061256587613dc3565b600e80547fffffffffffffffffffffffffffffffffffff0000000000000000000000000000166dffffffffffffffffffffffffffff929092169190911790556125ad86613dc3565b600e80546dffffffffffffffffffffffffffff929092166e010000000000000000000000000000027fffffffff0000000000000000000000000000ffffffffffffffffffffffffffff909216919091179055604080518281526020810189905280820188905290517f875352fb3fadeb8c0be7cbbe8ff761b308fa7033470cd0287f02f3436fd76cb99181900360600190a1505050505050505b565b6000610ca63384846133ec565b600e546dffffffffffffffffffffffffffff1681565b600a5481565b6126978161267f8361177a565b600e546dffffffffffffffffffffffffffff16613e46565b50565b600e547c0100000000000000000000000000000000000000000000000000000000900463ffffffff1681565b6103e881565b600b5460ff1661273d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f496d7065726d61783a205245454e544552454400000000000000000000000000604482015290519081900360640190fd5b600b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055600a54600854604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905161282193859361281c93919273ffffffffffffffffffffffffffffffffffffffff909116916370a08231916024808301926020929190829003018186803b1580156127e457600080fd5b505afa1580156127f8573d6000803e3d6000fd5b505050506040513d602081101561280e57600080fd5b50519063ffffffff612fcd16565b612c97565b50600b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b600f5481565b60095473ffffffffffffffffffffffffffffffffffffffff1681565b6702c68af0bb14000081565b60105465ffffffffffff1681565b6128bb878787878787877f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9613b20565b6123f6878787612b11565b600b54610100900473ffffffffffffffffffffffffffffffffffffffff1681565b600560209081526000928352604080842090915290825290205481565b6312e687c081565b6010546c01000000000000000000000000900463ffffffff1681565b600b5460ff1661299957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f496d7065726d61783a205245454e544552454400000000000000000000000000604482015290519081900360640190fd5b600b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690556129d58160006702c68af0bb140000613505565b60118190556040805182815290517f9d9cd27245b4e6b06dcf523ac57b6e851b934e199eee376313f906e94bfbfd559181900360200190a150600b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b600b5460ff16612aac57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f496d7065726d61783a205245454e544552454400000000000000000000000000604482015290519081900360640190fd5b600b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055612adc61240a565b612ae461332b565b600b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b73ffffffffffffffffffffffffffffffffffffffff808416600081815260056020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b73ffffffffffffffffffffffffffffffffffffffff8084166000818152600c60209081526040808320948716808452949091529020549114801590612be557507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114155b15612c915781811015612c5957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f496d7065726d61783a20424f52524f575f4e4f545f414c4c4f57454400000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8085166000908152600c6020908152604080832093871683529290522082820390555b50505050565b600854604080518082018252601981527f7472616e7366657228616464726573732c75696e743235362900000000000000602091820152815173ffffffffffffffffffffffffffffffffffffffff86811660248301526044808301879052845180840390910181526064909201845291810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001781529251815160009560609594169382918083835b60208310612d9d57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101612d60565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114612dff576040519150601f19603f3d011682016040523d82523d6000602084013e612e04565b606091505b5091509150818015612e32575080511580612e325750808060200190516020811015612e2f57600080fd5b50515b612c9157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f496d7065726d61783a205452414e534645525f4641494c454400000000000000604482015290519081900360640190fd5b600082612eac57506000610caa565b82820282848281612eb957fe5b0414612f10576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806144456021913960400191505060405180910390fd5b9392505050565b6000612f1083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613f07565b600082820183811015612f1057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6000612f1083836040518060400160405280601f81526020017f536166654d6174683a207375627472616374696f6e20756e646572666c6f770081525061333b565b600080600061301d8661177a565b925083851415613055575050600e5481906e01000000000000000000000000000090046dffffffffffffffffffffffffffff16613322565b600e546dffffffffffffffffffffffffffff168486111561317d5773ffffffffffffffffffffffffffffffffffffffff87166000908152600d602052604090208587036130a8868263ffffffff612f5916565b94506130b385613dc3565b82547fffffffffffffffffffffffffffffffffffff0000000000000000000000000000166dffffffffffffffffffffffffffff918216177fffffffff0000000000000000000000000000ffffffffffffffffffffffffffff166e0100000000000000000000000000008583168102919091178455600e54613138929190041682612f59565b935061314384613dc3565b600e806101000a8154816dffffffffffffffffffffffffffff02191690836dffffffffffffffffffffffffffff1602179055505050613305565b73ffffffffffffffffffffffffffffffffffffffff87166000908152600d602052604090208686038086116131b35760006131b7565b8086035b94506131c285613dc3565b82547fffffffffffffffffffffffffffffffffffff0000000000000000000000000000166dffffffffffffffffffffffffffff919091161782558461322c5781547fffffffff0000000000000000000000000000ffffffffffffffffffffffffffff168255613276565b81547fffffffff0000000000000000000000000000ffffffffffffffffffffffffffff166e0100000000000000000000000000006dffffffffffffffffffffffffffff8516021782555b6000613288878763ffffffff612fcd16565b600e546e01000000000000000000000000000090046dffffffffffffffffffffffffffff16955090508085116132bf5760006132c3565b8085035b94506132ce85613dc3565b600e806101000a8154816dffffffffffffffffffffffffffff02191690836dffffffffffffffffffffffffffff1602179055505050505b6133208784836dffffffffffffffffffffffffffff16613e46565b505b93509350939050565b613333613f86565b61264761405c565b600081848411156133e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156133a9578181015183820152602001613391565b50505050905090810190601f1680156133d65780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b604080518082018252601b81527f496d7065726d61783a205452414e534645525f544f4f5f48494748000000000060208083019190915273ffffffffffffffffffffffffffffffffffffffff861660009081526004909152919091205461345a91839063ffffffff61333b16565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260046020526040808220939093559084168152205461349c908263ffffffff612f5916565b73ffffffffffffffffffffffffffffffffffffffff80841660008181526004602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b61350d6135f0565b8183101561357c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f496d7065726d61783a20494e56414c49445f53455454494e4700000000000000604482015290519081900360640190fd5b808311156135eb57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f496d7065726d61783a20494e56414c49445f53455454494e4700000000000000604482015290519081900360640190fd5b505050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f851a4406040518163ffffffff1660e01b815260040160206040518083038186803b15801561365857600080fd5b505afa15801561366c573d6000803e3d6000fd5b505050506040513d602081101561368257600080fd5b505173ffffffffffffffffffffffffffffffffffffffff16331461264757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f496d7065726d61783a20554e415554484f52495a454400000000000000000000604482015290519081900360640190fd5b600f546000908084111561383957600061375861374b670de0b6b3a7640000610f8660115461373f878b612fcd90919063ffffffff16565b9063ffffffff612e9d16565b869063ffffffff612fcd16565b9050600061377485610fbe84610f86838b63ffffffff612e9d16565b90508061378657859350505050610caa565b600954604080517f345ef941000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff169163345ef941916004808301926020929190829003018186803b1580156137f157600080fd5b505afa158015613805573d6000803e3d6000fd5b505050506040513d602081101561381b57600080fd5b505190506138298183613926565b5050600f8190559150610caa9050565b83915050610caa565b8151613855906000906020850190614364565b508051613869906001906020840190614364565b5060405146908060526143f382396040805191829003605201822086516020978801208383018352600184527f310000000000000000000000000000000000000000000000000000000000000093880193909352815180880191909152808201929092527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6606083015260808201939093523060a0808301919091528351808303909101815260c090910190925250805192019190912060065550565b600354613939908263ffffffff612f5916565b60035573ffffffffffffffffffffffffffffffffffffffff8216600090815260046020526040902054613972908263ffffffff612f5916565b73ffffffffffffffffffffffffffffffffffffffff831660008181526004602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b60008183106139e65781612f10565b5090919050565b73ffffffffffffffffffffffffffffffffffffffff8084166000818152600c6020908152604080832094871680845294825291829020859055815185815291517fc3c1215b41d54142382d54a05fb991007165ae91bcb1879bac8b290d9111aaf49281900390910190a3505050565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260046020526040902054613a92908263ffffffff612fcd16565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260046020526040902055600354613acb908263ffffffff612fcd16565b60035560408051828152905160009173ffffffffffffffffffffffffffffffffffffffff8516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b42851015613b8f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f496d7065726d61783a2045585049524544000000000000000000000000000000604482015290519081900360640190fd5b60065473ffffffffffffffffffffffffffffffffffffffff808a1660008181526007602090815260408083208054600180820190925582518085018a905280840196909652958e166060860152608085018d905260a085019590955260c08085018c90528151808603909101815260e0850182528051908301207f19010000000000000000000000000000000000000000000000000000000000006101008601526101028501969096526101228085019690965280518085039096018652610142840180825286519683019690962095839052610162840180825286905260ff8a166101828501526101a284018990526101c28401889052519193926101e2808201937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081019281900390910190855afa158015613cd1573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff811615801590613d4c57508973ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b613db757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f496d7065726d61783a20494e56414c49445f5349474e41545552450000000000604482015290519081900360640190fd5b50505050505050505050565b60006e0100000000000000000000000000008210613e4257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f496d7065726d61783a2053414645313132000000000000000000000000000000604482015290519081900360640190fd5b5090565b60145473ffffffffffffffffffffffffffffffffffffffff1680613e6a57506135eb565b604080517f05285d7f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff868116600483015260248201869052604482018590529151918316916305285d7f9160648082019260009290919082900301818387803b158015613ee957600080fd5b505af1158015613efd573d6000803e3d6000fd5b5050505050505050565b60008183613f70576040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482018181528351602484015283519092839260449091019190850190808383600083156133a9578181015183820152602001613391565b506000838581613f7c57fe5b0495945050505050565b600854604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff909216916370a0823191602480820192602092909190829003018186803b158015613ff757600080fd5b505afa15801561400b573d6000803e3d6000fd5b505050506040513d602081101561402157600080fd5b5051600a81905560408051918252517f8a0df8ef054fae2c3d2d19a7b322e864870cc9fd3cb07fb9526309c596244bf49181900360200190a1565b60125460135460105465ffffffffffff8082169166010000000000008104909116906c01000000000000000000000000900463ffffffff1660008161409f611cd7565b03905063ffffffff81161561422a576140b6611cd7565b6010600c6101000a81548163ffffffff021916908363ffffffff16021790555060008385101561413f576000670de0b6b3a76400008363ffffffff168887898903670de0b6b3a7640000028161410857fe5b0402028161411257fe5b049050670de0b6b3a764000081116141345780670de0b6b3a764000003614137565b60005b915050614180565b6000670de0b6b3a76400008363ffffffff168887888a03670de0b6b3a7640000028161416757fe5b0402028161417157fe5b04670de0b6b3a7640000019150505b670de0b6b3a76400008482020493506407620d07008411156141a5576407620d070093505b6312e687c08410156141b9576312e687c093505b601080547fffffffffffffffffffffffffffffffffffffffff000000000000ffffffffffff16660100000000000065ffffffffffff8716021790556040805185815290517f713a98ffb7d769b8e33e2ee945ebb6acb7f397532688164d3ce1081f903c77bc916020908290030190a1505b600e54600a546000916e01000000000000000000000000000090046dffffffffffffffffffffffffffff169082906142629083612f59565b90508015614283578082670de0b6b3a7640000028161427d57fe5b04614286565b60005b925050508681116142a457868185028161429c57fe5b0494506142de565b600087670de0b6b3a764000003888303670de0b6b3a764000002816142c557fe5b049050670de0b6b3a76400006004820281018602049550505b601080547fffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000001665ffffffffffff87161790556040805186815290517f338541dc9083f6af6715482fb419e1483c1ae9097764fd68a5dc98109bd5a788916020908290030190a150505050505050565b604080518082019091526000808252602082015290565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106143a557805160ff19168380011785556143d2565b828001600101855582156143d2579182015b828111156143d25782518255916020019190600101906143b7565b50613e429261168f9250905b80821115613e4257600081556001016143de56fe454950373132446f6d61696e28737472696e67206e616d652c737472696e672076657273696f6e2c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e747261637429536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a265627a7a7231582099abf930eaca13ec309e81a3d68a76931f2f678ef0c3db9233b8cfbaba64659c64736f6c63430005100032

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.