Source Code
Overview
MOVR Balance
MOVR Value
$0.00| Transaction Hash |
|
Block
|
From
|
To
|
|||||
|---|---|---|---|---|---|---|---|---|---|
Latest 25 internal transactions (View All)
Cross-Chain Transactions
Loading...
Loading
Contract Name:
ZirconEnergyFactory
Compiler Version
v0.5.16+commit.9c3226ce
Optimization Enabled:
Yes with 1 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: GPL-3.0
pragma solidity =0.5.16;
import "./ZirconEnergy.sol";
import "./ZirconEnergyRevenue.sol";
import "./interfaces/IZirconEnergyFactory.sol";
import "./interfaces/IZirconEnergyRevenue.sol";
contract ZirconEnergyFactory is IZirconEnergyFactory{
mapping(address => mapping(address => address)) public getEnergy;
mapping(address => mapping(address => address)) public getEnergyRevenue;
address[] public allEnergies;
address[] public allEnergiesRevenue;
address public feeToSetter;
address public migrator;
uint public insurancePerMille;
uint public feePercentageRev;
uint public feePercentageEnergy;
struct Fee {
uint112 minPylonFee;
uint112 maxPylonFee;
}
Fee private fee;
event EnergyCreated(address indexed pair, address indexed energy, address tokenA, address tokenB, uint);
modifier onlyFeeToSetter {
require(msg.sender == feeToSetter, 'ZPT: FORBIDDEN');
_;
}
modifier onlyMigrator {
require(msg.sender == migrator, 'ZPT: FORBIDDEN');
_;
}
constructor(address _feeToSetter, address _migrator) public {
fee = Fee({minPylonFee: 1, maxPylonFee: 50});
insurancePerMille = 100;
feePercentageRev = 20;
feeToSetter = _feeToSetter;
migrator = _migrator;
}
function getMinMaxFee() external view returns (uint112 minFee, uint112 maxFee) {
minFee = fee.minPylonFee;
maxFee = fee.maxPylonFee;
}
function setFee(uint112 _minPylonFee, uint112 _maxPylonFee) external onlyFeeToSetter {
fee.minPylonFee = _minPylonFee;
fee.maxPylonFee = _maxPylonFee;
}
function setInsurancePerMille(uint _insurancePerMille) external onlyFeeToSetter {
insurancePerMille = _insurancePerMille;
}
function allEnergiesLength() external view returns (uint) {
return allEnergies.length;
}
function allEnergiesRevenueLength() external view returns (uint) {
return allEnergiesRevenue.length;
}
function energyCodeHash() public pure returns (bytes32) {
return keccak256(type(ZirconEnergy).creationCode);
}
function energyRevenueCodeHash() public pure returns (bytes32) {
return keccak256(type(ZirconEnergy).creationCode);
}
function energyFor(address token, address pair) view internal returns (address energy) {
energy = address(uint(keccak256(abi.encodePacked(
hex'ff',
address(this),
keccak256(abi.encodePacked(pair, token)),
hex'f7f47583f133c1e04059755d96b165532bef2114faae8e068f21ffd8fe846bd0' // init code hash
))));
}
function pylonFor(address tokenA, address tokenB, address pair, address pylonFactory) pure internal returns (address pylon) {
// console.log("pylonFor", tokenA, tokenB);
// console.log("pylonFor", pair, pylonFactory);
pylon = address(uint(keccak256(abi.encodePacked(
hex'ff',
pylonFactory,
keccak256(abi.encodePacked(tokenA, tokenB, pair)),
hex'9fc442a4d7a12215c697eb81564442a0cd83ff2b9db622486b898fe36004e492' // init code hash
))));
}
function createEnergyRev(address _pair, address _tokenA, address _tokenB, address _pylonFactory) external returns (address energy) {
require(_tokenA != _tokenB, 'ZF: IDENTICAL_ADDRESS');
require(_pair != address(0), 'ZE: ZERO_ADDRESS');
(address token0, address token1) = _tokenA < _tokenB ? (_tokenA, _tokenB) : (_tokenB, _tokenA);
require(getEnergyRevenue[token0][token1] == address(0), 'ZE: ENERGY_EXISTS'); // single check is sufficient
bytes memory bytecode = type(ZirconEnergyRevenue).creationCode;
require(bytecode.length != 0, "Create2: bytecode length is zero");
bytes32 salt = keccak256(abi.encodePacked(_pair, token0, token1));
assembly {
energy := create2(0, add(bytecode, 32), mload(bytecode), salt)
}
require(energy != address(0), "Create2: Failed on deploy");
address energy0 = energyFor(token0, _pair);
address energy1 = energyFor(token1, _pair);
// pylon 0 always with token0 first
address pylon0 = pylonFor(token0, token1, _pair, _pylonFactory);
address pylon1 = pylonFor(token1, token0, _pair, _pylonFactory);
IZirconEnergyRevenue(energy).initialize(_pair, token0, token1, energy0, energy1, pylon0, pylon1);
getEnergyRevenue[token0][token1] = energy;
getEnergyRevenue[token1][token0] = energy;
allEnergiesRevenue.push(energy);
emit EnergyCreated(_pair, energy, token0, token1, allEnergies.length);
}
function createEnergy(address _pylon, address _pair, address _tokenA, address _tokenB) external returns (address energy) {
require(_tokenA != _tokenB, 'ZF: IDENTICAL_ADDRESS');
require(_pylon != address(0) && _pair != address(0), 'ZE: ZERO_ADDRESS');
require(getEnergy[_tokenA][_tokenB] == address(0), 'ZE: ENERGY_EXISTS'); // single check is sufficient
bytes memory bytecode = type(ZirconEnergy).creationCode;
require(bytecode.length != 0, "Create2: bytecode length is zero");
bytes32 salt = keccak256(abi.encodePacked(_pair, _tokenA));
assembly {
energy := create2(0, add(bytecode, 32), mload(bytecode), salt)
}
require(energy != address(0), "Create2: Failed on deploy");
IZirconEnergy(energy).initialize(_pylon, _pair, _tokenA, _tokenB);
getEnergy[_tokenA][_tokenB] = energy;
allEnergies.push(energy);
emit EnergyCreated(_pair, energy, _tokenA, _tokenB, allEnergies.length);
}
function migrateEnergyLiquidity(address pair, address token, address newEnergy) external onlyMigrator{
require(newEnergy != address(0), 'ZE: ZERO_ADDRESS');
address energy = address(uint(keccak256(abi.encodePacked(
hex'ff',
address(this),
keccak256(abi.encodePacked(pair, token)),
energyCodeHash() // init code hash
))));
IZirconEnergy(energy).migrateLiquidity(newEnergy);
}
function migrateEnergyRevenue(address oldEnergy, address newEnergy) external onlyMigrator{
require(newEnergy != address(0), 'ZE: ZERO_ADDRESS');
IZirconEnergyRevenue(oldEnergy).migrateLiquidity(newEnergy);
}
function migrateEnergyRevenueFees(address oldEnergy, address newEnergy) external onlyMigrator{
require(newEnergy != address(0), 'ZE: ZERO_ADDRESS');
uint feeValue0 = IZirconEnergyRevenue(oldEnergy).feeValue0();
uint feeValue1 = IZirconEnergyRevenue(oldEnergy).feeValue1();
IZirconEnergyRevenue(newEnergy).setFeeValue(feeValue0, feeValue1);
}
function migrateEnergy(address oldEnergy, address newEnergy) external onlyMigrator{
require(newEnergy != address(0), 'ZE: ZERO_ADDRESS');
IZirconEnergy(oldEnergy).migrateLiquidity(newEnergy);
}
function setFeePercentageRev(uint _fee) external onlyFeeToSetter {
require(_fee <= 100, 'ZE: FEE_TOO_HIGH');
require(_fee >= 0, 'ZE: FEE_TOO_LOW');
feePercentageRev = _fee;
}
function setFeePercentageEnergy(uint _fee) external onlyFeeToSetter {
require(_fee <= 100, 'ZE: FEE_TOO_HIGH');
require(_fee >= 0, 'ZE: FEE_TOO_LOW');
feePercentageEnergy = _fee;
}
function setFeeToSetter(address _feeToSetter) external onlyFeeToSetter {
feeToSetter = _feeToSetter;
}
function setMigrator(address _migrator) external onlyMigrator {
migrator = _migrator;
}
function getFees(address _token, uint _amount, address _to, address energyRev) external onlyFeeToSetter {
require(_amount != 0, "Operations: Cannot recover zero balance");
IZirconEnergyRevenue(energyRev).getFees(_token, _amount, _to);
}
}//SPDX-License-Identifier: Unlicense
pragma solidity =0.5.16;
//import "hardhat/console.sol";
import "./interfaces/IZirconEnergy.sol";
import '@uniswap/v2-core/contracts/interfaces/IUniswapV2ERC20.sol';
import "./libraries/SafeMath.sol";
import "./interfaces/IZirconEnergyFactory.sol";
import "../interfaces/IZirconPair.sol";
import "../interfaces/IZirconPylon.sol";
import '../libraries/Math.sol';
contract ZirconEnergy is IZirconEnergy {
/*
Zircon Energy is the protocol-wide accumulator of revenue.
Each Pylon ahas an energy that works as a "bank account" and works as an insurance portion balance
*/
using SafeMath for uint112;
using SafeMath for uint256;
struct Pylon {
address pylonAddress;
address pairAddress;
address floatToken;
address anchorToken;
}
Pylon pylon;
address energyFactory;
uint anchorReserve; //Used to track balances and sync up in case of donations
bytes4 private constant SELECTOR = bytes4(keccak256(bytes('transfer(address,uint256)')));
// **** MODIFIERS *****
uint public initialized = 0;
modifier _initialize() {
require(initialized == 1, 'Zircon: FORBIDDEN');
_;
}
constructor() public {
energyFactory = msg.sender;
}
function getFee() internal view returns (uint112 minFee, uint112 maxFee) {
(minFee, maxFee) = IZirconEnergyFactory(energyFactory).getMinMaxFee();
}
function initialize(address _pylon, address _pair, address _token0, address _token1) external {
require(initialized == 0, "ZER: AI");
require(msg.sender == energyFactory, 'Zircon: FORBIDDEN'); // sufficient check
bool isFloatToken0 = IZirconPair(_pair).token0() == _token0;
(address tokenA, address tokenB) = isFloatToken0 ? (_token0, _token1) : (_token1, _token0);
pylon = Pylon(
_pylon,
_pair,
tokenA,
tokenB
);
// Approving pylon to use anchor tokens
IUniswapV2ERC20(_pair).approve(_pylon, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff);
IUniswapV2ERC20(tokenB).approve(_pylon, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff);
initialized = 1;
}
// ****** HELPER FUNCTIONS *****
function _safeTransfer(address token, address to, uint value) private {
(bool success, bytes memory data) = token.call(abi.encodeWithSelector(SELECTOR, to, value));
require(success && (data.length == 0 || abi.decode(data, (bool))), 'Zircon Pylon: TRANSFER_FAILED');
}
modifier _onlyPylon() {
require(pylon.pylonAddress == msg.sender, "ZE: Not Pylon");
_;
}
modifier _onlyPair() {
require(pylon.pairAddress == msg.sender, "ZE: Not Pylon");
_;
}
function registerFee() external _onlyPylon _initialize{
uint balance = IUniswapV2ERC20(pylon.anchorToken).balanceOf(address(this));
require(balance >= anchorReserve, "ZE: Anchor not sent");
uint register = balance.sub(anchorReserve);
uint feePercentageForRev = IZirconEnergyFactory(energyFactory).feePercentageEnergy();
address energyRevAddress = IZirconEnergyFactory(energyFactory).getEnergyRevenue(pylon.floatToken, pylon.anchorToken);
uint toSend = register.mul(feePercentageForRev)/(100);
if(toSend != 0) _safeTransfer(pylon.anchorToken, energyRevAddress, toSend);
anchorReserve = balance.sub(toSend);
}
//Called when tokens are withdrawn to ensure pylon doesn't get bricked
function syncReserve() external _onlyPylon _initialize {
anchorReserve = IUniswapV2ERC20(pylon.anchorToken).balanceOf(address(this));
}
//Returns the fee in basis points (0.01% units, needs to be divided by 10000)
//Uses two piece-wise parabolas. Between 0.45 and 0.55 the fee is very low (minFee).
//After the cutoff it uses a steeper parabola defined by a max fee at the extremes (very high, up to 1% by default).
function getFeeByGamma(uint gammaMulDecimals) _initialize external view returns (uint amount) {
(uint _minFee, uint _maxFee) = getFee();
uint _gammaHalf = 5e17;
uint x = (gammaMulDecimals > _gammaHalf) ? (gammaMulDecimals - _gammaHalf).mul(10) : (_gammaHalf - gammaMulDecimals).mul(10);
if (gammaMulDecimals <= 45e16 || gammaMulDecimals >= 55e16) {
amount = (_maxFee.mul(x).mul(x))/(25e36); //25 is a reduction factor based on the 0.45-0.55 range we're using.
} else {
amount = (_minFee.mul(x).mul(x).mul(36)/(1e36)).add(_minFee); //Ensures minFee is the lowest value.
}
}
function migrateLiquidity(address newEnergy) external{
require(msg.sender == energyFactory, 'ZP: FORBIDDEN'); // sufficient check
uint balance = IZirconPair(pylon.pairAddress).balanceOf(address(this));
uint balanceAnchor = IUniswapV2ERC20(pylon.anchorToken).balanceOf(address(this));
_safeTransfer(pylon.pairAddress, newEnergy, balance);
_safeTransfer(pylon.anchorToken, newEnergy, balanceAnchor);
}
}pragma solidity =0.5.16;
import '@uniswap/v2-core/contracts/interfaces/IUniswapV2ERC20.sol';
import "./libraries/SafeMath.sol";
import "../interfaces/IZirconPair.sol";
import "../interfaces/IZirconPylon.sol";
import "@openzeppelin/contracts/utils/ReentrancyGuard.sol";
import "hardhat/console.sol";
import "./interfaces/IZirconEnergyFactory.sol";
contract ZirconEnergyRevenue is ReentrancyGuard {
using SafeMath for uint112;
using SafeMath for uint256;
uint public reserve;
address public energyFactory;
uint public feeValue1;
uint public feeValue0;
struct Zircon {
address pairAddress;
address floatToken;
address anchorToken;
address energy0;
address energy1;
address pylon0;
address pylon1;
}
Zircon zircon;
bytes4 private constant SELECTOR = bytes4(keccak256(bytes('transfer(address,uint256)')));
function _safeTransfer(address token, address to, uint value) private {
(bool success, bytes memory data) = token.call(abi.encodeWithSelector(SELECTOR, to, value));
require(success && (data.length == 0 || abi.decode(data, (bool))), 'Zircon Pylon: TRANSFER_FAILED');
}
// **** MODIFIERS *****
uint public initialized = 0;
modifier _initialize() {
require(initialized == 1, 'Zircon: FORBIDDEN');
_;
}
modifier _onlyPair() {
require(zircon.pairAddress == msg.sender, "ZE: Not Pair");
_;
}
constructor() public {
energyFactory = msg.sender;
}
function initialize(address _pair, address _tokenA, address _tokenB, address _energy0, address _energy1, address _pylon0, address _pylon1) external {
require(initialized == 0, "ZER: Not Factory");
require(energyFactory == msg.sender, "ZER: Not Factory");
zircon = Zircon(
_pair,
_tokenA,
_tokenB,
_energy0,
_energy1,
_pylon0,
_pylon1
);
initialized = 1;
}
function setFeeValue(uint _feeValue0, uint _feeValue1) external {
require(energyFactory == msg.sender, "ZER: Not Factory");
feeValue1 = _feeValue1;
feeValue0 = _feeValue0;
}
function calculate(uint percentage) external _onlyPair nonReentrant _initialize {
uint balance = IUniswapV2ERC20(zircon.pairAddress).balanceOf(address(this));
require(balance > reserve, "ZER: Reverted");
//Percentage is feeValue/TPV, percentage of pool reserves that are actually fee
//It's reduced by mint fee already
uint totalSupply = IUniswapV2ERC20(zircon.pairAddress).totalSupply();
//These are the PTBs, balance of pool tokens held by each pylon vault
uint pylonBalance0 = IUniswapV2ERC20(zircon.pairAddress).balanceOf(zircon.pylon0);
uint pylonBalance1 = IUniswapV2ERC20(zircon.pairAddress).balanceOf(zircon.pylon1);
{
(uint112 _reservePair0, uint112 _reservePair1,) = IZirconPair(zircon.pairAddress).getReserves();
//Increments the contract variable that stores total fees acquired by pair. Multiplies by each Pylon's share
feeValue0 += percentage.mul(_reservePair1).mul(2).mul(pylonBalance0)/totalSupply.mul(1e18);
feeValue1 += percentage.mul(_reservePair0).mul(2).mul(pylonBalance1)/totalSupply.mul(1e18);
}
{
uint feePercentageForRev = IZirconEnergyFactory(energyFactory).feePercentageRev();
uint amount = balance.sub(reserve);
uint pylon0Liq = (amount.mul(pylonBalance0)/totalSupply).mul(100 - feePercentageForRev)/(100);
uint pylon1Liq = (amount.mul(pylonBalance1)/totalSupply).mul(100 - feePercentageForRev)/(100);
_safeTransfer(zircon.pairAddress, zircon.energy0, pylon0Liq);
_safeTransfer(zircon.pairAddress, zircon.energy1, pylon1Liq);
reserve = balance.sub(pylon0Liq.add(pylon1Liq));
}
}
function changePylonAddresses(address _pylonAddressA, address _pylonAddressB) external {
require(msg.sender == energyFactory, 'Zircon: FORBIDDEN'); // sufficient check
zircon.pylon0 = _pylonAddressA;
zircon.pylon1 = _pylonAddressB;
}
function migrateLiquidity(address newEnergy) external{
require(msg.sender == energyFactory, 'ZP: FORBIDDEN'); // sufficient check
uint balance = IZirconPair(zircon.pairAddress).balanceOf(address(this));
uint anchorBalance = IZirconPair(zircon.anchorToken).balanceOf(address(this));
uint floatBalance = IZirconPair(zircon.floatToken).balanceOf(address(this));
_safeTransfer(zircon.pairAddress, newEnergy, balance);
_safeTransfer(zircon.anchorToken, newEnergy, anchorBalance);
_safeTransfer(zircon.floatToken, newEnergy, floatBalance);
}
function getBalanceFromPair() external _initialize returns (uint balance) {
require(msg.sender == zircon.pylon0 || msg.sender == zircon.pylon1, "ZE: Not Pylon");
if(msg.sender == zircon.pylon0) {
balance = feeValue0;
feeValue0 = 0;
} else if(msg.sender == zircon.pylon1) {
balance = feeValue1;
feeValue1 = 0;
}
}
function getFees(address _token, uint _amount, address _to) external {
require(msg.sender == energyFactory, "ZER: Not properly called");
require(_amount != 0, "Operations: Cannot recover zero balance");
if(_token == zircon.pairAddress) {
require(_amount <= reserve, "ZER: Reverted");
reserve = reserve.sub(_amount);
}
_safeTransfer(_token, _to, _amount);
}
}pragma solidity =0.5.16;
interface IZirconEnergyFactory {
// Variables
function allEnergies(uint p) external view returns (address);
function insurancePerMille() external view returns (uint);
function feePercentageRev() external view returns (uint);
function feePercentageEnergy() external view returns (uint);
function getEnergy(address _tokenA, address _tokenB) external view returns (address energy);
function getEnergyRevenue(address _tokenA, address _tokenB) external view returns (address energy);
function allEnergiesLength() external view returns (uint);
function feeToSetter() external pure returns (address);
function setMigrator(address _migrator) external;
function setFeeToSetter(address _feeToSetter) external;
function setInsurancePerMille(uint _insurancePerMille) external;
function setFeePercentageRev(uint fee) external;
function setFeePercentageEnergy(uint fee) external;
// Functions
function createEnergy(address, address, address, address) external returns (address energy);
function createEnergyRev(address, address, address, address) external returns (address energy);
function setFee(uint112 _minPylonFee, uint112 _maxPylonFee) external;
function getMinMaxFee() external view returns (uint112 minFee, uint112 maxFee);
function getFees(address _token, uint _amount, address _to, address energyRev) external;
function migrateEnergyLiquidity(address pair, address token, address newEnergy) external;
function migrateEnergyRevenue(address oldEnergy, address newEnergy) external;
function migrateEnergyRevenueFees(address oldEnergy, address newEnergy) external;
function migrateEnergy(address oldEnergy, address newEnergy) external;
}pragma solidity =0.5.16;
interface IZirconEnergyRevenue {
function initialize(address _pair, address _tokenA, address _tokenB, address energy0, address energy1, address pylon0, address pylon1) external;
function calculate(uint percentage) external;
function migrateLiquidity(address newEnergy) external;
function getBalanceFromPair() external returns (uint);
function feeValue1() external returns (uint);
function feeValue0() external returns (uint);
function getFees(address _token, uint _amount, address _to) external;
function setFeeValue(uint _feeValue0, uint _feeValue1) external;
}pragma solidity =0.5.16;
interface IZirconEnergy {
function initialize(address _pylon, address _pair, address _token0, address _token1) external;
// function breakPiggybank(uint _requestedLiquidity) external returns (uint returnedLiquidity);
// function syncPylonFee() external;
// function syncPairFee() external;
function getFeeByGamma(uint gammaMulDecimals) external view returns (uint amount);
function registerFee() external;
function syncReserve() external;
function migrateLiquidity(address newEnergy) external;
}pragma solidity >=0.5.0;
interface IUniswapV2ERC20 {
event Approval(address indexed owner, address indexed spender, uint value);
event Transfer(address indexed from, address indexed to, 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;
}// SPDX-License-Identifier: GPL-3.0
pragma solidity =0.5.16;
// a library for performing overflow-safe math, courtesy of DappHub (https://github.com/dapphub/ds-math)
library SafeMath {
function add(uint x, uint y) internal pure returns (uint z) {
require((z = x + y) >= x, 'ds-math-add-overflow');
}
function sub(uint x, uint y) internal pure returns (uint z) {
require((z = x - y) <= x, 'ds-math-sub-underflow');
}
function mul(uint x, uint y) internal pure returns (uint z) {
require(y == 0 || (z = x * y) / y == x, 'ds-math-mul-overflow');
}
}// SPDX-License-Identifier: GPL-3.0
pragma solidity >=0.5.16;
interface IZirconPair {
event Approval(address indexed owner, address indexed spender, uint value);
event Transfer(address indexed from, address indexed to, uint value);
function name() external pure returns (string memory);
function symbol() external pure returns (string memory);
function energyRevenueAddress() external pure returns (address);
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;
event Mint(address indexed sender, uint amount0, uint amount1);
event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);
event Swap(
address indexed sender,
uint amount0In,
uint amount1In,
uint amount0Out,
uint amount1Out,
address indexed to
);
event Sync(uint112 reserve0, uint112 reserve1);
function MINIMUM_LIQUIDITY() external pure returns (uint);
function factory() external view returns (address);
function token0() external view returns (address);
function token1() external view returns (address);
function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
function price0CumulativeLast() external view returns (uint);
function price1CumulativeLast() external view returns (uint);
function kLast() external view returns (uint);
function burnOneSide(address to, bool isReserve0) external returns (uint amount);
function mintOneSide(address to, bool isReserve0) external returns (uint liquidity, uint amount0, uint amount1);
function publicMintFee() external;
function mint(address to) external returns (uint liquidity);
function burn(address to) external returns (uint amount0, uint amount1);
function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
// function skim(address to) external;
function sync() external;
function tryLock() external;
function initialize(address, address, address) external;
function changeEnergyRevAddress(address _revAddress) external;
}pragma solidity >=0.5.16;
interface IZirconPylon {
function initialized() external view returns (uint);
// function anchorPoolTokenAddress() external view returns (address);
// function floatPoolTokenAddress() external view returns (address);
// function energyAddress() external view returns (address);
function gammaMulDecimals() external view returns (uint);
function isFloatReserve0() external view returns (bool);
function virtualAnchorBalance() external view returns (uint);
function anchorKFactor() external view returns (uint);
function lastRootKTranslated() external view returns (uint);
function formulaSwitch() external view returns (bool);
function EMABlockNumber() external view returns (bool);
function getSyncReserves() external view returns (uint112 _reserve0, uint112 _reserve1);
// Called once by the factory at time of deployment
// @_floatPoolToken -> Contains Address Of Float PT
// @_anchorPoolToken -> Contains Address Of Anchor PT
// @token0 -> Float token
// @token1 -> Anchor token
function initMigratedPylon(uint _gamma, uint _vab, uint _anchorKFactor, bool _formulaSwitch) external;
function initialize(address _floatPoolTokenAddress, address _anchorPoolTokenAddress, address _floatToken, address _anchorToken, address _pairAddress, address _pairFactoryAddress, address _energy, address _energyRev) external;
// On init pylon we have to handle two cases
// The first case is when we initialize the pair through the pylon
// And the second one is when initialize the pylon with a pair al ready existing
function initPylon(address _to) external returns (uint floatLiquidity, uint anchorLiquidity);
// External Function called to mint pool Token
// Liquidity have to be sent before
function mintPoolTokens(address to, bool isAnchor) external returns (uint liquidity);
// function mintAsync100(address to, bool isAnchor) external returns (uint liquidity);
function mintAsync(address to, bool shouldMintAnchor) external returns (uint liquidity);
// Burn Async send both tokens 50-50
// Liquidity has to be sent before
function burnAsync(address _to, bool _isAnchor) external returns (uint amount0, uint amount1);
// Burn send liquidity back to user burning Pool tokens
// The function first uses the reserves of the Pylon
// If not enough reserves it burns The Pool Tokens of the pylon
function burn(address _to, bool _isAnchor) external returns (uint amount);
function changeEnergyAddress(address _energyAddress, address _energyRevAddress) external;
}// SPDX-License-Identifier: GPL-3.0
pragma solidity =0.5.16;
// a library for performing various math operations
library Math {
function min(uint x, uint y) internal pure returns (uint z) {
z = x < y ? x : y;
}
function max(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;
}
}
}pragma solidity ^0.5.0;
/**
* @dev Contract module that helps prevent reentrant calls to a function.
*
* Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier
* available, which can be applied to functions to make sure there are no nested
* (reentrant) calls to them.
*
* Note that because there is a single `nonReentrant` guard, functions marked as
* `nonReentrant` may not call one another. This can be worked around by making
* those functions `private`, and then adding `external` `nonReentrant` entry
* points to them.
*
* TIP: If you would like to learn more about reentrancy and alternative ways
* to protect against it, check out our blog post
* https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul].
*
* _Since v2.5.0:_ this module is now much more gas efficient, given net gas
* metering changes introduced in the Istanbul hardfork.
*/
contract ReentrancyGuard {
bool private _notEntered;
constructor () internal {
// Storing an initial non-zero value makes deployment a bit more
// expensive, but in exchange the refund on every call to nonReentrant
// will be lower in amount. Since refunds are capped to a percetange of
// the total transaction's gas, it is best to keep them low in cases
// like this one, to increase the likelihood of the full refund coming
// into effect.
_notEntered = true;
}
/**
* @dev Prevents a contract from calling itself, directly or indirectly.
* Calling a `nonReentrant` function from another `nonReentrant`
* function is not supported. It is possible to prevent this from happening
* by making the `nonReentrant` function external, and make it call a
* `private` function that does the actual work.
*/
modifier nonReentrant() {
// On the first call to nonReentrant, _notEntered will be true
require(_notEntered, "ReentrancyGuard: reentrant call");
// Any calls to nonReentrant after this point will fail
_notEntered = false;
_;
// By storing the original value once again, a refund is triggered (see
// https://eips.ethereum.org/EIPS/eip-2200)
_notEntered = true;
}
}// SPDX-License-Identifier: MIT
pragma solidity >= 0.4.22 <0.9.0;
library console {
address constant CONSOLE_ADDRESS = address(0x000000000000000000636F6e736F6c652e6c6f67);
function _sendLogPayload(bytes memory payload) private view {
uint256 payloadLength = payload.length;
address consoleAddress = CONSOLE_ADDRESS;
assembly {
let payloadStart := add(payload, 32)
let r := staticcall(gas(), consoleAddress, payloadStart, payloadLength, 0, 0)
}
}
function log() internal view {
_sendLogPayload(abi.encodeWithSignature("log()"));
}
function logInt(int p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(int)", p0));
}
function logUint(uint p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint)", p0));
}
function logString(string memory p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string)", p0));
}
function logBool(bool p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool)", p0));
}
function logAddress(address p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address)", p0));
}
function logBytes(bytes memory p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bytes)", p0));
}
function logBytes1(bytes1 p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bytes1)", p0));
}
function logBytes2(bytes2 p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bytes2)", p0));
}
function logBytes3(bytes3 p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bytes3)", p0));
}
function logBytes4(bytes4 p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bytes4)", p0));
}
function logBytes5(bytes5 p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bytes5)", p0));
}
function logBytes6(bytes6 p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bytes6)", p0));
}
function logBytes7(bytes7 p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bytes7)", p0));
}
function logBytes8(bytes8 p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bytes8)", p0));
}
function logBytes9(bytes9 p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bytes9)", p0));
}
function logBytes10(bytes10 p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bytes10)", p0));
}
function logBytes11(bytes11 p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bytes11)", p0));
}
function logBytes12(bytes12 p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bytes12)", p0));
}
function logBytes13(bytes13 p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bytes13)", p0));
}
function logBytes14(bytes14 p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bytes14)", p0));
}
function logBytes15(bytes15 p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bytes15)", p0));
}
function logBytes16(bytes16 p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bytes16)", p0));
}
function logBytes17(bytes17 p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bytes17)", p0));
}
function logBytes18(bytes18 p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bytes18)", p0));
}
function logBytes19(bytes19 p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bytes19)", p0));
}
function logBytes20(bytes20 p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bytes20)", p0));
}
function logBytes21(bytes21 p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bytes21)", p0));
}
function logBytes22(bytes22 p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bytes22)", p0));
}
function logBytes23(bytes23 p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bytes23)", p0));
}
function logBytes24(bytes24 p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bytes24)", p0));
}
function logBytes25(bytes25 p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bytes25)", p0));
}
function logBytes26(bytes26 p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bytes26)", p0));
}
function logBytes27(bytes27 p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bytes27)", p0));
}
function logBytes28(bytes28 p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bytes28)", p0));
}
function logBytes29(bytes29 p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bytes29)", p0));
}
function logBytes30(bytes30 p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bytes30)", p0));
}
function logBytes31(bytes31 p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bytes31)", p0));
}
function logBytes32(bytes32 p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bytes32)", p0));
}
function log(uint p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint)", p0));
}
function log(string memory p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string)", p0));
}
function log(bool p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool)", p0));
}
function log(address p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address)", p0));
}
function log(uint p0, uint p1) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,uint)", p0, p1));
}
function log(uint p0, string memory p1) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,string)", p0, p1));
}
function log(uint p0, bool p1) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,bool)", p0, p1));
}
function log(uint p0, address p1) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,address)", p0, p1));
}
function log(string memory p0, uint p1) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,uint)", p0, p1));
}
function log(string memory p0, string memory p1) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,string)", p0, p1));
}
function log(string memory p0, bool p1) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,bool)", p0, p1));
}
function log(string memory p0, address p1) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,address)", p0, p1));
}
function log(bool p0, uint p1) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint)", p0, p1));
}
function log(bool p0, string memory p1) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,string)", p0, p1));
}
function log(bool p0, bool p1) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool)", p0, p1));
}
function log(bool p0, address p1) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,address)", p0, p1));
}
function log(address p0, uint p1) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,uint)", p0, p1));
}
function log(address p0, string memory p1) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,string)", p0, p1));
}
function log(address p0, bool p1) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,bool)", p0, p1));
}
function log(address p0, address p1) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,address)", p0, p1));
}
function log(uint p0, uint p1, uint p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,uint,uint)", p0, p1, p2));
}
function log(uint p0, uint p1, string memory p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,uint,string)", p0, p1, p2));
}
function log(uint p0, uint p1, bool p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,uint,bool)", p0, p1, p2));
}
function log(uint p0, uint p1, address p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,uint,address)", p0, p1, p2));
}
function log(uint p0, string memory p1, uint p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,string,uint)", p0, p1, p2));
}
function log(uint p0, string memory p1, string memory p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,string,string)", p0, p1, p2));
}
function log(uint p0, string memory p1, bool p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,string,bool)", p0, p1, p2));
}
function log(uint p0, string memory p1, address p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,string,address)", p0, p1, p2));
}
function log(uint p0, bool p1, uint p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,bool,uint)", p0, p1, p2));
}
function log(uint p0, bool p1, string memory p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,bool,string)", p0, p1, p2));
}
function log(uint p0, bool p1, bool p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,bool,bool)", p0, p1, p2));
}
function log(uint p0, bool p1, address p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,bool,address)", p0, p1, p2));
}
function log(uint p0, address p1, uint p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,address,uint)", p0, p1, p2));
}
function log(uint p0, address p1, string memory p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,address,string)", p0, p1, p2));
}
function log(uint p0, address p1, bool p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,address,bool)", p0, p1, p2));
}
function log(uint p0, address p1, address p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,address,address)", p0, p1, p2));
}
function log(string memory p0, uint p1, uint p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,uint,uint)", p0, p1, p2));
}
function log(string memory p0, uint p1, string memory p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,uint,string)", p0, p1, p2));
}
function log(string memory p0, uint p1, bool p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,uint,bool)", p0, p1, p2));
}
function log(string memory p0, uint p1, address p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,uint,address)", p0, p1, p2));
}
function log(string memory p0, string memory p1, uint p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,string,uint)", p0, p1, p2));
}
function log(string memory p0, string memory p1, string memory p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,string,string)", p0, p1, p2));
}
function log(string memory p0, string memory p1, bool p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,string,bool)", p0, p1, p2));
}
function log(string memory p0, string memory p1, address p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,string,address)", p0, p1, p2));
}
function log(string memory p0, bool p1, uint p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,uint)", p0, p1, p2));
}
function log(string memory p0, bool p1, string memory p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,string)", p0, p1, p2));
}
function log(string memory p0, bool p1, bool p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,bool)", p0, p1, p2));
}
function log(string memory p0, bool p1, address p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,address)", p0, p1, p2));
}
function log(string memory p0, address p1, uint p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,address,uint)", p0, p1, p2));
}
function log(string memory p0, address p1, string memory p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,address,string)", p0, p1, p2));
}
function log(string memory p0, address p1, bool p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,address,bool)", p0, p1, p2));
}
function log(string memory p0, address p1, address p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,address,address)", p0, p1, p2));
}
function log(bool p0, uint p1, uint p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint,uint)", p0, p1, p2));
}
function log(bool p0, uint p1, string memory p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint,string)", p0, p1, p2));
}
function log(bool p0, uint p1, bool p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint,bool)", p0, p1, p2));
}
function log(bool p0, uint p1, address p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint,address)", p0, p1, p2));
}
function log(bool p0, string memory p1, uint p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,uint)", p0, p1, p2));
}
function log(bool p0, string memory p1, string memory p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,string)", p0, p1, p2));
}
function log(bool p0, string memory p1, bool p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,bool)", p0, p1, p2));
}
function log(bool p0, string memory p1, address p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,address)", p0, p1, p2));
}
function log(bool p0, bool p1, uint p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,uint)", p0, p1, p2));
}
function log(bool p0, bool p1, string memory p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,string)", p0, p1, p2));
}
function log(bool p0, bool p1, bool p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,bool)", p0, p1, p2));
}
function log(bool p0, bool p1, address p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,address)", p0, p1, p2));
}
function log(bool p0, address p1, uint p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,uint)", p0, p1, p2));
}
function log(bool p0, address p1, string memory p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,string)", p0, p1, p2));
}
function log(bool p0, address p1, bool p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,bool)", p0, p1, p2));
}
function log(bool p0, address p1, address p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,address)", p0, p1, p2));
}
function log(address p0, uint p1, uint p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,uint,uint)", p0, p1, p2));
}
function log(address p0, uint p1, string memory p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,uint,string)", p0, p1, p2));
}
function log(address p0, uint p1, bool p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,uint,bool)", p0, p1, p2));
}
function log(address p0, uint p1, address p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,uint,address)", p0, p1, p2));
}
function log(address p0, string memory p1, uint p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,string,uint)", p0, p1, p2));
}
function log(address p0, string memory p1, string memory p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,string,string)", p0, p1, p2));
}
function log(address p0, string memory p1, bool p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,string,bool)", p0, p1, p2));
}
function log(address p0, string memory p1, address p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,string,address)", p0, p1, p2));
}
function log(address p0, bool p1, uint p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,uint)", p0, p1, p2));
}
function log(address p0, bool p1, string memory p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,string)", p0, p1, p2));
}
function log(address p0, bool p1, bool p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,bool)", p0, p1, p2));
}
function log(address p0, bool p1, address p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,address)", p0, p1, p2));
}
function log(address p0, address p1, uint p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,address,uint)", p0, p1, p2));
}
function log(address p0, address p1, string memory p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,address,string)", p0, p1, p2));
}
function log(address p0, address p1, bool p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,address,bool)", p0, p1, p2));
}
function log(address p0, address p1, address p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,address,address)", p0, p1, p2));
}
function log(uint p0, uint p1, uint p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,uint,uint,uint)", p0, p1, p2, p3));
}
function log(uint p0, uint p1, uint p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,uint,uint,string)", p0, p1, p2, p3));
}
function log(uint p0, uint p1, uint p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,uint,uint,bool)", p0, p1, p2, p3));
}
function log(uint p0, uint p1, uint p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,uint,uint,address)", p0, p1, p2, p3));
}
function log(uint p0, uint p1, string memory p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,uint,string,uint)", p0, p1, p2, p3));
}
function log(uint p0, uint p1, string memory p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,uint,string,string)", p0, p1, p2, p3));
}
function log(uint p0, uint p1, string memory p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,uint,string,bool)", p0, p1, p2, p3));
}
function log(uint p0, uint p1, string memory p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,uint,string,address)", p0, p1, p2, p3));
}
function log(uint p0, uint p1, bool p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,uint,bool,uint)", p0, p1, p2, p3));
}
function log(uint p0, uint p1, bool p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,uint,bool,string)", p0, p1, p2, p3));
}
function log(uint p0, uint p1, bool p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,uint,bool,bool)", p0, p1, p2, p3));
}
function log(uint p0, uint p1, bool p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,uint,bool,address)", p0, p1, p2, p3));
}
function log(uint p0, uint p1, address p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,uint,address,uint)", p0, p1, p2, p3));
}
function log(uint p0, uint p1, address p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,uint,address,string)", p0, p1, p2, p3));
}
function log(uint p0, uint p1, address p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,uint,address,bool)", p0, p1, p2, p3));
}
function log(uint p0, uint p1, address p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,uint,address,address)", p0, p1, p2, p3));
}
function log(uint p0, string memory p1, uint p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,string,uint,uint)", p0, p1, p2, p3));
}
function log(uint p0, string memory p1, uint p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,string,uint,string)", p0, p1, p2, p3));
}
function log(uint p0, string memory p1, uint p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,string,uint,bool)", p0, p1, p2, p3));
}
function log(uint p0, string memory p1, uint p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,string,uint,address)", p0, p1, p2, p3));
}
function log(uint p0, string memory p1, string memory p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,string,string,uint)", p0, p1, p2, p3));
}
function log(uint p0, string memory p1, string memory p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,string,string,string)", p0, p1, p2, p3));
}
function log(uint p0, string memory p1, string memory p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,string,string,bool)", p0, p1, p2, p3));
}
function log(uint p0, string memory p1, string memory p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,string,string,address)", p0, p1, p2, p3));
}
function log(uint p0, string memory p1, bool p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,string,bool,uint)", p0, p1, p2, p3));
}
function log(uint p0, string memory p1, bool p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,string,bool,string)", p0, p1, p2, p3));
}
function log(uint p0, string memory p1, bool p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,string,bool,bool)", p0, p1, p2, p3));
}
function log(uint p0, string memory p1, bool p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,string,bool,address)", p0, p1, p2, p3));
}
function log(uint p0, string memory p1, address p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,string,address,uint)", p0, p1, p2, p3));
}
function log(uint p0, string memory p1, address p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,string,address,string)", p0, p1, p2, p3));
}
function log(uint p0, string memory p1, address p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,string,address,bool)", p0, p1, p2, p3));
}
function log(uint p0, string memory p1, address p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,string,address,address)", p0, p1, p2, p3));
}
function log(uint p0, bool p1, uint p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,bool,uint,uint)", p0, p1, p2, p3));
}
function log(uint p0, bool p1, uint p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,bool,uint,string)", p0, p1, p2, p3));
}
function log(uint p0, bool p1, uint p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,bool,uint,bool)", p0, p1, p2, p3));
}
function log(uint p0, bool p1, uint p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,bool,uint,address)", p0, p1, p2, p3));
}
function log(uint p0, bool p1, string memory p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,bool,string,uint)", p0, p1, p2, p3));
}
function log(uint p0, bool p1, string memory p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,bool,string,string)", p0, p1, p2, p3));
}
function log(uint p0, bool p1, string memory p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,bool,string,bool)", p0, p1, p2, p3));
}
function log(uint p0, bool p1, string memory p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,bool,string,address)", p0, p1, p2, p3));
}
function log(uint p0, bool p1, bool p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,bool,bool,uint)", p0, p1, p2, p3));
}
function log(uint p0, bool p1, bool p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,bool,bool,string)", p0, p1, p2, p3));
}
function log(uint p0, bool p1, bool p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,bool,bool,bool)", p0, p1, p2, p3));
}
function log(uint p0, bool p1, bool p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,bool,bool,address)", p0, p1, p2, p3));
}
function log(uint p0, bool p1, address p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,bool,address,uint)", p0, p1, p2, p3));
}
function log(uint p0, bool p1, address p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,bool,address,string)", p0, p1, p2, p3));
}
function log(uint p0, bool p1, address p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,bool,address,bool)", p0, p1, p2, p3));
}
function log(uint p0, bool p1, address p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,bool,address,address)", p0, p1, p2, p3));
}
function log(uint p0, address p1, uint p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,address,uint,uint)", p0, p1, p2, p3));
}
function log(uint p0, address p1, uint p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,address,uint,string)", p0, p1, p2, p3));
}
function log(uint p0, address p1, uint p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,address,uint,bool)", p0, p1, p2, p3));
}
function log(uint p0, address p1, uint p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,address,uint,address)", p0, p1, p2, p3));
}
function log(uint p0, address p1, string memory p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,address,string,uint)", p0, p1, p2, p3));
}
function log(uint p0, address p1, string memory p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,address,string,string)", p0, p1, p2, p3));
}
function log(uint p0, address p1, string memory p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,address,string,bool)", p0, p1, p2, p3));
}
function log(uint p0, address p1, string memory p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,address,string,address)", p0, p1, p2, p3));
}
function log(uint p0, address p1, bool p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,address,bool,uint)", p0, p1, p2, p3));
}
function log(uint p0, address p1, bool p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,address,bool,string)", p0, p1, p2, p3));
}
function log(uint p0, address p1, bool p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,address,bool,bool)", p0, p1, p2, p3));
}
function log(uint p0, address p1, bool p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,address,bool,address)", p0, p1, p2, p3));
}
function log(uint p0, address p1, address p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,address,address,uint)", p0, p1, p2, p3));
}
function log(uint p0, address p1, address p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,address,address,string)", p0, p1, p2, p3));
}
function log(uint p0, address p1, address p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,address,address,bool)", p0, p1, p2, p3));
}
function log(uint p0, address p1, address p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,address,address,address)", p0, p1, p2, p3));
}
function log(string memory p0, uint p1, uint p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,uint,uint,uint)", p0, p1, p2, p3));
}
function log(string memory p0, uint p1, uint p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,uint,uint,string)", p0, p1, p2, p3));
}
function log(string memory p0, uint p1, uint p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,uint,uint,bool)", p0, p1, p2, p3));
}
function log(string memory p0, uint p1, uint p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,uint,uint,address)", p0, p1, p2, p3));
}
function log(string memory p0, uint p1, string memory p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,uint,string,uint)", p0, p1, p2, p3));
}
function log(string memory p0, uint p1, string memory p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,uint,string,string)", p0, p1, p2, p3));
}
function log(string memory p0, uint p1, string memory p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,uint,string,bool)", p0, p1, p2, p3));
}
function log(string memory p0, uint p1, string memory p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,uint,string,address)", p0, p1, p2, p3));
}
function log(string memory p0, uint p1, bool p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,uint,bool,uint)", p0, p1, p2, p3));
}
function log(string memory p0, uint p1, bool p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,uint,bool,string)", p0, p1, p2, p3));
}
function log(string memory p0, uint p1, bool p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,uint,bool,bool)", p0, p1, p2, p3));
}
function log(string memory p0, uint p1, bool p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,uint,bool,address)", p0, p1, p2, p3));
}
function log(string memory p0, uint p1, address p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,uint,address,uint)", p0, p1, p2, p3));
}
function log(string memory p0, uint p1, address p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,uint,address,string)", p0, p1, p2, p3));
}
function log(string memory p0, uint p1, address p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,uint,address,bool)", p0, p1, p2, p3));
}
function log(string memory p0, uint p1, address p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,uint,address,address)", p0, p1, p2, p3));
}
function log(string memory p0, string memory p1, uint p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,string,uint,uint)", p0, p1, p2, p3));
}
function log(string memory p0, string memory p1, uint p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,string,uint,string)", p0, p1, p2, p3));
}
function log(string memory p0, string memory p1, uint p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,string,uint,bool)", p0, p1, p2, p3));
}
function log(string memory p0, string memory p1, uint p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,string,uint,address)", p0, p1, p2, p3));
}
function log(string memory p0, string memory p1, string memory p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,string,string,uint)", p0, p1, p2, p3));
}
function log(string memory p0, string memory p1, string memory p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,string,string,string)", p0, p1, p2, p3));
}
function log(string memory p0, string memory p1, string memory p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,string,string,bool)", p0, p1, p2, p3));
}
function log(string memory p0, string memory p1, string memory p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,string,string,address)", p0, p1, p2, p3));
}
function log(string memory p0, string memory p1, bool p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,string,bool,uint)", p0, p1, p2, p3));
}
function log(string memory p0, string memory p1, bool p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,string,bool,string)", p0, p1, p2, p3));
}
function log(string memory p0, string memory p1, bool p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,string,bool,bool)", p0, p1, p2, p3));
}
function log(string memory p0, string memory p1, bool p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,string,bool,address)", p0, p1, p2, p3));
}
function log(string memory p0, string memory p1, address p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,string,address,uint)", p0, p1, p2, p3));
}
function log(string memory p0, string memory p1, address p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,string,address,string)", p0, p1, p2, p3));
}
function log(string memory p0, string memory p1, address p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,string,address,bool)", p0, p1, p2, p3));
}
function log(string memory p0, string memory p1, address p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,string,address,address)", p0, p1, p2, p3));
}
function log(string memory p0, bool p1, uint p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,uint,uint)", p0, p1, p2, p3));
}
function log(string memory p0, bool p1, uint p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,uint,string)", p0, p1, p2, p3));
}
function log(string memory p0, bool p1, uint p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,uint,bool)", p0, p1, p2, p3));
}
function log(string memory p0, bool p1, uint p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,uint,address)", p0, p1, p2, p3));
}
function log(string memory p0, bool p1, string memory p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,string,uint)", p0, p1, p2, p3));
}
function log(string memory p0, bool p1, string memory p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,string,string)", p0, p1, p2, p3));
}
function log(string memory p0, bool p1, string memory p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,string,bool)", p0, p1, p2, p3));
}
function log(string memory p0, bool p1, string memory p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,string,address)", p0, p1, p2, p3));
}
function log(string memory p0, bool p1, bool p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,bool,uint)", p0, p1, p2, p3));
}
function log(string memory p0, bool p1, bool p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,bool,string)", p0, p1, p2, p3));
}
function log(string memory p0, bool p1, bool p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,bool,bool)", p0, p1, p2, p3));
}
function log(string memory p0, bool p1, bool p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,bool,address)", p0, p1, p2, p3));
}
function log(string memory p0, bool p1, address p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,address,uint)", p0, p1, p2, p3));
}
function log(string memory p0, bool p1, address p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,address,string)", p0, p1, p2, p3));
}
function log(string memory p0, bool p1, address p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,address,bool)", p0, p1, p2, p3));
}
function log(string memory p0, bool p1, address p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,address,address)", p0, p1, p2, p3));
}
function log(string memory p0, address p1, uint p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,address,uint,uint)", p0, p1, p2, p3));
}
function log(string memory p0, address p1, uint p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,address,uint,string)", p0, p1, p2, p3));
}
function log(string memory p0, address p1, uint p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,address,uint,bool)", p0, p1, p2, p3));
}
function log(string memory p0, address p1, uint p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,address,uint,address)", p0, p1, p2, p3));
}
function log(string memory p0, address p1, string memory p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,address,string,uint)", p0, p1, p2, p3));
}
function log(string memory p0, address p1, string memory p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,address,string,string)", p0, p1, p2, p3));
}
function log(string memory p0, address p1, string memory p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,address,string,bool)", p0, p1, p2, p3));
}
function log(string memory p0, address p1, string memory p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,address,string,address)", p0, p1, p2, p3));
}
function log(string memory p0, address p1, bool p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,address,bool,uint)", p0, p1, p2, p3));
}
function log(string memory p0, address p1, bool p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,address,bool,string)", p0, p1, p2, p3));
}
function log(string memory p0, address p1, bool p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,address,bool,bool)", p0, p1, p2, p3));
}
function log(string memory p0, address p1, bool p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,address,bool,address)", p0, p1, p2, p3));
}
function log(string memory p0, address p1, address p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,address,address,uint)", p0, p1, p2, p3));
}
function log(string memory p0, address p1, address p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,address,address,string)", p0, p1, p2, p3));
}
function log(string memory p0, address p1, address p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,address,address,bool)", p0, p1, p2, p3));
}
function log(string memory p0, address p1, address p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,address,address,address)", p0, p1, p2, p3));
}
function log(bool p0, uint p1, uint p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint,uint,uint)", p0, p1, p2, p3));
}
function log(bool p0, uint p1, uint p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint,uint,string)", p0, p1, p2, p3));
}
function log(bool p0, uint p1, uint p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint,uint,bool)", p0, p1, p2, p3));
}
function log(bool p0, uint p1, uint p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint,uint,address)", p0, p1, p2, p3));
}
function log(bool p0, uint p1, string memory p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint,string,uint)", p0, p1, p2, p3));
}
function log(bool p0, uint p1, string memory p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint,string,string)", p0, p1, p2, p3));
}
function log(bool p0, uint p1, string memory p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint,string,bool)", p0, p1, p2, p3));
}
function log(bool p0, uint p1, string memory p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint,string,address)", p0, p1, p2, p3));
}
function log(bool p0, uint p1, bool p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint,bool,uint)", p0, p1, p2, p3));
}
function log(bool p0, uint p1, bool p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint,bool,string)", p0, p1, p2, p3));
}
function log(bool p0, uint p1, bool p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint,bool,bool)", p0, p1, p2, p3));
}
function log(bool p0, uint p1, bool p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint,bool,address)", p0, p1, p2, p3));
}
function log(bool p0, uint p1, address p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint,address,uint)", p0, p1, p2, p3));
}
function log(bool p0, uint p1, address p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint,address,string)", p0, p1, p2, p3));
}
function log(bool p0, uint p1, address p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint,address,bool)", p0, p1, p2, p3));
}
function log(bool p0, uint p1, address p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint,address,address)", p0, p1, p2, p3));
}
function log(bool p0, string memory p1, uint p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,uint,uint)", p0, p1, p2, p3));
}
function log(bool p0, string memory p1, uint p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,uint,string)", p0, p1, p2, p3));
}
function log(bool p0, string memory p1, uint p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,uint,bool)", p0, p1, p2, p3));
}
function log(bool p0, string memory p1, uint p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,uint,address)", p0, p1, p2, p3));
}
function log(bool p0, string memory p1, string memory p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,string,uint)", p0, p1, p2, p3));
}
function log(bool p0, string memory p1, string memory p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,string,string)", p0, p1, p2, p3));
}
function log(bool p0, string memory p1, string memory p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,string,bool)", p0, p1, p2, p3));
}
function log(bool p0, string memory p1, string memory p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,string,address)", p0, p1, p2, p3));
}
function log(bool p0, string memory p1, bool p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,bool,uint)", p0, p1, p2, p3));
}
function log(bool p0, string memory p1, bool p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,bool,string)", p0, p1, p2, p3));
}
function log(bool p0, string memory p1, bool p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,bool,bool)", p0, p1, p2, p3));
}
function log(bool p0, string memory p1, bool p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,bool,address)", p0, p1, p2, p3));
}
function log(bool p0, string memory p1, address p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,address,uint)", p0, p1, p2, p3));
}
function log(bool p0, string memory p1, address p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,address,string)", p0, p1, p2, p3));
}
function log(bool p0, string memory p1, address p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,address,bool)", p0, p1, p2, p3));
}
function log(bool p0, string memory p1, address p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,address,address)", p0, p1, p2, p3));
}
function log(bool p0, bool p1, uint p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,uint,uint)", p0, p1, p2, p3));
}
function log(bool p0, bool p1, uint p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,uint,string)", p0, p1, p2, p3));
}
function log(bool p0, bool p1, uint p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,uint,bool)", p0, p1, p2, p3));
}
function log(bool p0, bool p1, uint p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,uint,address)", p0, p1, p2, p3));
}
function log(bool p0, bool p1, string memory p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,string,uint)", p0, p1, p2, p3));
}
function log(bool p0, bool p1, string memory p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,string,string)", p0, p1, p2, p3));
}
function log(bool p0, bool p1, string memory p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,string,bool)", p0, p1, p2, p3));
}
function log(bool p0, bool p1, string memory p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,string,address)", p0, p1, p2, p3));
}
function log(bool p0, bool p1, bool p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,bool,uint)", p0, p1, p2, p3));
}
function log(bool p0, bool p1, bool p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,bool,string)", p0, p1, p2, p3));
}
function log(bool p0, bool p1, bool p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,bool,bool)", p0, p1, p2, p3));
}
function log(bool p0, bool p1, bool p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,bool,address)", p0, p1, p2, p3));
}
function log(bool p0, bool p1, address p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,address,uint)", p0, p1, p2, p3));
}
function log(bool p0, bool p1, address p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,address,string)", p0, p1, p2, p3));
}
function log(bool p0, bool p1, address p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,address,bool)", p0, p1, p2, p3));
}
function log(bool p0, bool p1, address p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,address,address)", p0, p1, p2, p3));
}
function log(bool p0, address p1, uint p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,uint,uint)", p0, p1, p2, p3));
}
function log(bool p0, address p1, uint p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,uint,string)", p0, p1, p2, p3));
}
function log(bool p0, address p1, uint p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,uint,bool)", p0, p1, p2, p3));
}
function log(bool p0, address p1, uint p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,uint,address)", p0, p1, p2, p3));
}
function log(bool p0, address p1, string memory p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,string,uint)", p0, p1, p2, p3));
}
function log(bool p0, address p1, string memory p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,string,string)", p0, p1, p2, p3));
}
function log(bool p0, address p1, string memory p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,string,bool)", p0, p1, p2, p3));
}
function log(bool p0, address p1, string memory p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,string,address)", p0, p1, p2, p3));
}
function log(bool p0, address p1, bool p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,bool,uint)", p0, p1, p2, p3));
}
function log(bool p0, address p1, bool p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,bool,string)", p0, p1, p2, p3));
}
function log(bool p0, address p1, bool p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,bool,bool)", p0, p1, p2, p3));
}
function log(bool p0, address p1, bool p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,bool,address)", p0, p1, p2, p3));
}
function log(bool p0, address p1, address p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,address,uint)", p0, p1, p2, p3));
}
function log(bool p0, address p1, address p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,address,string)", p0, p1, p2, p3));
}
function log(bool p0, address p1, address p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,address,bool)", p0, p1, p2, p3));
}
function log(bool p0, address p1, address p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,address,address)", p0, p1, p2, p3));
}
function log(address p0, uint p1, uint p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,uint,uint,uint)", p0, p1, p2, p3));
}
function log(address p0, uint p1, uint p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,uint,uint,string)", p0, p1, p2, p3));
}
function log(address p0, uint p1, uint p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,uint,uint,bool)", p0, p1, p2, p3));
}
function log(address p0, uint p1, uint p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,uint,uint,address)", p0, p1, p2, p3));
}
function log(address p0, uint p1, string memory p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,uint,string,uint)", p0, p1, p2, p3));
}
function log(address p0, uint p1, string memory p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,uint,string,string)", p0, p1, p2, p3));
}
function log(address p0, uint p1, string memory p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,uint,string,bool)", p0, p1, p2, p3));
}
function log(address p0, uint p1, string memory p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,uint,string,address)", p0, p1, p2, p3));
}
function log(address p0, uint p1, bool p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,uint,bool,uint)", p0, p1, p2, p3));
}
function log(address p0, uint p1, bool p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,uint,bool,string)", p0, p1, p2, p3));
}
function log(address p0, uint p1, bool p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,uint,bool,bool)", p0, p1, p2, p3));
}
function log(address p0, uint p1, bool p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,uint,bool,address)", p0, p1, p2, p3));
}
function log(address p0, uint p1, address p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,uint,address,uint)", p0, p1, p2, p3));
}
function log(address p0, uint p1, address p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,uint,address,string)", p0, p1, p2, p3));
}
function log(address p0, uint p1, address p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,uint,address,bool)", p0, p1, p2, p3));
}
function log(address p0, uint p1, address p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,uint,address,address)", p0, p1, p2, p3));
}
function log(address p0, string memory p1, uint p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,string,uint,uint)", p0, p1, p2, p3));
}
function log(address p0, string memory p1, uint p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,string,uint,string)", p0, p1, p2, p3));
}
function log(address p0, string memory p1, uint p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,string,uint,bool)", p0, p1, p2, p3));
}
function log(address p0, string memory p1, uint p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,string,uint,address)", p0, p1, p2, p3));
}
function log(address p0, string memory p1, string memory p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,string,string,uint)", p0, p1, p2, p3));
}
function log(address p0, string memory p1, string memory p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,string,string,string)", p0, p1, p2, p3));
}
function log(address p0, string memory p1, string memory p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,string,string,bool)", p0, p1, p2, p3));
}
function log(address p0, string memory p1, string memory p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,string,string,address)", p0, p1, p2, p3));
}
function log(address p0, string memory p1, bool p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,string,bool,uint)", p0, p1, p2, p3));
}
function log(address p0, string memory p1, bool p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,string,bool,string)", p0, p1, p2, p3));
}
function log(address p0, string memory p1, bool p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,string,bool,bool)", p0, p1, p2, p3));
}
function log(address p0, string memory p1, bool p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,string,bool,address)", p0, p1, p2, p3));
}
function log(address p0, string memory p1, address p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,string,address,uint)", p0, p1, p2, p3));
}
function log(address p0, string memory p1, address p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,string,address,string)", p0, p1, p2, p3));
}
function log(address p0, string memory p1, address p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,string,address,bool)", p0, p1, p2, p3));
}
function log(address p0, string memory p1, address p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,string,address,address)", p0, p1, p2, p3));
}
function log(address p0, bool p1, uint p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,uint,uint)", p0, p1, p2, p3));
}
function log(address p0, bool p1, uint p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,uint,string)", p0, p1, p2, p3));
}
function log(address p0, bool p1, uint p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,uint,bool)", p0, p1, p2, p3));
}
function log(address p0, bool p1, uint p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,uint,address)", p0, p1, p2, p3));
}
function log(address p0, bool p1, string memory p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,string,uint)", p0, p1, p2, p3));
}
function log(address p0, bool p1, string memory p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,string,string)", p0, p1, p2, p3));
}
function log(address p0, bool p1, string memory p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,string,bool)", p0, p1, p2, p3));
}
function log(address p0, bool p1, string memory p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,string,address)", p0, p1, p2, p3));
}
function log(address p0, bool p1, bool p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,bool,uint)", p0, p1, p2, p3));
}
function log(address p0, bool p1, bool p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,bool,string)", p0, p1, p2, p3));
}
function log(address p0, bool p1, bool p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,bool,bool)", p0, p1, p2, p3));
}
function log(address p0, bool p1, bool p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,bool,address)", p0, p1, p2, p3));
}
function log(address p0, bool p1, address p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,address,uint)", p0, p1, p2, p3));
}
function log(address p0, bool p1, address p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,address,string)", p0, p1, p2, p3));
}
function log(address p0, bool p1, address p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,address,bool)", p0, p1, p2, p3));
}
function log(address p0, bool p1, address p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,address,address)", p0, p1, p2, p3));
}
function log(address p0, address p1, uint p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,address,uint,uint)", p0, p1, p2, p3));
}
function log(address p0, address p1, uint p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,address,uint,string)", p0, p1, p2, p3));
}
function log(address p0, address p1, uint p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,address,uint,bool)", p0, p1, p2, p3));
}
function log(address p0, address p1, uint p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,address,uint,address)", p0, p1, p2, p3));
}
function log(address p0, address p1, string memory p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,address,string,uint)", p0, p1, p2, p3));
}
function log(address p0, address p1, string memory p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,address,string,string)", p0, p1, p2, p3));
}
function log(address p0, address p1, string memory p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,address,string,bool)", p0, p1, p2, p3));
}
function log(address p0, address p1, string memory p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,address,string,address)", p0, p1, p2, p3));
}
function log(address p0, address p1, bool p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,address,bool,uint)", p0, p1, p2, p3));
}
function log(address p0, address p1, bool p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,address,bool,string)", p0, p1, p2, p3));
}
function log(address p0, address p1, bool p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,address,bool,bool)", p0, p1, p2, p3));
}
function log(address p0, address p1, bool p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,address,bool,address)", p0, p1, p2, p3));
}
function log(address p0, address p1, address p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,address,address,uint)", p0, p1, p2, p3));
}
function log(address p0, address p1, address p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,address,address,string)", p0, p1, p2, p3));
}
function log(address p0, address p1, address p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,address,address,bool)", p0, p1, p2, p3));
}
function log(address p0, address p1, address p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,address,address,address)", p0, p1, p2, p3));
}
}{
"optimizer": {
"enabled": true,
"runs": 1
},
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"devdoc",
"userdoc",
"metadata",
"abi"
]
}
},
"metadata": {
"useLiteralContent": true
},
"libraries": {}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address","name":"_feeToSetter","type":"address"},{"internalType":"address","name":"_migrator","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"address","name":"energy","type":"address"},{"indexed":false,"internalType":"address","name":"tokenA","type":"address"},{"indexed":false,"internalType":"address","name":"tokenB","type":"address"},{"indexed":false,"internalType":"uint256","name":"","type":"uint256"}],"name":"EnergyCreated","type":"event"},{"constant":true,"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"allEnergies","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"allEnergiesLength","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"allEnergiesRevenue","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"allEnergiesRevenueLength","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_pylon","type":"address"},{"internalType":"address","name":"_pair","type":"address"},{"internalType":"address","name":"_tokenA","type":"address"},{"internalType":"address","name":"_tokenB","type":"address"}],"name":"createEnergy","outputs":[{"internalType":"address","name":"energy","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_pair","type":"address"},{"internalType":"address","name":"_tokenA","type":"address"},{"internalType":"address","name":"_tokenB","type":"address"},{"internalType":"address","name":"_pylonFactory","type":"address"}],"name":"createEnergyRev","outputs":[{"internalType":"address","name":"energy","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"energyCodeHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[],"name":"energyRevenueCodeHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[],"name":"feePercentageEnergy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"feePercentageRev","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"feeToSetter","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"getEnergy","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"getEnergyRevenue","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"address","name":"energyRev","type":"address"}],"name":"getFees","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getMinMaxFee","outputs":[{"internalType":"uint112","name":"minFee","type":"uint112"},{"internalType":"uint112","name":"maxFee","type":"uint112"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"insurancePerMille","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"oldEnergy","type":"address"},{"internalType":"address","name":"newEnergy","type":"address"}],"name":"migrateEnergy","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"newEnergy","type":"address"}],"name":"migrateEnergyLiquidity","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"oldEnergy","type":"address"},{"internalType":"address","name":"newEnergy","type":"address"}],"name":"migrateEnergyRevenue","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"oldEnergy","type":"address"},{"internalType":"address","name":"newEnergy","type":"address"}],"name":"migrateEnergyRevenueFees","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"migrator","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint112","name":"_minPylonFee","type":"uint112"},{"internalType":"uint112","name":"_maxPylonFee","type":"uint112"}],"name":"setFee","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_fee","type":"uint256"}],"name":"setFeePercentageEnergy","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_fee","type":"uint256"}],"name":"setFeePercentageRev","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_feeToSetter","type":"address"}],"name":"setFeeToSetter","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_insurancePerMille","type":"uint256"}],"name":"setInsurancePerMille","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_migrator","type":"address"}],"name":"setMigrator","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"}]Contract Creation Code
608060405234801561001057600080fd5b506040516139563803806139568339818101604052604081101561003357600080fd5b50805160209182015160408051808201909152600180825260329190940152600980546001600160701b031916909317600160701b600160e01b031916601960711b1790925560646006556014600755600480546001600160a01b03199081166001600160a01b03938416179091556005805490911691909216179055613897806100bf6000396000f3fe608060405234801561001057600080fd5b50600436106101495760003560e01c8063094b74151461014e5780630b0d7eb1146101725780630c16293a146101a25780631b151bc1146101de57806323cf3118146101fb578063295305d1146102215780634dd814421461024f57806363e1240114610269578063708284b41461029757806373e56b141461029f5780637cd07e47146102a757806388413ca0146102af5780638d72dfee146102dd5780639172e784146102fa5780639364a2961461029f57806394a77e5b14610338578063957ddb16146103765780639f9c54c914610393578063a2669ce7146103b0578063a2e74af6146103b8578063b5b729f6146103de578063ba77c79214610416578063cd2ba9641461041e578063d63135601461043b578063dcd8fc0b14610469578063e95078cf14610221578063f732ff4b14610471575b600080fd5b61015661049f565b604080516001600160a01b039092168252519081900360200190f35b6101a06004803603604081101561018857600080fd5b506001600160701b03813581169160200135166104ae565b005b6101a0600480360360808110156101b857600080fd5b506001600160a01b03813581169160208101359160408201358116916060013516610539565b6101a0600480360360208110156101f457600080fd5b503561063d565b6101a06004803603602081101561021157600080fd5b50356001600160a01b03166106db565b6101a06004803603604081101561023757600080fd5b506001600160a01b038135811691602001351661074d565b61025761085f565b60408051918252519081900360200190f35b610271610865565b604080516001600160701b03938416815291909216602082015281519081900390910190f35b610257610880565b610257610886565b6101566108b8565b610156600480360360408110156102c557600080fd5b506001600160a01b03813581169160200135166108c7565b6101a0600480360360208110156102f357600080fd5b50356108ed565b6101566004803603608081101561031057600080fd5b506001600160a01b038135811691602081013582169160408201358116916060013516610942565b6101566004803603608081101561034e57600080fd5b506001600160a01b038135811691602081013582169160408201358116916060013516610cc9565b6101566004803603602081101561038c57600080fd5b503561121a565b6101a0600480360360208110156103a957600080fd5b5035611241565b6102576112df565b6101a0600480360360208110156103ce57600080fd5b50356001600160a01b03166112e5565b6101a0600480360360608110156103f457600080fd5b506001600160a01b038135811691602081013582169160409091013516611357565b61025761150f565b6101566004803603602081101561043457600080fd5b5035611515565b6101a06004803603604081101561045157600080fd5b506001600160a01b0381358116916020013516611522565b6102576116ef565b6101566004803603604081101561048757600080fd5b506001600160a01b03813581169160200135166116f5565b6004546001600160a01b031681565b6004546001600160a01b031633146104fe576040805162461bcd60e51b815260206004820152600e60248201526d2d282a1d102327a92124a22222a760911b604482015290519081900360640190fd5b600980546001600160701b03928316600160701b02600160701b600160e01b0319949093166001600160701b03199091161792909216179055565b6004546001600160a01b03163314610589576040805162461bcd60e51b815260206004820152600e60248201526d2d282a1d102327a92124a22222a760911b604482015290519081900360640190fd5b826105c55760405162461bcd60e51b81526004018080602001828103825260278152602001806137fc6027913960400191505060405180910390fd5b604080516365b7c8b760e11b81526001600160a01b03868116600483015260248201869052848116604483015291519183169163cb6f916e9160648082019260009290919082900301818387803b15801561061f57600080fd5b505af1158015610633573d6000803e3d6000fd5b5050505050505050565b6004546001600160a01b0316331461068d576040805162461bcd60e51b815260206004820152600e60248201526d2d282a1d102327a92124a22222a760911b604482015290519081900360640190fd5b60648111156106d6576040805162461bcd60e51b815260206004820152601060248201526f0b48a74408c8a8abea89e9ebe90928e960831b604482015290519081900360640190fd5b600755565b6005546001600160a01b0316331461072b576040805162461bcd60e51b815260206004820152600e60248201526d2d282a1d102327a92124a22222a760911b604482015290519081900360640190fd5b600580546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b0316331461079d576040805162461bcd60e51b815260206004820152600e60248201526d2d282a1d102327a92124a22222a760911b604482015290519081900360640190fd5b6001600160a01b0381166107eb576040805162461bcd60e51b815260206004820152601060248201526f5a453a205a45524f5f4144445245535360801b604482015290519081900360640190fd5b816001600160a01b031663438ab5ac826040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b03168152602001915050600060405180830381600087803b15801561084357600080fd5b505af1158015610857573d6000803e3d6000fd5b505050505050565b60035490565b6009546001600160701b0380821692600160701b9092041690565b60085481565b6000604051806020016108989061185f565b6020820181038252601f19601f8201166040525080519060200120905090565b6005546001600160a01b031681565b60016020908152600092835260408084209091529082529020546001600160a01b031681565b6004546001600160a01b0316331461093d576040805162461bcd60e51b815260206004820152600e60248201526d2d282a1d102327a92124a22222a760911b604482015290519081900360640190fd5b600655565b6000816001600160a01b0316836001600160a01b031614156109a3576040805162461bcd60e51b81526020600482015260156024820152745a463a204944454e544943414c5f4144445245535360581b604482015290519081900360640190fd5b6001600160a01b038516158015906109c357506001600160a01b03841615155b610a07576040805162461bcd60e51b815260206004820152601060248201526f5a453a205a45524f5f4144445245535360801b604482015290519081900360640190fd5b6001600160a01b0383811660009081526020818152604080832086851684529091529020541615610a73576040805162461bcd60e51b81526020600482015260116024820152705a453a20454e455247595f45584953545360781b604482015290519081900360640190fd5b606060405180602001610a859061185f565b601f1982820381018352601f909101166040528051909150610adc576040805162461bcd60e51b81526020600482018190526024820152600080516020613823833981519152604482015290519081900360640190fd5b6000858560405160200180836001600160a01b03166001600160a01b031660601b8152601401826001600160a01b03166001600160a01b031660601b815260140192505050604051602081830303815290604052805190602001209050808251602084016000f592506001600160a01b038316610b9c576040805162461bcd60e51b8152602060048201526019602482015278437265617465323a204661696c6564206f6e206465706c6f7960381b604482015290519081900360640190fd5b60408051637c643b2f60e11b81526001600160a01b03898116600483015288811660248301528781166044830152868116606483015291519185169163f8c8765e9160848082019260009290919082900301818387803b158015610bff57600080fd5b505af1158015610c13573d6000803e3d6000fd5b5050506001600160a01b038087166000818152602081815260408083208a86168085529083528184208054878c166001600160a01b0319918216811790925560028054600181018255968190527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace90960180549091168217905593548251958652928501528381019190915251909350918916916000805160206138438339815191529181900360600190a35050949350505050565b6000826001600160a01b0316846001600160a01b03161415610d2a576040805162461bcd60e51b81526020600482015260156024820152745a463a204944454e544943414c5f4144445245535360581b604482015290519081900360640190fd5b6001600160a01b038516610d78576040805162461bcd60e51b815260206004820152601060248201526f5a453a205a45524f5f4144445245535360801b604482015290519081900360640190fd5b600080846001600160a01b0316866001600160a01b031610610d9b578486610d9e565b85855b6001600160a01b03808316600090815260016020908152604080832084861684529091529020549294509092501615610e12576040805162461bcd60e51b81526020600482015260116024820152705a453a20454e455247595f45584953545360781b604482015290519081900360640190fd5b606060405180602001610e249061186c565b601f1982820381018352601f909101166040528051909150610e7b576040805162461bcd60e51b81526020600482018190526024820152600080516020613823833981519152604482015290519081900360640190fd5b6040805160608a811b6001600160601b031990811660208085019190915287831b821660348501529186901b1660488301528251808303603c018152605c9092019092528051908201208251909182919084016000f594506001600160a01b038516610f2a576040805162461bcd60e51b8152602060048201526019602482015278437265617465323a204661696c6564206f6e206465706c6f7960381b604482015290519081900360640190fd5b6000610f36858b611718565b90506000610f44858c611718565b90506000610f5487878e8c6117b6565b90506000610f6487898f8d6117b6565b9050886001600160a01b031663358764768e8a8a888888886040518863ffffffff1660e01b815260040180886001600160a01b03166001600160a01b03168152602001876001600160a01b03166001600160a01b03168152602001866001600160a01b03166001600160a01b03168152602001856001600160a01b03166001600160a01b03168152602001846001600160a01b03166001600160a01b03168152602001836001600160a01b03166001600160a01b03168152602001826001600160a01b03166001600160a01b03168152602001975050505050505050600060405180830381600087803b15801561105a57600080fd5b505af115801561106e573d6000803e3d6000fd5b5050505088600160008a6001600160a01b03166001600160a01b031681526020019081526020016000206000896001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b031602179055508860016000896001600160a01b03166001600160a01b0316815260200190815260200160002060008a6001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060038990806001815401808255809150509060018203906000526020600020016000909192909190916101000a8154816001600160a01b0302191690836001600160a01b0316021790555050886001600160a01b03168d6001600160a01b03166000805160206138438339815191528a8a60028054905060405180846001600160a01b03166001600160a01b03168152602001836001600160a01b03166001600160a01b03168152602001828152602001935050505060405180910390a35050505050505050949350505050565b6002818154811061122757fe5b6000918252602090912001546001600160a01b0316905081565b6004546001600160a01b03163314611291576040805162461bcd60e51b815260206004820152600e60248201526d2d282a1d102327a92124a22222a760911b604482015290519081900360640190fd5b60648111156112da576040805162461bcd60e51b815260206004820152601060248201526f0b48a74408c8a8abea89e9ebe90928e960831b604482015290519081900360640190fd5b600855565b60025490565b6004546001600160a01b03163314611335576040805162461bcd60e51b815260206004820152600e60248201526d2d282a1d102327a92124a22222a760911b604482015290519081900360640190fd5b600480546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146113a7576040805162461bcd60e51b815260206004820152600e60248201526d2d282a1d102327a92124a22222a760911b604482015290519081900360640190fd5b6001600160a01b0381166113f5576040805162461bcd60e51b815260206004820152601060248201526f5a453a205a45524f5f4144445245535360801b604482015290519081900360640190fd5b600030848460405160200180836001600160a01b03166001600160a01b031660601b8152601401826001600160a01b03166001600160a01b031660601b81526014019250505060405160208183030381529060405280519060200120611459610886565b60405160200180806001600160f81b0319815250600101846001600160a01b03166001600160a01b031660601b815260140183815260200182815260200193505050506040516020818303038152906040528051906020012060001c9050806001600160a01b031663438ab5ac836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b03168152602001915050600060405180830381600087803b15801561061f57600080fd5b60075481565b6003818154811061122757fe5b6005546001600160a01b03163314611572576040805162461bcd60e51b815260206004820152600e60248201526d2d282a1d102327a92124a22222a760911b604482015290519081900360640190fd5b6001600160a01b0381166115c0576040805162461bcd60e51b815260206004820152601060248201526f5a453a205a45524f5f4144445245535360801b604482015290519081900360640190fd5b6000826001600160a01b03166386f6f4306040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156115fd57600080fd5b505af1158015611611573d6000803e3d6000fd5b505050506040513d602081101561162757600080fd5b5051604080516350d7de8560e11b815290519192506000916001600160a01b0386169163a1afbd0a91600480830192602092919082900301818787803b15801561167057600080fd5b505af1158015611684573d6000803e3d6000fd5b505050506040513d602081101561169a57600080fd5b50516040805163f222771560e01b8152600481018590526024810183905290519192506001600160a01b0385169163f22277159160448082019260009290919082900301818387803b15801561061f57600080fd5b60065481565b60006020818152928152604080822090935290815220546001600160a01b031681565b604080516001600160601b0319606093841b811660208084019190915294841b166034820152815160288183030181526048820183528051908501206001600160f81b031960688301523090931b6069820152607d8101929092527ff7f47583f133c1e04059755d96b165532bef2114faae8e068f21ffd8fe846bd0609d808401919091528151808403909101815260bd9092019052805191012090565b604080516001600160601b0319606096871b811660208084019190915295871b8116603483015293861b841660488201528151603c818303018152605c820183528051908601206001600160f81b0319607c8301529290951b909216607d85015260918401527f9fc442a4d7a12215c697eb81564442a0cd83ff2b9db622486b898fe36004e49260b1808501919091528151808503909101815260d19093019052815191012090565b610df48061187a83390190565b61118e8061266e8339019056fe6080604052600060065534801561001557600080fd5b50600480546001600160a01b03191633179055610dbd806100376000396000f3fe608060405234801561001057600080fd5b50600436106100625760003560e01c80630269b9ca1461006757806303f187ea14610096578063158ef93e146100a0578063438ab5ac146100a85780634923b230146100ce578063f8c8765e146100d6575b600080fd5b6100846004803603602081101561007d57600080fd5b5035610114565b60408051918252519081900360200190f35b61009e610268565b005b610084610542565b61009e600480360360208110156100be57600080fd5b50356001600160a01b0316610548565b61009e6106c1565b61009e600480360360808110156100ec57600080fd5b506001600160a01b0381358116916020810135821691604082013581169160600135166107d7565b6000600654600114610161576040805162461bcd60e51b81526020600482015260116024820152702d34b931b7b71d102327a92124a22222a760791b604482015290519081900360640190fd5b60008061016c610a6a565b6001600160701b0391821693501690506706f05b59d3b2000060008186116101a6576101a1868303600a63ffffffff610aea16565b6101b9565b6101b9828703600a63ffffffff610aea16565b905067063eb89da4ed0000861115806101da57506707a1fe16027700008610155b1561021e576b012ced32a16a1b11e826288960241b61020f82610203868263ffffffff610aea16565b9063ffffffff610aea16565b8161021657fe5b04945061025f565b61025c846a0c097ce7bc90715b34b9f160241b61024860246102038681868263ffffffff610aea16565b8161024f57fe5b049063ffffffff610b5316565b94505b50505050919050565b6000546001600160a01b031633146102b7576040805162461bcd60e51b815260206004820152600d60248201526c2d229d102737ba10283cb637b760991b604482015290519081900360640190fd5b600654600114610302576040805162461bcd60e51b81526020600482015260116024820152702d34b931b7b71d102327a92124a22222a760791b604482015290519081900360640190fd5b600354604080516370a0823160e01b815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b15801561034d57600080fd5b505afa158015610361573d6000803e3d6000fd5b505050506040513d602081101561037757600080fd5b50516005549091508110156103c9576040805162461bcd60e51b815260206004820152601360248201527216914e88105b98da1bdc881b9bdd081cd95b9d606a1b604482015290519081900360640190fd5b60006103e060055483610ba290919063ffffffff16565b90506000600460009054906101000a90046001600160a01b03166001600160a01b031663708284b46040518163ffffffff1660e01b815260040160206040518083038186803b15801561043257600080fd5b505afa158015610446573d6000803e3d6000fd5b505050506040513d602081101561045c57600080fd5b5051600480546002546003546040805163044209e560e51b81526001600160a01b03938416958101959095529082166024850152519394506000939116916388413ca0916044808301926020929190829003018186803b1580156104bf57600080fd5b505afa1580156104d3573d6000803e3d6000fd5b505050506040513d60208110156104e957600080fd5b5051905060006064610501858563ffffffff610aea16565b8161050857fe5b049050801561052857600354610528906001600160a01b03168383610bf2565b610538858263ffffffff610ba216565b6005555050505050565b60065481565b6004546001600160a01b03163314610597576040805162461bcd60e51b815260206004820152600d60248201526c2d281d102327a92124a22222a760991b604482015290519081900360640190fd5b600154604080516370a0823160e01b815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b1580156105e257600080fd5b505afa1580156105f6573d6000803e3d6000fd5b505050506040513d602081101561060c57600080fd5b5051600354604080516370a0823160e01b815230600482015290519293506000926001600160a01b03909216916370a0823191602480820192602092909190829003018186803b15801561065f57600080fd5b505afa158015610673573d6000803e3d6000fd5b505050506040513d602081101561068957600080fd5b50516001549091506106a5906001600160a01b03168484610bf2565b6003546106bc906001600160a01b03168483610bf2565b505050565b6000546001600160a01b03163314610710576040805162461bcd60e51b815260206004820152600d60248201526c2d229d102737ba10283cb637b760991b604482015290519081900360640190fd5b60065460011461075b576040805162461bcd60e51b81526020600482015260116024820152702d34b931b7b71d102327a92124a22222a760791b604482015290519081900360640190fd5b600354604080516370a0823160e01b815230600482015290516001600160a01b03909216916370a0823191602480820192602092909190829003018186803b1580156107a657600080fd5b505afa1580156107ba573d6000803e3d6000fd5b505050506040513d60208110156107d057600080fd5b5051600555565b60065415610816576040805162461bcd60e51b81526020600482015260076024820152665a45523a20414960c81b604482015290519081900360640190fd5b6004546001600160a01b03163314610869576040805162461bcd60e51b81526020600482015260116024820152702d34b931b7b71d102327a92124a22222a760791b604482015290519081900360640190fd5b6000826001600160a01b0316846001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b1580156108ae57600080fd5b505afa1580156108c2573d6000803e3d6000fd5b505050506040513d60208110156108d857600080fd5b50516001600160a01b0316149050600080826108f55783856108f8565b84845b604080516080810182526001600160a01b03808c168083528b821660208085018290528388168587018190529387166060909501859052600080546001600160a01b0319908116851782556001805482168517905560028054821690961790955560038054909516909517909355845163095ea7b360e01b8152600481019290925260001960248301529351959750939550919363095ea7b39360448082019493918390030190829087803b1580156109b057600080fd5b505af11580156109c4573d6000803e3d6000fd5b505050506040513d60208110156109da57600080fd5b50506040805163095ea7b360e01b81526001600160a01b038981166004830152600019602483015291519183169163095ea7b3916044808201926020929091908290030181600087803b158015610a3057600080fd5b505af1158015610a44573d6000803e3d6000fd5b505050506040513d6020811015610a5a57600080fd5b5050600160065550505050505050565b60048054604080516363e1240160e01b8152815160009485946001600160a01b0316936363e124019380830193919290829003018186803b158015610aae57600080fd5b505afa158015610ac2573d6000803e3d6000fd5b505050506040513d6040811015610ad857600080fd5b50805160209091015190939092509050565b6000811580610b0557505080820282828281610b0257fe5b04145b610b4d576040805162461bcd60e51b815260206004820152601460248201527364732d6d6174682d6d756c2d6f766572666c6f7760601b604482015290519081900360640190fd5b92915050565b80820182811015610b4d576040805162461bcd60e51b815260206004820152601460248201527364732d6d6174682d6164642d6f766572666c6f7760601b604482015290519081900360640190fd5b80820382811115610b4d576040805162461bcd60e51b815260206004820152601560248201527464732d6d6174682d7375622d756e646572666c6f7760581b604482015290519081900360640190fd5b60408051808201825260198152787472616e7366657228616464726573732c75696e743235362960381b60209182015281516001600160a01b0385811660248301526044808301869052845180840390910181526064909201845291810180516001600160e01b031663a9059cbb60e01b1781529251815160009460609489169392918291908083835b60208310610c9b5780518252601f199092019160209182019101610c7c565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114610cfd576040519150601f19603f3d011682016040523d82523d6000602084013e610d02565b606091505b5091509150818015610d30575080511580610d305750808060200190516020811015610d2d57600080fd5b50515b610d81576040805162461bcd60e51b815260206004820152601d60248201527f5a6972636f6e2050796c6f6e3a205452414e534645525f4641494c4544000000604482015290519081900360640190fd5b505050505056fea265627a7a723158209902d661ff4fb63696078ea7b4bc6b449e7ce11e13953a0e85b46977b3bb7bb964736f6c6343000510003260806040526000600c5534801561001557600080fd5b506000805460ff19166001179055600280546001600160a01b0319163317905561114a806100446000396000f3fe608060405234801561001057600080fd5b50600436106100a45760003560e01c80630b48bd23146100a9578063158ef93e146100c357806317d1ff9f146100cb57806335876476146100ef578063438ab5ac1461014957806349d20f661461016f57806386f6f4301461019d578063a1afbd0a146101a5578063b9d92de8146101ad578063cb6f916e146101ca578063cd3293de14610200578063f222771514610208575b600080fd5b6100b161022b565b60408051918252519081900360200190f35b6100b161031f565b6100d3610325565b604080516001600160a01b039092168252519081900360200190f35b610147600480360360e081101561010557600080fd5b506001600160a01b038135811691602081013582169160408201358116916060810135821691608082013581169160a081013582169160c09091013516610334565b005b6101476004803603602081101561015f57600080fd5b50356001600160a01b0316610485565b6101476004803603604081101561018557600080fd5b506001600160a01b0381358116916020013516610693565b6100b1610714565b6100b161071a565b610147600480360360208110156101c357600080fd5b5035610720565b610147600480360360608110156101e057600080fd5b506001600160a01b03813581169160208101359160409091013516610cd6565b6100b1610df0565b6101476004803603604081101561021e57600080fd5b5080359060200135610df6565b6000600c54600114610278576040805162461bcd60e51b81526020600482015260116024820152702d34b931b7b71d102327a92124a22222a760791b604482015290519081900360640190fd5b600a546001600160a01b031633148061029b5750600b546001600160a01b031633145b6102dc576040805162461bcd60e51b815260206004820152600d60248201526c2d229d102737ba10283cb637b760991b604482015290519081900360640190fd5b600a546001600160a01b03163314156102fe575060048054600090915561031c565b600b546001600160a01b031633141561031c57506003805460009091555b90565b600c5481565b6002546001600160a01b031681565b600c541561037c576040805162461bcd60e51b815260206004820152601060248201526f5a45523a204e6f7420466163746f727960801b604482015290519081900360640190fd5b6002546001600160a01b031633146103ce576040805162461bcd60e51b815260206004820152601060248201526f5a45523a204e6f7420466163746f727960801b604482015290519081900360640190fd5b6040805160e0810182526001600160a01b0398891680825297891660208201819052968916918101829052948816606086018190529388166080860181905292881660a086018190529190971660c0909401849052600580546001600160a01b031990811690971790556006805487169095179094556007805486169096179095556008805485169091179055600980548416909417909355600a805483169091179055600b805490911690911790556001600c55565b6002546001600160a01b031633146104d4576040805162461bcd60e51b815260206004820152600d60248201526c2d281d102327a92124a22222a760991b604482015290519081900360640190fd5b600554604080516370a0823160e01b815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b15801561051f57600080fd5b505afa158015610533573d6000803e3d6000fd5b505050506040513d602081101561054957600080fd5b5051600754604080516370a0823160e01b815230600482015290519293506000926001600160a01b03909216916370a0823191602480820192602092909190829003018186803b15801561059c57600080fd5b505afa1580156105b0573d6000803e3d6000fd5b505050506040513d60208110156105c657600080fd5b5051600654604080516370a0823160e01b815230600482015290519293506000926001600160a01b03909216916370a0823191602480820192602092909190829003018186803b15801561061957600080fd5b505afa15801561062d573d6000803e3d6000fd5b505050506040513d602081101561064357600080fd5b505160055490915061065f906001600160a01b03168585610e50565b600754610676906001600160a01b03168584610e50565b60065461068d906001600160a01b03168583610e50565b50505050565b6002546001600160a01b031633146106e6576040805162461bcd60e51b81526020600482015260116024820152702d34b931b7b71d102327a92124a22222a760791b604482015290519081900360640190fd5b600a80546001600160a01b039384166001600160a01b031991821617909155600b8054929093169116179055565b60045481565b60035481565b6005546001600160a01b0316331461076e576040805162461bcd60e51b815260206004820152600c60248201526b2d229d102737ba102830b4b960a11b604482015290519081900360640190fd5b60005460ff166107c5576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b6000805460ff19169055600c5460011461081a576040805162461bcd60e51b81526020600482015260116024820152702d34b931b7b71d102327a92124a22222a760791b604482015290519081900360640190fd5b600554604080516370a0823160e01b815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b15801561086557600080fd5b505afa158015610879573d6000803e3d6000fd5b505050506040513d602081101561088f57600080fd5b505160015490915081116108da576040805162461bcd60e51b815260206004820152600d60248201526c1691548e8814995d995c9d1959609a1b604482015290519081900360640190fd5b600554604080516318160ddd60e01b815290516000926001600160a01b0316916318160ddd916004808301926020929190829003018186803b15801561091f57600080fd5b505afa158015610933573d6000803e3d6000fd5b505050506040513d602081101561094957600080fd5b5051600554600a54604080516370a0823160e01b81526001600160a01b039283166004820152905193945060009391909216916370a08231916024808301926020929190829003018186803b1580156109a157600080fd5b505afa1580156109b5573d6000803e3d6000fd5b505050506040513d60208110156109cb57600080fd5b5051600554600b54604080516370a0823160e01b81526001600160a01b039283166004820152905193945060009391909216916370a08231916024808301926020929190829003018186803b158015610a2357600080fd5b505afa158015610a37573d6000803e3d6000fd5b505050506040513d6020811015610a4d57600080fd5b505160055460408051630240bc6b60e21b8152905192935060009283926001600160a01b031691630902f1ac916004808301926060929190829003018186803b158015610a9957600080fd5b505afa158015610aad573d6000803e3d6000fd5b505050506040513d6060811015610ac357600080fd5b5080516020909101519092509050610ae985670de0b6b3a764000063ffffffff610fe616565b610b1585610b096002818c6001600160701b03881663ffffffff610fe616565b9063ffffffff610fe616565b81610b1c57fe5b60048054929091049091019055610b3b85670de0b6b3a7640000610fe6565b610b5b84610b096002818c6001600160701b03891663ffffffff610fe616565b81610b6257fe5b60038054929091049091019055505060025460408051635d3be3c960e11b815290516000926001600160a01b03169163ba77c792916004808301926020929190829003018186803b158015610bb657600080fd5b505afa158015610bca573d6000803e3d6000fd5b505050506040513d6020811015610be057600080fd5b5051600154909150600090610bfc90879063ffffffff61104f16565b905060006064610c2d84820388610c19868a63ffffffff610fe616565b81610c2057fe5b049063ffffffff610fe616565b81610c3457fe5b04905060006064610c5285820389610c19878a63ffffffff610fe616565b81610c5957fe5b600554600854929091049250610c7c916001600160a01b03918216911684610e50565b600554600954610c99916001600160a01b03908116911683610e50565b610cb9610cac838363ffffffff61109f16565b899063ffffffff61104f16565b60019081556000805460ff19169091179055505050505050505050565b6002546001600160a01b03163314610d30576040805162461bcd60e51b81526020600482015260186024820152771691548e88139bdd081c1c9bdc195c9b1e4818d85b1b195960421b604482015290519081900360640190fd5b81610d6c5760405162461bcd60e51b81526004018080602001828103825260278152602001806110ef6027913960400191505060405180910390fd5b6005546001600160a01b0384811691161415610de057600154821115610dc9576040805162461bcd60e51b815260206004820152600d60248201526c1691548e8814995d995c9d1959609a1b604482015290519081900360640190fd5b600154610ddc908363ffffffff61104f16565b6001555b610deb838284610e50565b505050565b60015481565b6002546001600160a01b03163314610e48576040805162461bcd60e51b815260206004820152601060248201526f5a45523a204e6f7420466163746f727960801b604482015290519081900360640190fd5b600355600455565b60408051808201825260198152787472616e7366657228616464726573732c75696e743235362960381b60209182015281516001600160a01b0385811660248301526044808301869052845180840390910181526064909201845291810180516001600160e01b031663a9059cbb60e01b1781529251815160009460609489169392918291908083835b60208310610ef95780518252601f199092019160209182019101610eda565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114610f5b576040519150601f19603f3d011682016040523d82523d6000602084013e610f60565b606091505b5091509150818015610f8e575080511580610f8e5750808060200190516020811015610f8b57600080fd5b50515b610fdf576040805162461bcd60e51b815260206004820152601d60248201527f5a6972636f6e2050796c6f6e3a205452414e534645525f4641494c4544000000604482015290519081900360640190fd5b5050505050565b600081158061100157505080820282828281610ffe57fe5b04145b611049576040805162461bcd60e51b815260206004820152601460248201527364732d6d6174682d6d756c2d6f766572666c6f7760601b604482015290519081900360640190fd5b92915050565b80820382811115611049576040805162461bcd60e51b815260206004820152601560248201527464732d6d6174682d7375622d756e646572666c6f7760581b604482015290519081900360640190fd5b80820182811015611049576040805162461bcd60e51b815260206004820152601460248201527364732d6d6174682d6164642d6f766572666c6f7760601b604482015290519081900360640190fdfe4f7065726174696f6e733a2043616e6e6f74207265636f766572207a65726f2062616c616e6365a265627a7a7231582072ec96ea622bee2792b7c61061d3846cbdb3956f7c993cb20c92fd66680e907664736f6c634300051000324f7065726174696f6e733a2043616e6e6f74207265636f766572207a65726f2062616c616e6365437265617465323a2062797465636f6465206c656e677468206973207a65726f3b4e72e4103178db6cd2e27320e98d9afdd1ab6f078b707886d1bf92b9fd8b25a265627a7a72315820b5cb53795b27a5aee37d897cc57581562248c36a37dba54c82528fc1d2db9b2d64736f6c634300051000320000000000000000000000004ba754989b77925f47e26c54aaa1b03df23b32ce0000000000000000000000009aef9098af9d1e2d78fcd9b928c946a7f23307d3
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101495760003560e01c8063094b74151461014e5780630b0d7eb1146101725780630c16293a146101a25780631b151bc1146101de57806323cf3118146101fb578063295305d1146102215780634dd814421461024f57806363e1240114610269578063708284b41461029757806373e56b141461029f5780637cd07e47146102a757806388413ca0146102af5780638d72dfee146102dd5780639172e784146102fa5780639364a2961461029f57806394a77e5b14610338578063957ddb16146103765780639f9c54c914610393578063a2669ce7146103b0578063a2e74af6146103b8578063b5b729f6146103de578063ba77c79214610416578063cd2ba9641461041e578063d63135601461043b578063dcd8fc0b14610469578063e95078cf14610221578063f732ff4b14610471575b600080fd5b61015661049f565b604080516001600160a01b039092168252519081900360200190f35b6101a06004803603604081101561018857600080fd5b506001600160701b03813581169160200135166104ae565b005b6101a0600480360360808110156101b857600080fd5b506001600160a01b03813581169160208101359160408201358116916060013516610539565b6101a0600480360360208110156101f457600080fd5b503561063d565b6101a06004803603602081101561021157600080fd5b50356001600160a01b03166106db565b6101a06004803603604081101561023757600080fd5b506001600160a01b038135811691602001351661074d565b61025761085f565b60408051918252519081900360200190f35b610271610865565b604080516001600160701b03938416815291909216602082015281519081900390910190f35b610257610880565b610257610886565b6101566108b8565b610156600480360360408110156102c557600080fd5b506001600160a01b03813581169160200135166108c7565b6101a0600480360360208110156102f357600080fd5b50356108ed565b6101566004803603608081101561031057600080fd5b506001600160a01b038135811691602081013582169160408201358116916060013516610942565b6101566004803603608081101561034e57600080fd5b506001600160a01b038135811691602081013582169160408201358116916060013516610cc9565b6101566004803603602081101561038c57600080fd5b503561121a565b6101a0600480360360208110156103a957600080fd5b5035611241565b6102576112df565b6101a0600480360360208110156103ce57600080fd5b50356001600160a01b03166112e5565b6101a0600480360360608110156103f457600080fd5b506001600160a01b038135811691602081013582169160409091013516611357565b61025761150f565b6101566004803603602081101561043457600080fd5b5035611515565b6101a06004803603604081101561045157600080fd5b506001600160a01b0381358116916020013516611522565b6102576116ef565b6101566004803603604081101561048757600080fd5b506001600160a01b03813581169160200135166116f5565b6004546001600160a01b031681565b6004546001600160a01b031633146104fe576040805162461bcd60e51b815260206004820152600e60248201526d2d282a1d102327a92124a22222a760911b604482015290519081900360640190fd5b600980546001600160701b03928316600160701b02600160701b600160e01b0319949093166001600160701b03199091161792909216179055565b6004546001600160a01b03163314610589576040805162461bcd60e51b815260206004820152600e60248201526d2d282a1d102327a92124a22222a760911b604482015290519081900360640190fd5b826105c55760405162461bcd60e51b81526004018080602001828103825260278152602001806137fc6027913960400191505060405180910390fd5b604080516365b7c8b760e11b81526001600160a01b03868116600483015260248201869052848116604483015291519183169163cb6f916e9160648082019260009290919082900301818387803b15801561061f57600080fd5b505af1158015610633573d6000803e3d6000fd5b5050505050505050565b6004546001600160a01b0316331461068d576040805162461bcd60e51b815260206004820152600e60248201526d2d282a1d102327a92124a22222a760911b604482015290519081900360640190fd5b60648111156106d6576040805162461bcd60e51b815260206004820152601060248201526f0b48a74408c8a8abea89e9ebe90928e960831b604482015290519081900360640190fd5b600755565b6005546001600160a01b0316331461072b576040805162461bcd60e51b815260206004820152600e60248201526d2d282a1d102327a92124a22222a760911b604482015290519081900360640190fd5b600580546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b0316331461079d576040805162461bcd60e51b815260206004820152600e60248201526d2d282a1d102327a92124a22222a760911b604482015290519081900360640190fd5b6001600160a01b0381166107eb576040805162461bcd60e51b815260206004820152601060248201526f5a453a205a45524f5f4144445245535360801b604482015290519081900360640190fd5b816001600160a01b031663438ab5ac826040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b03168152602001915050600060405180830381600087803b15801561084357600080fd5b505af1158015610857573d6000803e3d6000fd5b505050505050565b60035490565b6009546001600160701b0380821692600160701b9092041690565b60085481565b6000604051806020016108989061185f565b6020820181038252601f19601f8201166040525080519060200120905090565b6005546001600160a01b031681565b60016020908152600092835260408084209091529082529020546001600160a01b031681565b6004546001600160a01b0316331461093d576040805162461bcd60e51b815260206004820152600e60248201526d2d282a1d102327a92124a22222a760911b604482015290519081900360640190fd5b600655565b6000816001600160a01b0316836001600160a01b031614156109a3576040805162461bcd60e51b81526020600482015260156024820152745a463a204944454e544943414c5f4144445245535360581b604482015290519081900360640190fd5b6001600160a01b038516158015906109c357506001600160a01b03841615155b610a07576040805162461bcd60e51b815260206004820152601060248201526f5a453a205a45524f5f4144445245535360801b604482015290519081900360640190fd5b6001600160a01b0383811660009081526020818152604080832086851684529091529020541615610a73576040805162461bcd60e51b81526020600482015260116024820152705a453a20454e455247595f45584953545360781b604482015290519081900360640190fd5b606060405180602001610a859061185f565b601f1982820381018352601f909101166040528051909150610adc576040805162461bcd60e51b81526020600482018190526024820152600080516020613823833981519152604482015290519081900360640190fd5b6000858560405160200180836001600160a01b03166001600160a01b031660601b8152601401826001600160a01b03166001600160a01b031660601b815260140192505050604051602081830303815290604052805190602001209050808251602084016000f592506001600160a01b038316610b9c576040805162461bcd60e51b8152602060048201526019602482015278437265617465323a204661696c6564206f6e206465706c6f7960381b604482015290519081900360640190fd5b60408051637c643b2f60e11b81526001600160a01b03898116600483015288811660248301528781166044830152868116606483015291519185169163f8c8765e9160848082019260009290919082900301818387803b158015610bff57600080fd5b505af1158015610c13573d6000803e3d6000fd5b5050506001600160a01b038087166000818152602081815260408083208a86168085529083528184208054878c166001600160a01b0319918216811790925560028054600181018255968190527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace90960180549091168217905593548251958652928501528381019190915251909350918916916000805160206138438339815191529181900360600190a35050949350505050565b6000826001600160a01b0316846001600160a01b03161415610d2a576040805162461bcd60e51b81526020600482015260156024820152745a463a204944454e544943414c5f4144445245535360581b604482015290519081900360640190fd5b6001600160a01b038516610d78576040805162461bcd60e51b815260206004820152601060248201526f5a453a205a45524f5f4144445245535360801b604482015290519081900360640190fd5b600080846001600160a01b0316866001600160a01b031610610d9b578486610d9e565b85855b6001600160a01b03808316600090815260016020908152604080832084861684529091529020549294509092501615610e12576040805162461bcd60e51b81526020600482015260116024820152705a453a20454e455247595f45584953545360781b604482015290519081900360640190fd5b606060405180602001610e249061186c565b601f1982820381018352601f909101166040528051909150610e7b576040805162461bcd60e51b81526020600482018190526024820152600080516020613823833981519152604482015290519081900360640190fd5b6040805160608a811b6001600160601b031990811660208085019190915287831b821660348501529186901b1660488301528251808303603c018152605c9092019092528051908201208251909182919084016000f594506001600160a01b038516610f2a576040805162461bcd60e51b8152602060048201526019602482015278437265617465323a204661696c6564206f6e206465706c6f7960381b604482015290519081900360640190fd5b6000610f36858b611718565b90506000610f44858c611718565b90506000610f5487878e8c6117b6565b90506000610f6487898f8d6117b6565b9050886001600160a01b031663358764768e8a8a888888886040518863ffffffff1660e01b815260040180886001600160a01b03166001600160a01b03168152602001876001600160a01b03166001600160a01b03168152602001866001600160a01b03166001600160a01b03168152602001856001600160a01b03166001600160a01b03168152602001846001600160a01b03166001600160a01b03168152602001836001600160a01b03166001600160a01b03168152602001826001600160a01b03166001600160a01b03168152602001975050505050505050600060405180830381600087803b15801561105a57600080fd5b505af115801561106e573d6000803e3d6000fd5b5050505088600160008a6001600160a01b03166001600160a01b031681526020019081526020016000206000896001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b031602179055508860016000896001600160a01b03166001600160a01b0316815260200190815260200160002060008a6001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060038990806001815401808255809150509060018203906000526020600020016000909192909190916101000a8154816001600160a01b0302191690836001600160a01b0316021790555050886001600160a01b03168d6001600160a01b03166000805160206138438339815191528a8a60028054905060405180846001600160a01b03166001600160a01b03168152602001836001600160a01b03166001600160a01b03168152602001828152602001935050505060405180910390a35050505050505050949350505050565b6002818154811061122757fe5b6000918252602090912001546001600160a01b0316905081565b6004546001600160a01b03163314611291576040805162461bcd60e51b815260206004820152600e60248201526d2d282a1d102327a92124a22222a760911b604482015290519081900360640190fd5b60648111156112da576040805162461bcd60e51b815260206004820152601060248201526f0b48a74408c8a8abea89e9ebe90928e960831b604482015290519081900360640190fd5b600855565b60025490565b6004546001600160a01b03163314611335576040805162461bcd60e51b815260206004820152600e60248201526d2d282a1d102327a92124a22222a760911b604482015290519081900360640190fd5b600480546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146113a7576040805162461bcd60e51b815260206004820152600e60248201526d2d282a1d102327a92124a22222a760911b604482015290519081900360640190fd5b6001600160a01b0381166113f5576040805162461bcd60e51b815260206004820152601060248201526f5a453a205a45524f5f4144445245535360801b604482015290519081900360640190fd5b600030848460405160200180836001600160a01b03166001600160a01b031660601b8152601401826001600160a01b03166001600160a01b031660601b81526014019250505060405160208183030381529060405280519060200120611459610886565b60405160200180806001600160f81b0319815250600101846001600160a01b03166001600160a01b031660601b815260140183815260200182815260200193505050506040516020818303038152906040528051906020012060001c9050806001600160a01b031663438ab5ac836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b03168152602001915050600060405180830381600087803b15801561061f57600080fd5b60075481565b6003818154811061122757fe5b6005546001600160a01b03163314611572576040805162461bcd60e51b815260206004820152600e60248201526d2d282a1d102327a92124a22222a760911b604482015290519081900360640190fd5b6001600160a01b0381166115c0576040805162461bcd60e51b815260206004820152601060248201526f5a453a205a45524f5f4144445245535360801b604482015290519081900360640190fd5b6000826001600160a01b03166386f6f4306040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156115fd57600080fd5b505af1158015611611573d6000803e3d6000fd5b505050506040513d602081101561162757600080fd5b5051604080516350d7de8560e11b815290519192506000916001600160a01b0386169163a1afbd0a91600480830192602092919082900301818787803b15801561167057600080fd5b505af1158015611684573d6000803e3d6000fd5b505050506040513d602081101561169a57600080fd5b50516040805163f222771560e01b8152600481018590526024810183905290519192506001600160a01b0385169163f22277159160448082019260009290919082900301818387803b15801561061f57600080fd5b60065481565b60006020818152928152604080822090935290815220546001600160a01b031681565b604080516001600160601b0319606093841b811660208084019190915294841b166034820152815160288183030181526048820183528051908501206001600160f81b031960688301523090931b6069820152607d8101929092527ff7f47583f133c1e04059755d96b165532bef2114faae8e068f21ffd8fe846bd0609d808401919091528151808403909101815260bd9092019052805191012090565b604080516001600160601b0319606096871b811660208084019190915295871b8116603483015293861b841660488201528151603c818303018152605c820183528051908601206001600160f81b0319607c8301529290951b909216607d85015260918401527f9fc442a4d7a12215c697eb81564442a0cd83ff2b9db622486b898fe36004e49260b1808501919091528151808503909101815260d19093019052815191012090565b610df48061187a83390190565b61118e8061266e8339019056fe6080604052600060065534801561001557600080fd5b50600480546001600160a01b03191633179055610dbd806100376000396000f3fe608060405234801561001057600080fd5b50600436106100625760003560e01c80630269b9ca1461006757806303f187ea14610096578063158ef93e146100a0578063438ab5ac146100a85780634923b230146100ce578063f8c8765e146100d6575b600080fd5b6100846004803603602081101561007d57600080fd5b5035610114565b60408051918252519081900360200190f35b61009e610268565b005b610084610542565b61009e600480360360208110156100be57600080fd5b50356001600160a01b0316610548565b61009e6106c1565b61009e600480360360808110156100ec57600080fd5b506001600160a01b0381358116916020810135821691604082013581169160600135166107d7565b6000600654600114610161576040805162461bcd60e51b81526020600482015260116024820152702d34b931b7b71d102327a92124a22222a760791b604482015290519081900360640190fd5b60008061016c610a6a565b6001600160701b0391821693501690506706f05b59d3b2000060008186116101a6576101a1868303600a63ffffffff610aea16565b6101b9565b6101b9828703600a63ffffffff610aea16565b905067063eb89da4ed0000861115806101da57506707a1fe16027700008610155b1561021e576b012ced32a16a1b11e826288960241b61020f82610203868263ffffffff610aea16565b9063ffffffff610aea16565b8161021657fe5b04945061025f565b61025c846a0c097ce7bc90715b34b9f160241b61024860246102038681868263ffffffff610aea16565b8161024f57fe5b049063ffffffff610b5316565b94505b50505050919050565b6000546001600160a01b031633146102b7576040805162461bcd60e51b815260206004820152600d60248201526c2d229d102737ba10283cb637b760991b604482015290519081900360640190fd5b600654600114610302576040805162461bcd60e51b81526020600482015260116024820152702d34b931b7b71d102327a92124a22222a760791b604482015290519081900360640190fd5b600354604080516370a0823160e01b815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b15801561034d57600080fd5b505afa158015610361573d6000803e3d6000fd5b505050506040513d602081101561037757600080fd5b50516005549091508110156103c9576040805162461bcd60e51b815260206004820152601360248201527216914e88105b98da1bdc881b9bdd081cd95b9d606a1b604482015290519081900360640190fd5b60006103e060055483610ba290919063ffffffff16565b90506000600460009054906101000a90046001600160a01b03166001600160a01b031663708284b46040518163ffffffff1660e01b815260040160206040518083038186803b15801561043257600080fd5b505afa158015610446573d6000803e3d6000fd5b505050506040513d602081101561045c57600080fd5b5051600480546002546003546040805163044209e560e51b81526001600160a01b03938416958101959095529082166024850152519394506000939116916388413ca0916044808301926020929190829003018186803b1580156104bf57600080fd5b505afa1580156104d3573d6000803e3d6000fd5b505050506040513d60208110156104e957600080fd5b5051905060006064610501858563ffffffff610aea16565b8161050857fe5b049050801561052857600354610528906001600160a01b03168383610bf2565b610538858263ffffffff610ba216565b6005555050505050565b60065481565b6004546001600160a01b03163314610597576040805162461bcd60e51b815260206004820152600d60248201526c2d281d102327a92124a22222a760991b604482015290519081900360640190fd5b600154604080516370a0823160e01b815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b1580156105e257600080fd5b505afa1580156105f6573d6000803e3d6000fd5b505050506040513d602081101561060c57600080fd5b5051600354604080516370a0823160e01b815230600482015290519293506000926001600160a01b03909216916370a0823191602480820192602092909190829003018186803b15801561065f57600080fd5b505afa158015610673573d6000803e3d6000fd5b505050506040513d602081101561068957600080fd5b50516001549091506106a5906001600160a01b03168484610bf2565b6003546106bc906001600160a01b03168483610bf2565b505050565b6000546001600160a01b03163314610710576040805162461bcd60e51b815260206004820152600d60248201526c2d229d102737ba10283cb637b760991b604482015290519081900360640190fd5b60065460011461075b576040805162461bcd60e51b81526020600482015260116024820152702d34b931b7b71d102327a92124a22222a760791b604482015290519081900360640190fd5b600354604080516370a0823160e01b815230600482015290516001600160a01b03909216916370a0823191602480820192602092909190829003018186803b1580156107a657600080fd5b505afa1580156107ba573d6000803e3d6000fd5b505050506040513d60208110156107d057600080fd5b5051600555565b60065415610816576040805162461bcd60e51b81526020600482015260076024820152665a45523a20414960c81b604482015290519081900360640190fd5b6004546001600160a01b03163314610869576040805162461bcd60e51b81526020600482015260116024820152702d34b931b7b71d102327a92124a22222a760791b604482015290519081900360640190fd5b6000826001600160a01b0316846001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b1580156108ae57600080fd5b505afa1580156108c2573d6000803e3d6000fd5b505050506040513d60208110156108d857600080fd5b50516001600160a01b0316149050600080826108f55783856108f8565b84845b604080516080810182526001600160a01b03808c168083528b821660208085018290528388168587018190529387166060909501859052600080546001600160a01b0319908116851782556001805482168517905560028054821690961790955560038054909516909517909355845163095ea7b360e01b8152600481019290925260001960248301529351959750939550919363095ea7b39360448082019493918390030190829087803b1580156109b057600080fd5b505af11580156109c4573d6000803e3d6000fd5b505050506040513d60208110156109da57600080fd5b50506040805163095ea7b360e01b81526001600160a01b038981166004830152600019602483015291519183169163095ea7b3916044808201926020929091908290030181600087803b158015610a3057600080fd5b505af1158015610a44573d6000803e3d6000fd5b505050506040513d6020811015610a5a57600080fd5b5050600160065550505050505050565b60048054604080516363e1240160e01b8152815160009485946001600160a01b0316936363e124019380830193919290829003018186803b158015610aae57600080fd5b505afa158015610ac2573d6000803e3d6000fd5b505050506040513d6040811015610ad857600080fd5b50805160209091015190939092509050565b6000811580610b0557505080820282828281610b0257fe5b04145b610b4d576040805162461bcd60e51b815260206004820152601460248201527364732d6d6174682d6d756c2d6f766572666c6f7760601b604482015290519081900360640190fd5b92915050565b80820182811015610b4d576040805162461bcd60e51b815260206004820152601460248201527364732d6d6174682d6164642d6f766572666c6f7760601b604482015290519081900360640190fd5b80820382811115610b4d576040805162461bcd60e51b815260206004820152601560248201527464732d6d6174682d7375622d756e646572666c6f7760581b604482015290519081900360640190fd5b60408051808201825260198152787472616e7366657228616464726573732c75696e743235362960381b60209182015281516001600160a01b0385811660248301526044808301869052845180840390910181526064909201845291810180516001600160e01b031663a9059cbb60e01b1781529251815160009460609489169392918291908083835b60208310610c9b5780518252601f199092019160209182019101610c7c565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114610cfd576040519150601f19603f3d011682016040523d82523d6000602084013e610d02565b606091505b5091509150818015610d30575080511580610d305750808060200190516020811015610d2d57600080fd5b50515b610d81576040805162461bcd60e51b815260206004820152601d60248201527f5a6972636f6e2050796c6f6e3a205452414e534645525f4641494c4544000000604482015290519081900360640190fd5b505050505056fea265627a7a723158209902d661ff4fb63696078ea7b4bc6b449e7ce11e13953a0e85b46977b3bb7bb964736f6c6343000510003260806040526000600c5534801561001557600080fd5b506000805460ff19166001179055600280546001600160a01b0319163317905561114a806100446000396000f3fe608060405234801561001057600080fd5b50600436106100a45760003560e01c80630b48bd23146100a9578063158ef93e146100c357806317d1ff9f146100cb57806335876476146100ef578063438ab5ac1461014957806349d20f661461016f57806386f6f4301461019d578063a1afbd0a146101a5578063b9d92de8146101ad578063cb6f916e146101ca578063cd3293de14610200578063f222771514610208575b600080fd5b6100b161022b565b60408051918252519081900360200190f35b6100b161031f565b6100d3610325565b604080516001600160a01b039092168252519081900360200190f35b610147600480360360e081101561010557600080fd5b506001600160a01b038135811691602081013582169160408201358116916060810135821691608082013581169160a081013582169160c09091013516610334565b005b6101476004803603602081101561015f57600080fd5b50356001600160a01b0316610485565b6101476004803603604081101561018557600080fd5b506001600160a01b0381358116916020013516610693565b6100b1610714565b6100b161071a565b610147600480360360208110156101c357600080fd5b5035610720565b610147600480360360608110156101e057600080fd5b506001600160a01b03813581169160208101359160409091013516610cd6565b6100b1610df0565b6101476004803603604081101561021e57600080fd5b5080359060200135610df6565b6000600c54600114610278576040805162461bcd60e51b81526020600482015260116024820152702d34b931b7b71d102327a92124a22222a760791b604482015290519081900360640190fd5b600a546001600160a01b031633148061029b5750600b546001600160a01b031633145b6102dc576040805162461bcd60e51b815260206004820152600d60248201526c2d229d102737ba10283cb637b760991b604482015290519081900360640190fd5b600a546001600160a01b03163314156102fe575060048054600090915561031c565b600b546001600160a01b031633141561031c57506003805460009091555b90565b600c5481565b6002546001600160a01b031681565b600c541561037c576040805162461bcd60e51b815260206004820152601060248201526f5a45523a204e6f7420466163746f727960801b604482015290519081900360640190fd5b6002546001600160a01b031633146103ce576040805162461bcd60e51b815260206004820152601060248201526f5a45523a204e6f7420466163746f727960801b604482015290519081900360640190fd5b6040805160e0810182526001600160a01b0398891680825297891660208201819052968916918101829052948816606086018190529388166080860181905292881660a086018190529190971660c0909401849052600580546001600160a01b031990811690971790556006805487169095179094556007805486169096179095556008805485169091179055600980548416909417909355600a805483169091179055600b805490911690911790556001600c55565b6002546001600160a01b031633146104d4576040805162461bcd60e51b815260206004820152600d60248201526c2d281d102327a92124a22222a760991b604482015290519081900360640190fd5b600554604080516370a0823160e01b815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b15801561051f57600080fd5b505afa158015610533573d6000803e3d6000fd5b505050506040513d602081101561054957600080fd5b5051600754604080516370a0823160e01b815230600482015290519293506000926001600160a01b03909216916370a0823191602480820192602092909190829003018186803b15801561059c57600080fd5b505afa1580156105b0573d6000803e3d6000fd5b505050506040513d60208110156105c657600080fd5b5051600654604080516370a0823160e01b815230600482015290519293506000926001600160a01b03909216916370a0823191602480820192602092909190829003018186803b15801561061957600080fd5b505afa15801561062d573d6000803e3d6000fd5b505050506040513d602081101561064357600080fd5b505160055490915061065f906001600160a01b03168585610e50565b600754610676906001600160a01b03168584610e50565b60065461068d906001600160a01b03168583610e50565b50505050565b6002546001600160a01b031633146106e6576040805162461bcd60e51b81526020600482015260116024820152702d34b931b7b71d102327a92124a22222a760791b604482015290519081900360640190fd5b600a80546001600160a01b039384166001600160a01b031991821617909155600b8054929093169116179055565b60045481565b60035481565b6005546001600160a01b0316331461076e576040805162461bcd60e51b815260206004820152600c60248201526b2d229d102737ba102830b4b960a11b604482015290519081900360640190fd5b60005460ff166107c5576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b6000805460ff19169055600c5460011461081a576040805162461bcd60e51b81526020600482015260116024820152702d34b931b7b71d102327a92124a22222a760791b604482015290519081900360640190fd5b600554604080516370a0823160e01b815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b15801561086557600080fd5b505afa158015610879573d6000803e3d6000fd5b505050506040513d602081101561088f57600080fd5b505160015490915081116108da576040805162461bcd60e51b815260206004820152600d60248201526c1691548e8814995d995c9d1959609a1b604482015290519081900360640190fd5b600554604080516318160ddd60e01b815290516000926001600160a01b0316916318160ddd916004808301926020929190829003018186803b15801561091f57600080fd5b505afa158015610933573d6000803e3d6000fd5b505050506040513d602081101561094957600080fd5b5051600554600a54604080516370a0823160e01b81526001600160a01b039283166004820152905193945060009391909216916370a08231916024808301926020929190829003018186803b1580156109a157600080fd5b505afa1580156109b5573d6000803e3d6000fd5b505050506040513d60208110156109cb57600080fd5b5051600554600b54604080516370a0823160e01b81526001600160a01b039283166004820152905193945060009391909216916370a08231916024808301926020929190829003018186803b158015610a2357600080fd5b505afa158015610a37573d6000803e3d6000fd5b505050506040513d6020811015610a4d57600080fd5b505160055460408051630240bc6b60e21b8152905192935060009283926001600160a01b031691630902f1ac916004808301926060929190829003018186803b158015610a9957600080fd5b505afa158015610aad573d6000803e3d6000fd5b505050506040513d6060811015610ac357600080fd5b5080516020909101519092509050610ae985670de0b6b3a764000063ffffffff610fe616565b610b1585610b096002818c6001600160701b03881663ffffffff610fe616565b9063ffffffff610fe616565b81610b1c57fe5b60048054929091049091019055610b3b85670de0b6b3a7640000610fe6565b610b5b84610b096002818c6001600160701b03891663ffffffff610fe616565b81610b6257fe5b60038054929091049091019055505060025460408051635d3be3c960e11b815290516000926001600160a01b03169163ba77c792916004808301926020929190829003018186803b158015610bb657600080fd5b505afa158015610bca573d6000803e3d6000fd5b505050506040513d6020811015610be057600080fd5b5051600154909150600090610bfc90879063ffffffff61104f16565b905060006064610c2d84820388610c19868a63ffffffff610fe616565b81610c2057fe5b049063ffffffff610fe616565b81610c3457fe5b04905060006064610c5285820389610c19878a63ffffffff610fe616565b81610c5957fe5b600554600854929091049250610c7c916001600160a01b03918216911684610e50565b600554600954610c99916001600160a01b03908116911683610e50565b610cb9610cac838363ffffffff61109f16565b899063ffffffff61104f16565b60019081556000805460ff19169091179055505050505050505050565b6002546001600160a01b03163314610d30576040805162461bcd60e51b81526020600482015260186024820152771691548e88139bdd081c1c9bdc195c9b1e4818d85b1b195960421b604482015290519081900360640190fd5b81610d6c5760405162461bcd60e51b81526004018080602001828103825260278152602001806110ef6027913960400191505060405180910390fd5b6005546001600160a01b0384811691161415610de057600154821115610dc9576040805162461bcd60e51b815260206004820152600d60248201526c1691548e8814995d995c9d1959609a1b604482015290519081900360640190fd5b600154610ddc908363ffffffff61104f16565b6001555b610deb838284610e50565b505050565b60015481565b6002546001600160a01b03163314610e48576040805162461bcd60e51b815260206004820152601060248201526f5a45523a204e6f7420466163746f727960801b604482015290519081900360640190fd5b600355600455565b60408051808201825260198152787472616e7366657228616464726573732c75696e743235362960381b60209182015281516001600160a01b0385811660248301526044808301869052845180840390910181526064909201845291810180516001600160e01b031663a9059cbb60e01b1781529251815160009460609489169392918291908083835b60208310610ef95780518252601f199092019160209182019101610eda565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114610f5b576040519150601f19603f3d011682016040523d82523d6000602084013e610f60565b606091505b5091509150818015610f8e575080511580610f8e5750808060200190516020811015610f8b57600080fd5b50515b610fdf576040805162461bcd60e51b815260206004820152601d60248201527f5a6972636f6e2050796c6f6e3a205452414e534645525f4641494c4544000000604482015290519081900360640190fd5b5050505050565b600081158061100157505080820282828281610ffe57fe5b04145b611049576040805162461bcd60e51b815260206004820152601460248201527364732d6d6174682d6d756c2d6f766572666c6f7760601b604482015290519081900360640190fd5b92915050565b80820382811115611049576040805162461bcd60e51b815260206004820152601560248201527464732d6d6174682d7375622d756e646572666c6f7760581b604482015290519081900360640190fd5b80820182811015611049576040805162461bcd60e51b815260206004820152601460248201527364732d6d6174682d6164642d6f766572666c6f7760601b604482015290519081900360640190fdfe4f7065726174696f6e733a2043616e6e6f74207265636f766572207a65726f2062616c616e6365a265627a7a7231582072ec96ea622bee2792b7c61061d3846cbdb3956f7c993cb20c92fd66680e907664736f6c634300051000324f7065726174696f6e733a2043616e6e6f74207265636f766572207a65726f2062616c616e6365437265617465323a2062797465636f6465206c656e677468206973207a65726f3b4e72e4103178db6cd2e27320e98d9afdd1ab6f078b707886d1bf92b9fd8b25a265627a7a72315820b5cb53795b27a5aee37d897cc57581562248c36a37dba54c82528fc1d2db9b2d64736f6c63430005100032
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000004ba754989b77925f47e26c54aaa1b03df23b32ce0000000000000000000000009aef9098af9d1e2d78fcd9b928c946a7f23307d3
-----Decoded View---------------
Arg [0] : _feeToSetter (address): 0x4bA754989b77925F47e26C54aaa1b03Df23B32Ce
Arg [1] : _migrator (address): 0x9AEF9098af9d1E2d78FCd9B928C946a7f23307d3
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 0000000000000000000000004ba754989b77925f47e26c54aaa1b03df23b32ce
Arg [1] : 0000000000000000000000009aef9098af9d1e2d78fcd9b928c946a7f23307d3
Loading...
Loading
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in MOVR
Multichain Portfolio | 35 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.