Source Code
Latest 8 from a total of 8 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Trade | 8809956 | 2323 days ago | IN | 0.001 ETH | 0.00191303 | ||||
| List Token | 8809946 | 2323 days ago | IN | 0 ETH | 0.000691 | ||||
| List Token | 8809939 | 2323 days ago | IN | 0 ETH | 0.0006958 | ||||
| List Token | 8809928 | 2323 days ago | IN | 0 ETH | 0.00069223 | ||||
| Trade | 8809187 | 2323 days ago | IN | 0.001 ETH | 0.00096576 | ||||
| Trade | 8809183 | 2323 days ago | IN | 0.001 ETH | 0.0014724 | ||||
| List Token | 8809077 | 2323 days ago | IN | 0 ETH | 0.00041706 | ||||
| List Token | 8809033 | 2323 days ago | IN | 0 ETH | 0.00027883 |
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
KyberBancorReserve
Compiler Version
v0.5.11+commit.c082d0b4
Contract Source Code (Solidity Multiple files format)
pragma solidity 0.5.11;
import "./ERC20InterfaceV5.sol";
import "./KyberReserveInterfaceV5.sol";
import "./WithdrawableV5.sol";
import "./UtilsV5.sol";
import "./IBancorContracts.sol";
contract KyberBancorReserve is KyberReserveInterface, Withdrawable, Utils {
uint constant internal BPS = 10000; // 10^4
address public kyberNetwork;
IContractRegistry public contractRegistry; // 0x52Ae12ABe5D8BD778BD5397F99cA900624CfADD4
IBancorNetwork public bancorNetwork;
IBancorNetworkPathFinder public bancorPathFinder;
address public converterRegistry;
bool public tradeEnabled;
uint public feeBps;
ERC20 public bancorEth = ERC20(0xc0829421C1d260BD3cB3E0F06cfE2D52db2cE315);
ERC20 public bancorToken = ERC20(0x1F573D6Fb3F13d689FF844B4cE37794d79a7FF1C);
mapping(address => bool) public isTokenListed;
constructor(
address _contractRegistry,
address _kyberNetwork,
uint _feeBps,
address _admin
)
public
{
require(_contractRegistry != address(0), "contractRegistry address is missing");
require(_kyberNetwork != address(0), "kyberNetwork address is missing");
require(_admin != address(0), "admin address is missing");
require(_feeBps < BPS, "fee is too big");
contractRegistry = IContractRegistry(_contractRegistry);
bancorNetwork = IBancorNetwork(contractRegistry.getAddress("BancorNetwork"));
bancorPathFinder = IBancorNetworkPathFinder(contractRegistry.getAddress("BancorNetworkPathFinder"));
converterRegistry = contractRegistry.getAddress("BancorConverterRegistry");
kyberNetwork = _kyberNetwork;
feeBps = _feeBps;
admin = _admin;
tradeEnabled = true;
}
function() external payable { }
function getConversionRate(ERC20 src, ERC20 dest, uint srcQty, uint) public view returns(uint) {
if (!tradeEnabled) return 0;
ERC20 token = src == ETH_TOKEN_ADDRESS ? dest : src;
if (!isTokenListed[address(token)]) { return 0; } // not listed
ERC20[] memory path = getConversionPath(src, dest, bancorPathFinder);
uint destQty;
(destQty, ) = bancorNetwork.getReturnByPath(path, srcQty);
uint rate = calcRateFromQty(srcQty, destQty, getDecimals(src), getDecimals(dest));
rate = valueAfterReducingFee(rate);
return rate;
}
event TradeExecute(
address indexed sender,
address src,
uint srcAmount,
address destToken,
uint destAmount,
address payable destAddress
);
function trade(
ERC20 srcToken,
uint srcAmount,
ERC20 destToken,
address payable destAddress,
uint conversionRate,
bool validate
)
public
payable
returns(bool)
{
require(tradeEnabled);
require(msg.sender == kyberNetwork);
require(srcToken == ETH_TOKEN_ADDRESS || destToken == ETH_TOKEN_ADDRESS);
require(doTrade(srcToken, srcAmount, destToken, destAddress, conversionRate, validate));
return true;
}
// test func
function testGetReturns(ERC20 token, bool isEthToToken, uint srcAmount) public returns(uint) {
uint destAmount;
ERC20[] memory path = getConversionPath(
isEthToToken ? bancorEth : token,
isEthToToken ? token : bancorEth,
bancorPathFinder
);
if (isEthToToken) {
(destAmount, ) = bancorNetwork.getReturnByPath(path, srcAmount);
} else {
(destAmount, ) = bancorNetwork.getReturnByPath(path, srcAmount);
}
tradeEnabled = true;
return destAmount;
}
event ContractsSet(address kyberNetwork, address _contractRegistry);
function setContracts(address _kyberNetwork, address _contractRegistry) public onlyAdmin {
require(_contractRegistry != address(0), "contractRegistry address is missing");
require(_kyberNetwork != address(0), "kyberNetwork address is missing");
kyberNetwork = _kyberNetwork;
contractRegistry = IContractRegistry(_contractRegistry);
bancorNetwork = IBancorNetwork(contractRegistry.getAddress("BancorNetwork"));
bancorPathFinder = IBancorNetworkPathFinder(contractRegistry.getAddress("BancorNetworkPathFinder"));
converterRegistry = contractRegistry.getAddress("BancorConverterRegistry");
emit ContractsSet(_kyberNetwork, _contractRegistry);
}
event BasicTokensSet(address bancorEth, address bancorToken);
function setBasicTokens(address _bancorEth, address _bancorToken) public {
require(_bancorEth != address(0), "setBasicTokens: bancorEth is missing");
require(_bancorToken != address(0), "setBasicTokens: bancorToken is missing");
bancorEth = ERC20(_bancorEth);
bancorToken = ERC20(_bancorToken);
emit BasicTokensSet(_bancorEth, _bancorToken);
}
event TokenListed(ERC20 token);
function listToken(ERC20 token) public onlyAdmin {
require(address(token) != address(0), "listToken: token's address is missing");
require(!isTokenListed[address(token)], "listToken: duplicated");
require(token.approve(address(bancorNetwork), 2**255), "listToken: fail to approve bancor network");
isTokenListed[address(token)] = true;
emit TokenListed(token);
}
event TokenDelisted(ERC20 token);
function delistToken(ERC20 token) public onlyAdmin {
require(address(token) != address(0), "listToken: token's address is missing");
require(isTokenListed[address(token)], "listToken: duplicated");
require(token.approve(address(bancorNetwork), 0), "listToken: fail to approve bancor network");
delete isTokenListed[address(token)];
emit TokenDelisted(token);
}
event FeeBpsSet(uint feeBps);
function setFeeBps(uint _feeBps) public onlyAdmin {
require(_feeBps < BPS, "setFeeBps: feeBps >= bps");
feeBps = _feeBps;
emit FeeBpsSet(feeBps);
}
event TradeEnabled(bool enable);
function enableTrade() public onlyAdmin returns(bool) {
tradeEnabled = true;
emit TradeEnabled(true);
return true;
}
function disableTrade() public onlyAlerter returns(bool) {
tradeEnabled = false;
emit TradeEnabled(false);
return true;
}
function doTrade(
ERC20 srcToken,
uint srcAmount,
ERC20 destToken,
address payable destAddress,
uint conversionRate,
bool validate
)
internal
returns(bool)
{
// can skip validation if done at kyber network level
if (validate) {
require(conversionRate > 0);
if (srcToken == ETH_TOKEN_ADDRESS)
require(msg.value == srcAmount, "doTrade: msg value is not correct for ETH trade");
else
require(msg.value == 0, "doTrade: msg value is not correct for token trade");
}
if (srcToken != ETH_TOKEN_ADDRESS) {
// collect source amount
require(srcToken.transferFrom(msg.sender, address(this), srcAmount), "doTrade: collect src token failed");
}
ERC20[] memory path = getConversionPath(srcToken, destToken, bancorPathFinder);
require(path.length > 0, "doTrade: couldn't find path");
uint userExpectedDestAmount = calcDstQty(srcAmount, getDecimals(srcToken), getDecimals(destToken), conversionRate);
uint destAmount;
if (srcToken == ETH_TOKEN_ADDRESS) {
destAmount = bancorNetwork.convert2.value(srcAmount)(path, srcAmount, userExpectedDestAmount, address(0), 0);
} else {
destAmount = bancorNetwork.convert2(path, srcAmount, userExpectedDestAmount, address(0), 0);
}
require(destAmount >= userExpectedDestAmount, "doTrade: dest amount is lower than expected amount");
if (destToken == ETH_TOKEN_ADDRESS) {
destAddress.transfer(userExpectedDestAmount);
} else {
require(destToken.transfer(destAddress, userExpectedDestAmount), "doTrade: transfer back dest token failed");
}
emit TradeExecute(msg.sender, address(srcToken), srcAmount, address(destToken), userExpectedDestAmount, destAddress);
return true;
}
function getConversionPath(ERC20 src, ERC20 dest, IBancorNetworkPathFinder finder) public view returns(ERC20[] memory path) {
ERC20 bntToken = bancorToken;
address[] memory converterRegistries = new address[](1);
converterRegistries[0] = converterRegistry;
if (src == ETH_TOKEN_ADDRESS) {
address[] memory newPath = finder.get(bntToken, dest, converterRegistries);
if (newPath.length == 0) { return path; }
path = new ERC20[](newPath.length + 2);
path[0] = bancorEth;
path[1] = bntToken;
for(uint i = 0; i < newPath.length; i++) {
path[i + 2] = ERC20(newPath[i]);
}
} else {
address[] memory newPath = finder.get(src, bntToken, converterRegistries);
if (newPath.length == 0) { return path; }
path = new ERC20[](newPath.length + 2);
for(uint i = 0; i < newPath.length; i++) {
path[i] = ERC20(newPath[i]);
}
path[newPath.length] = bntToken;
path[newPath.length + 1] = bancorEth;
}
return path;
}
function valueAfterReducingFee(uint val) internal view returns(uint) {
require(val <= MAX_QTY, "valueAfterReducingFee: val > MAX_QTY");
return ((BPS - feeBps) * val) / BPS;
}
}
pragma solidity 0.5.11;
interface ERC20 {
function transfer(address _to, uint _value) external returns (bool success);
function transferFrom(address _from, address _to, uint _value) external returns (bool success);
function approve(address _spender, uint _value) external returns (bool success);
function totalSupply() external view returns (uint supply);
function balanceOf(address _owner) external view returns (uint balance);
function allowance(address _owner, address _spender) external view returns (uint remaining);
function decimals() external view returns(uint digits);
event Approval(address indexed _owner, address indexed _spender, uint _value);
}
pragma solidity 0.5.11;
import "./ERC20InterfaceV5.sol";
/**
Id definitions for bancor contracts
Can be used in conjunction with the contract registry to get contract addresses
*/
contract ContractIds {
// generic
bytes32 public constant CONTRACT_REGISTRY = "ContractRegistry";
// bancor logic
bytes32 public constant BANCOR_NETWORK = "BancorNetwork";
bytes32 public constant BANCOR_FORMULA = "BancorFormula";
bytes32 public constant BANCOR_NETWORK_PATH_FINDER = "BancorNetworkPathFinder";
// Ids of BNT converter and BNT token
bytes32 public constant BNT_TOKEN = "BNTToken";
bytes32 public constant BNT_CONVERTER = "BNTConverter";
// Id of BancorX contract
bytes32 public constant BANCOR_X = "BancorX";
}
contract IBancorNetworkPathFinder {
function get(ERC20 srcToken, ERC20 destToken, address[] memory converterRegistries) public view returns (address[] memory);
}
// File: contracts/utility/interfaces/IContractRegistry.sol
/*
Contract Registry interface
*/
contract IContractRegistry {
function addressOf(bytes32 _contractName) public view returns (address);
// deprecated, backward compatibility
function getAddress(bytes32 _contractName) public view returns (address);
}
// File: contracts/converter/interfaces/IBancorConverter.sol
/*
Bancor Converter interface
*/
contract IBancorNetwork {
function getReturnByPath(ERC20[] calldata _path, uint256 _amount) external view returns (uint256, uint256);
function convert2(
ERC20[] calldata _path,
uint256 _amount,
uint256 _minReturn,
address _affiliateAccount,
uint256 _affiliateFee
) external payable returns (uint256);
}
pragma solidity 0.5.11;
import "./ERC20InterfaceV5.sol";
/// @title Kyber Reserve contract
interface KyberReserveInterface {
function trade(
ERC20 srcToken,
uint srcAmount,
ERC20 destToken,
address payable destAddress,
uint conversionRate,
bool validate
)
external
payable
returns(bool);
function getConversionRate(ERC20 src, ERC20 dest, uint srcQty, uint blockNumber) external view returns(uint);
}
pragma solidity 0.5.11;
contract PermissionGroups {
address public admin;
address public pendingAdmin;
mapping(address=>bool) internal operators;
mapping(address=>bool) internal alerters;
address[] internal operatorsGroup;
address[] internal alertersGroup;
uint constant internal MAX_GROUP_SIZE = 50;
constructor() public {
admin = msg.sender;
}
modifier onlyAdmin() {
require(msg.sender == admin);
_;
}
modifier onlyOperator() {
require(operators[msg.sender]);
_;
}
modifier onlyAlerter() {
require(alerters[msg.sender]);
_;
}
function getOperators () external view returns(address[] memory) {
return operatorsGroup;
}
function getAlerters () external view returns(address[] memory) {
return alertersGroup;
}
event TransferAdminPending(address pendingAdmin);
/**
* @dev Allows the current admin to set the pendingAdmin address.
* @param newAdmin The address to transfer ownership to.
*/
function transferAdmin(address newAdmin) public onlyAdmin {
require(newAdmin != address(0));
emit TransferAdminPending(pendingAdmin);
pendingAdmin = newAdmin;
}
/**
* @dev Allows the current admin to set the admin in one tx. Useful initial deployment.
* @param newAdmin The address to transfer ownership to.
*/
function transferAdminQuickly(address newAdmin) public onlyAdmin {
require(newAdmin != address(0));
emit TransferAdminPending(newAdmin);
emit AdminClaimed(newAdmin, admin);
admin = newAdmin;
}
event AdminClaimed( address newAdmin, address previousAdmin);
/**
* @dev Allows the pendingAdmin address to finalize the change admin process.
*/
function claimAdmin() public {
require(pendingAdmin == msg.sender);
emit AdminClaimed(pendingAdmin, admin);
admin = pendingAdmin;
pendingAdmin = address(0);
}
event AlerterAdded (address newAlerter, bool isAdd);
function addAlerter(address newAlerter) public onlyAdmin {
require(!alerters[newAlerter]); // prevent duplicates.
require(alertersGroup.length < MAX_GROUP_SIZE);
emit AlerterAdded(newAlerter, true);
alerters[newAlerter] = true;
alertersGroup.push(newAlerter);
}
function removeAlerter (address alerter) public onlyAdmin {
require(alerters[alerter]);
alerters[alerter] = false;
for (uint i = 0; i < alertersGroup.length; ++i) {
if (alertersGroup[i] == alerter) {
alertersGroup[i] = alertersGroup[alertersGroup.length - 1];
alertersGroup.length--;
emit AlerterAdded(alerter, false);
break;
}
}
}
event OperatorAdded(address newOperator, bool isAdd);
function addOperator(address newOperator) public onlyAdmin {
require(!operators[newOperator]); // prevent duplicates.
require(operatorsGroup.length < MAX_GROUP_SIZE);
emit OperatorAdded(newOperator, true);
operators[newOperator] = true;
operatorsGroup.push(newOperator);
}
function removeOperator (address operator) public onlyAdmin {
require(operators[operator]);
operators[operator] = false;
for (uint i = 0; i < operatorsGroup.length; ++i) {
if (operatorsGroup[i] == operator) {
operatorsGroup[i] = operatorsGroup[operatorsGroup.length - 1];
operatorsGroup.length -= 1;
emit OperatorAdded(operator, false);
break;
}
}
}
}
pragma solidity 0.5.11;
import "./ERC20InterfaceV5.sol";
/// @title Kyber utils and utils2 contracts
contract Utils {
ERC20 constant internal ETH_TOKEN_ADDRESS = ERC20(0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE);
uint constant internal PRECISION = (10**18);
uint constant internal MAX_QTY = (10**28); // 10B tokens
uint constant internal MAX_RATE = (PRECISION * 10**6); // up to 1M tokens per ETH
uint constant internal MAX_DECIMALS = 18;
uint constant internal ETH_DECIMALS = 18;
mapping(address=>uint) internal decimals;
/// @dev get the balance of a user.
/// @param token The token type
/// @return The balance
function getBalance(ERC20 token, address user) public view returns(uint) {
if (token == ETH_TOKEN_ADDRESS)
return user.balance;
else
return token.balanceOf(user);
}
function setDecimals(ERC20 token) internal {
if (token == ETH_TOKEN_ADDRESS)
decimals[address(token)] = ETH_DECIMALS;
else
decimals[address(token)] = token.decimals();
}
function getDecimals(ERC20 token) internal view returns(uint) {
if (token == ETH_TOKEN_ADDRESS) return ETH_DECIMALS; // save storage access
uint tokenDecimals = decimals[address(token)];
// moreover, very possible that old tokens have decimals 0
// these tokens will just have higher gas fees.
if (tokenDecimals == 0) return token.decimals();
return tokenDecimals;
}
function calcDstQty(uint srcQty, uint srcDecimals, uint dstDecimals, uint rate) internal pure returns(uint) {
require(srcQty <= MAX_QTY);
require(rate <= MAX_RATE);
if (dstDecimals >= srcDecimals) {
require((dstDecimals - srcDecimals) <= MAX_DECIMALS);
return (srcQty * rate * (10**(dstDecimals - srcDecimals))) / PRECISION;
} else {
require((srcDecimals - dstDecimals) <= MAX_DECIMALS);
return (srcQty * rate) / (PRECISION * (10**(srcDecimals - dstDecimals)));
}
}
function calcSrcQty(uint dstQty, uint srcDecimals, uint dstDecimals, uint rate) internal pure returns(uint) {
require(dstQty <= MAX_QTY);
require(rate <= MAX_RATE);
//source quantity is rounded up. to avoid dest quantity being too low.
uint numerator;
uint denominator;
if (srcDecimals >= dstDecimals) {
require((srcDecimals - dstDecimals) <= MAX_DECIMALS);
numerator = (PRECISION * dstQty * (10**(srcDecimals - dstDecimals)));
denominator = rate;
} else {
require((dstDecimals - srcDecimals) <= MAX_DECIMALS);
numerator = (PRECISION * dstQty);
denominator = (rate * (10**(dstDecimals - srcDecimals)));
}
return (numerator + denominator - 1) / denominator; //avoid rounding down errors
}
function calcDestAmount(ERC20 src, ERC20 dest, uint srcAmount, uint rate) internal view returns(uint) {
return calcDstQty(srcAmount, getDecimals(src), getDecimals(dest), rate);
}
function calcSrcAmount(ERC20 src, ERC20 dest, uint destAmount, uint rate) internal view returns(uint) {
return calcSrcQty(destAmount, getDecimals(src), getDecimals(dest), rate);
}
function calcRateFromQty(uint srcAmount, uint destAmount, uint srcDecimals, uint dstDecimals)
internal pure returns(uint)
{
require(srcAmount <= MAX_QTY);
require(destAmount <= MAX_QTY);
if (dstDecimals >= srcDecimals) {
require((dstDecimals - srcDecimals) <= MAX_DECIMALS);
return (destAmount * PRECISION / ((10 ** (dstDecimals - srcDecimals)) * srcAmount));
} else {
require((srcDecimals - dstDecimals) <= MAX_DECIMALS);
return (destAmount * PRECISION * (10 ** (srcDecimals - dstDecimals)) / srcAmount);
}
}
function minOf(uint x, uint y) internal pure returns(uint) {
return x > y ? y : x;
}
}
pragma solidity 0.5.11;
import "./ERC20InterfaceV5.sol";
import "./PermissionGroupsV5.sol";
contract Withdrawable is PermissionGroups {
event TokenWithdraw(ERC20 token, uint amount, address sendTo);
/**
* @dev Withdraw all ERC20 compatible tokens
* @param token ERC20 The address of the token contract
*/
function withdrawToken(ERC20 token, uint amount, address sendTo) external onlyAdmin {
require(token.transfer(sendTo, amount));
emit TokenWithdraw(token, amount, sendTo);
}
event EtherWithdraw(uint amount, address sendTo);
/**
* @dev Withdraw Ethers
*/
function withdrawEther(uint amount, address payable sendTo) external onlyAdmin {
sendTo.transfer(amount);
emit EtherWithdraw(amount, sendTo);
}
}
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"constant":false,"inputs":[],"name":"enableTrade","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"alerter","type":"address"}],"name":"removeAlerter","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"contract ERC20","name":"token","type":"address"},{"internalType":"bool","name":"isEthToToken","type":"bool"},{"internalType":"uint256","name":"srcAmount","type":"uint256"}],"name":"testGetReturns","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"converterRegistry","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"contract ERC20","name":"token","type":"address"}],"name":"listToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"bancorPathFinder","outputs":[{"internalType":"contract IBancorNetworkPathFinder","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"feeBps","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"pendingAdmin","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getOperators","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_bancorEth","type":"address"},{"internalType":"address","name":"_bancorToken","type":"address"}],"name":"setBasicTokens","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"bancorToken","outputs":[{"internalType":"contract ERC20","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"contract ERC20","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"sendTo","type":"address"}],"name":"withdrawToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"newAlerter","type":"address"}],"name":"addAlerter","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"bancorEth","outputs":[{"internalType":"contract ERC20","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"disableTrade","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"contract ERC20","name":"srcToken","type":"address"},{"internalType":"uint256","name":"srcAmount","type":"uint256"},{"internalType":"contract ERC20","name":"destToken","type":"address"},{"internalType":"address payable","name":"destAddress","type":"address"},{"internalType":"uint256","name":"conversionRate","type":"uint256"},{"internalType":"bool","name":"validate","type":"bool"}],"name":"trade","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_feeBps","type":"uint256"}],"name":"setFeeBps","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"newAdmin","type":"address"}],"name":"transferAdmin","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"claimAdmin","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"contract ERC20","name":"src","type":"address"},{"internalType":"contract ERC20","name":"dest","type":"address"},{"internalType":"contract IBancorNetworkPathFinder","name":"finder","type":"address"}],"name":"getConversionPath","outputs":[{"internalType":"contract ERC20[]","name":"path","type":"address[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"newAdmin","type":"address"}],"name":"transferAdminQuickly","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getAlerters","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"contract ERC20","name":"src","type":"address"},{"internalType":"contract ERC20","name":"dest","type":"address"},{"internalType":"uint256","name":"srcQty","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"getConversionRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"newOperator","type":"address"}],"name":"addOperator","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"bancorNetwork","outputs":[{"internalType":"contract IBancorNetwork","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"contractRegistry","outputs":[{"internalType":"contract IContractRegistry","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"contract ERC20","name":"token","type":"address"}],"name":"delistToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"operator","type":"address"}],"name":"removeOperator","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"kyberNetwork","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address payable","name":"sendTo","type":"address"}],"name":"withdrawEther","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"contract ERC20","name":"token","type":"address"},{"internalType":"address","name":"user","type":"address"}],"name":"getBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"tradeEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_kyberNetwork","type":"address"},{"internalType":"address","name":"_contractRegistry","type":"address"}],"name":"setContracts","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isTokenListed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"admin","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_contractRegistry","type":"address"},{"internalType":"address","name":"_kyberNetwork","type":"address"},{"internalType":"uint256","name":"_feeBps","type":"uint256"},{"internalType":"address","name":"_admin","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"address","name":"src","type":"address"},{"indexed":false,"internalType":"uint256","name":"srcAmount","type":"uint256"},{"indexed":false,"internalType":"address","name":"destToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"destAmount","type":"uint256"},{"indexed":false,"internalType":"address payable","name":"destAddress","type":"address"}],"name":"TradeExecute","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"kyberNetwork","type":"address"},{"indexed":false,"internalType":"address","name":"_contractRegistry","type":"address"}],"name":"ContractsSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"bancorEth","type":"address"},{"indexed":false,"internalType":"address","name":"bancorToken","type":"address"}],"name":"BasicTokensSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"contract ERC20","name":"token","type":"address"}],"name":"TokenListed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"contract ERC20","name":"token","type":"address"}],"name":"TokenDelisted","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"feeBps","type":"uint256"}],"name":"FeeBpsSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enable","type":"bool"}],"name":"TradeEnabled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"contract ERC20","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"address","name":"sendTo","type":"address"}],"name":"TokenWithdraw","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"address","name":"sendTo","type":"address"}],"name":"EtherWithdraw","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"pendingAdmin","type":"address"}],"name":"TransferAdminPending","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newAdmin","type":"address"},{"indexed":false,"internalType":"address","name":"previousAdmin","type":"address"}],"name":"AdminClaimed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newAlerter","type":"address"},{"indexed":false,"internalType":"bool","name":"isAdd","type":"bool"}],"name":"AlerterAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newOperator","type":"address"},{"indexed":false,"internalType":"bool","name":"isAdd","type":"bool"}],"name":"OperatorAdded","type":"event"}]Contract Creation Code
6080604052600d80546001600160a01b031990811673c0829421c1d260bd3cb3e0f06cfe2d52db2ce31517909155600e8054909116731f573d6fb3f13d689ff844b4ce37794d79a7ff1c1790553480156200005957600080fd5b506040516200350b3803806200350b833981810160405260808110156200007f57600080fd5b50805160208201516040830151606090930151600080546001600160a01b03191633179055919290916001600160a01b03841662000109576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180620034e86023913960400191505060405180910390fd5b6001600160a01b0383166200017f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f6b796265724e6574776f726b2061646472657373206973206d697373696e6700604482015290519081900360640190fd5b6001600160a01b038116620001f557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f61646d696e2061646472657373206973206d697373696e670000000000000000604482015290519081900360640190fd5b61271082106200026657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f66656520697320746f6f20626967000000000000000000000000000000000000604482015290519081900360640190fd5b600880546001600160a01b0319166001600160a01b038681169190911791829055604080517f21f8a7210000000000000000000000000000000000000000000000000000000081527f42616e636f724e6574776f726b000000000000000000000000000000000000006004820152905192909116916321f8a72191602480820192602092909190829003018186803b1580156200030257600080fd5b505afa15801562000317573d6000803e3d6000fd5b505050506040513d60208110156200032e57600080fd5b5051600980546001600160a01b0319166001600160a01b03928316179055600854604080517f21f8a7210000000000000000000000000000000000000000000000000000000081527f42616e636f724e6574776f726b5061746846696e6465720000000000000000006004820152905191909216916321f8a721916024808301926020929190829003018186803b158015620003c957600080fd5b505afa158015620003de573d6000803e3d6000fd5b505050506040513d6020811015620003f557600080fd5b5051600a80546001600160a01b0319166001600160a01b03928316179055600854604080517f21f8a7210000000000000000000000000000000000000000000000000000000081527f42616e636f72436f6e76657274657252656769737472790000000000000000006004820152905191909216916321f8a721916024808301926020929190829003018186803b1580156200049057600080fd5b505afa158015620004a5573d6000803e3d6000fd5b505050506040513d6020811015620004bc57600080fd5b5051600b8054600780546001600160a01b03199081166001600160a01b0398891617909155600c95909555600080548616948716949094178455740100000000000000000000000000000000000000009416949091169390931760ff60a01b191691909117909155612fb2915081906200053690396000f3fe6080604052600436106102035760003560e01c806375829def11610118578063abffc9ac116100a0578063d4fac45d1161006f578063d4fac45d14610751578063d621e8131461078c578063d8952a49146107a1578063e69ec653146107dc578063f851a4401461080f57610203565b8063abffc9ac1461069d578063ac8a584a146106d0578063b78b842d14610703578063ce56c4541461071857610203565b80637c423f54116100e75780637c423f54146105e25780637cd44272146105f75780639870d7fe14610640578063a4edb25e14610673578063abf410e51461068857610203565b806375829def1461052257806377f50f9714610555578063797ae0e01461056a5780637acc8678146105af57610203565b806327a099d81161019b578063408ee7fe1161016a578063408ee7fe1461044f5780634d21dff7146104825780636940030f146104975780636cf69811146104ac57806372c27b62146104f857610203565b806327a099d8146103575780632a044e39146103bc5780633b172a32146103f75780633ccdbb281461040c57610203565b80631fc1e25f116101d75780631fc1e25f146102e5578063235ce45c1461031857806324a9d8531461032d578063267822471461034257610203565b806299d3861461020557806301a12fd31461022e578063038fe1b114610261578063043a3c07146102b4575b005b34801561021157600080fd5b5061021a610824565b604080519115158252519081900360200190f35b34801561023a57600080fd5b506102036004803603602081101561025157600080fd5b50356001600160a01b031661088a565b34801561026d57600080fd5b506102a26004803603606081101561028457600080fd5b506001600160a01b03813516906020810135151590604001356109ed565b60408051918252519081900360200190f35b3480156102c057600080fd5b506102c9610bd6565b604080516001600160a01b039092168252519081900360200190f35b3480156102f157600080fd5b506102036004803603602081101561030857600080fd5b50356001600160a01b0316610be5565b34801561032457600080fd5b506102c9610dc2565b34801561033957600080fd5b506102a2610dd1565b34801561034e57600080fd5b506102c9610dd7565b34801561036357600080fd5b5061036c610de6565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156103a8578181015183820152602001610390565b505050509050019250505060405180910390f35b3480156103c857600080fd5b50610203600480360360408110156103df57600080fd5b506001600160a01b0381358116916020013516610e48565b34801561040357600080fd5b506102c9610f41565b34801561041857600080fd5b506102036004803603606081101561042f57600080fd5b506001600160a01b03813581169160208101359160409091013516610f50565b34801561045b57600080fd5b506102036004803603602081101561047257600080fd5b50356001600160a01b031661104b565b34801561048e57600080fd5b506102c9611141565b3480156104a357600080fd5b5061021a611150565b61021a600480360360c08110156104c257600080fd5b506001600160a01b038135811691602081013591604082013581169160608101359091169060808101359060a0013515156111b3565b34801561050457600080fd5b506102036004803603602081101561051b57600080fd5b5035611257565b34801561052e57600080fd5b506102036004803603602081101561054557600080fd5b50356001600160a01b03166112ff565b34801561056157600080fd5b5061020361138a565b34801561057657600080fd5b5061036c6004803603606081101561058d57600080fd5b506001600160a01b038135811691602081013582169160409091013516611414565b3480156105bb57600080fd5b50610203600480360360208110156105d257600080fd5b50356001600160a01b0316611990565b3480156105ee57600080fd5b5061036c611a60565b34801561060357600080fd5b506102a26004803603608081101561061a57600080fd5b506001600160a01b03813581169160208101359091169060408101359060600135611ac0565b34801561064c57600080fd5b506102036004803603602081101561066357600080fd5b50356001600160a01b0316611c4a565b34801561067f57600080fd5b506102c9611d40565b34801561069457600080fd5b506102c9611d4f565b3480156106a957600080fd5b50610203600480360360208110156106c057600080fd5b50356001600160a01b0316611d5e565b3480156106dc57600080fd5b50610203600480360360208110156106f357600080fd5b50356001600160a01b0316611f37565b34801561070f57600080fd5b506102c9612096565b34801561072457600080fd5b506102036004803603604081101561073b57600080fd5b50803590602001356001600160a01b03166120a5565b34801561075d57600080fd5b506102a26004803603604081101561077457600080fd5b506001600160a01b038135811691602001351661213a565b34801561079857600080fd5b5061021a6121fd565b3480156107ad57600080fd5b50610203600480360360408110156107c457600080fd5b506001600160a01b038135811691602001351661220d565b3480156107e857600080fd5b5061021a600480360360208110156107ff57600080fd5b50356001600160a01b0316612523565b34801561081b57600080fd5b506102c9612538565b600080546001600160a01b0316331461083c57600080fd5b600b805460ff60a01b1916600160a01b179055604080516001815290517f7d7f00509dd73ac4449f698ae75ccc797895eff5fa9d446d3df387598a26e7359181900360200190a15060015b90565b6000546001600160a01b031633146108a157600080fd5b6001600160a01b03811660009081526003602052604090205460ff166108c657600080fd5b6001600160a01b0381166000908152600360205260408120805460ff191690555b6005548110156109e957816001600160a01b03166005828154811061090857fe5b6000918252602090912001546001600160a01b031614156109e15760058054600019810190811061093557fe5b600091825260209091200154600580546001600160a01b03909216918390811061095b57fe5b600091825260209091200180546001600160a01b0319166001600160a01b03929092169190911790556005805490610997906000198301612d7c565b50604080516001600160a01b03841681526000602082015281517f5611bf3e417d124f97bf2c788843ea8bb502b66079fbee02158ef30b172cb762929181900390910190a16109e9565b6001016108e7565b5050565b6000806060610a3685610a005786610a0d565b600d546001600160a01b03165b86610a2357600d546001600160a01b0316610a25565b875b600a546001600160a01b0316611414565b90508415610afd576009546040805163032125b360e21b815260248101879052600481019182528351604482015283516001600160a01b0390931692630c8496cc92859289928291606401906020808701910280838360005b83811015610aa7578181015183820152602001610a8f565b505050509050019350505050604080518083038186803b158015610aca57600080fd5b505afa158015610ade573d6000803e3d6000fd5b505050506040513d6040811015610af457600080fd5b50519150610bb8565b6009546040805163032125b360e21b815260248101879052600481019182528351604482015283516001600160a01b0390931692630c8496cc92859289928291606401906020808701910280838360005b83811015610b66578181015183820152602001610b4e565b505050509050019350505050604080518083038186803b158015610b8957600080fd5b505afa158015610b9d573d6000803e3d6000fd5b505050506040513d6040811015610bb357600080fd5b505191505b50600b805460ff60a01b1916600160a01b17905590505b9392505050565b600b546001600160a01b031681565b6000546001600160a01b03163314610bfc57600080fd5b6001600160a01b038116610c415760405162461bcd60e51b8152600401808060200182810382526025815260200180612e976025913960400191505060405180910390fd5b6001600160a01b0381166000908152600f602052604090205460ff1615610ca7576040805162461bcd60e51b81526020600482015260156024820152741b1a5cdd151bdad95b8e88191d5c1b1a58d85d1959605a1b604482015290519081900360640190fd5b6009546040805163095ea7b360e01b81526001600160a01b039283166004820152600160ff1b602482015290519183169163095ea7b3916044808201926020929091908290030181600087803b158015610d0057600080fd5b505af1158015610d14573d6000803e3d6000fd5b505050506040513d6020811015610d2a57600080fd5b5051610d675760405162461bcd60e51b8152600401808060200182810382526029815260200180612e6e6029913960400191505060405180910390fd5b6001600160a01b0381166000818152600f6020908152604091829020805460ff19166001179055815192835290517f017664858438d89f547fee46da0bcfc5396ea13a9fb1490b8fdd76cfa979f1a99281900390910190a150565b600a546001600160a01b031681565b600c5481565b6001546001600160a01b031681565b60606004805480602002602001604051908101604052809291908181526020018280548015610e3e57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610e20575b5050505050905090565b6001600160a01b038216610e8d5760405162461bcd60e51b8152600401808060200182810382526024815260200180612f5a6024913960400191505060405180910390fd5b6001600160a01b038116610ed25760405162461bcd60e51b8152600401808060200182810382526026815260200180612dc46026913960400191505060405180910390fd5b600d80546001600160a01b038085166001600160a01b03199283168117909355600e805491851691909216811790915560408051928352602083019190915280517fcfbfff80d8491666a08780b57f8c2a4b9adfec058fc94d4a91ea6220f6e135bc9281900390910190a15050565b600e546001600160a01b031681565b6000546001600160a01b03163314610f6757600080fd5b826001600160a01b031663a9059cbb82846040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015610fc757600080fd5b505af1158015610fdb573d6000803e3d6000fd5b505050506040513d6020811015610ff157600080fd5b5051610ffc57600080fd5b604080516001600160a01b0380861682526020820185905283168183015290517f72cb8a894ddb372ceec3d2a7648d86f17d5a15caae0e986c53109b8a9a9385e69181900360600190a1505050565b6000546001600160a01b0316331461106257600080fd5b6001600160a01b03811660009081526003602052604090205460ff161561108857600080fd5b60055460321161109757600080fd5b604080516001600160a01b03831681526001602082015281517f5611bf3e417d124f97bf2c788843ea8bb502b66079fbee02158ef30b172cb762929181900390910190a16001600160a01b03166000818152600360205260408120805460ff191660019081179091556005805491820181559091527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db00180546001600160a01b0319169091179055565b600d546001600160a01b031681565b3360009081526003602052604081205460ff1661116c57600080fd5b600b805460ff60a01b19169055604080516000815290517f7d7f00509dd73ac4449f698ae75ccc797895eff5fa9d446d3df387598a26e7359181900360200190a150600190565b600b54600090600160a01b900460ff166111cc57600080fd5b6007546001600160a01b031633146111e357600080fd5b6001600160a01b03871673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee148061122a57506001600160a01b03851673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee145b61123357600080fd5b611241878787878787612547565b61124a57600080fd5b5060019695505050505050565b6000546001600160a01b0316331461126e57600080fd5b61271081106112c4576040805162461bcd60e51b815260206004820152601860248201527f7365744665654270733a20666565427073203e3d206270730000000000000000604482015290519081900360640190fd5b600c8190556040805182815290517f4f78c4ceb393a616bbd264a4584a9ad15d722042ce1e135e6a8380217f5cb42b9181900360200190a150565b6000546001600160a01b0316331461131657600080fd5b6001600160a01b03811661132957600080fd5b600154604080516001600160a01b039092168252517f3b81caf78fa51ecbc8acb482fd7012a277b428d9b80f9d156e8a54107496cc409181900360200190a1600180546001600160a01b0319166001600160a01b0392909216919091179055565b6001546001600160a01b031633146113a157600080fd5b600154600054604080516001600160a01b03938416815292909116602083015280517f65da1cfc2c2e81576ad96afb24a581f8e109b7a403b35cbd3243a1c99efdb9ed9281900390910190a160018054600080546001600160a01b03199081166001600160a01b03841617909155169055565b600e546040805160018082528183019092526060926001600160a01b031691839190602080830190803883395050600b5482519293506001600160a01b03169183915060009061146057fe5b6001600160a01b039283166020918202929092010152861673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee1415611711576060846001600160a01b0316635be093498488856040518463ffffffff1660e01b815260040180846001600160a01b03166001600160a01b03168152602001836001600160a01b03166001600160a01b0316815260200180602001828103825283818151815260200191508051906020019060200280838360005b8381101561152657818101518382015260200161150e565b5050505090500194505050505060006040518083038186803b15801561154b57600080fd5b505afa15801561155f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561158857600080fd5b81019080805160405193929190846401000000008211156115a857600080fd5b9083019060208201858111156115bd57600080fd5b82518660208202830111640100000000821117156115da57600080fd5b82525081516020918201928201910280838360005b838110156116075781810151838201526020016115ef565b5050505090500160405250505090508051600014156116295750610bcf915050565b8051600201604051908082528060200260200182016040528015611657578160200160208202803883390190505b50600d5481519195506001600160a01b031690859060009061167557fe5b60200260200101906001600160a01b031690816001600160a01b03168152505082846001815181106116a357fe5b6001600160a01b039092166020928302919091019091015260005b815181101561170a578181815181106116d357fe5b60200260200101518582600201815181106116ea57fe5b6001600160a01b03909216602092830291909101909101526001016116be565b5050611987565b6060846001600160a01b0316635be093498885856040518463ffffffff1660e01b815260040180846001600160a01b03166001600160a01b03168152602001836001600160a01b03166001600160a01b0316815260200180602001828103825283818151815260200191508051906020019060200280838360005b838110156117a457818101518382015260200161178c565b5050505090500194505050505060006040518083038186803b1580156117c957600080fd5b505afa1580156117dd573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561180657600080fd5b810190808051604051939291908464010000000082111561182657600080fd5b90830190602082018581111561183b57600080fd5b825186602082028301116401000000008211171561185857600080fd5b82525081516020918201928201910280838360005b8381101561188557818101518382015260200161186d565b5050505090500160405250505090508051600014156118a75750610bcf915050565b80516002016040519080825280602002602001820160405280156118d5578160200160208202803883390190505b50935060005b8151811015611924578181815181106118f057fe5b602002602001015185828151811061190457fe5b6001600160a01b03909216602092830291909101909101526001016118db565b50828482518151811061193357fe5b6001600160a01b039283166020918202929092010152600d548251865191909216918691600190910190811061196557fe5b60200260200101906001600160a01b031690816001600160a01b031681525050505b50509392505050565b6000546001600160a01b031633146119a757600080fd5b6001600160a01b0381166119ba57600080fd5b604080516001600160a01b038316815290517f3b81caf78fa51ecbc8acb482fd7012a277b428d9b80f9d156e8a54107496cc409181900360200190a1600054604080516001600160a01b038085168252909216602083015280517f65da1cfc2c2e81576ad96afb24a581f8e109b7a403b35cbd3243a1c99efdb9ed9281900390910190a1600080546001600160a01b0319166001600160a01b0392909216919091179055565b60606005805480602002602001604051908101604052809291908181526020018280548015610e3e576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610e20575050505050905090565b600b54600090600160a01b900460ff16611adc57506000611c42565b60006001600160a01b03861673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee14611b085785611b0a565b845b6001600160a01b0381166000908152600f602052604090205490915060ff16611b37576000915050611c42565b600a54606090611b5390889088906001600160a01b0316611414565b6009546040805163032125b360e21b815260248101899052600481019182528351604482015283519394506000936001600160a01b0390931692630c8496cc9286928b92829160640190602080870191028083838c5b83811015611bc1578181015183820152602001611ba9565b505050509050019350505050604080518083038186803b158015611be457600080fd5b505afa158015611bf8573d6000803e3d6000fd5b505050506040513d6040811015611c0e57600080fd5b505190506000611c308783611c228c612b30565b611c2b8c612b30565b612bf3565b9050611c3b81612c8a565b9450505050505b949350505050565b6000546001600160a01b03163314611c6157600080fd5b6001600160a01b03811660009081526002602052604090205460ff1615611c8757600080fd5b600454603211611c9657600080fd5b604080516001600160a01b03831681526001602082015281517f091a7a4b85135fdd7e8dbc18b12fabe5cc191ea867aa3c2e1a24a102af61d58b929181900390910190a16001600160a01b03166000818152600260205260408120805460ff191660019081179091556004805491820181559091527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b0180546001600160a01b0319169091179055565b6009546001600160a01b031681565b6008546001600160a01b031681565b6000546001600160a01b03163314611d7557600080fd5b6001600160a01b038116611dba5760405162461bcd60e51b8152600401808060200182810382526025815260200180612e976025913960400191505060405180910390fd5b6001600160a01b0381166000908152600f602052604090205460ff16611e1f576040805162461bcd60e51b81526020600482015260156024820152741b1a5cdd151bdad95b8e88191d5c1b1a58d85d1959605a1b604482015290519081900360640190fd5b6009546040805163095ea7b360e01b81526001600160a01b03928316600482015260006024820181905291519284169263095ea7b392604480840193602093929083900390910190829087803b158015611e7857600080fd5b505af1158015611e8c573d6000803e3d6000fd5b505050506040513d6020811015611ea257600080fd5b5051611edf5760405162461bcd60e51b8152600401808060200182810382526029815260200180612e6e6029913960400191505060405180910390fd5b6001600160a01b0381166000818152600f6020908152604091829020805460ff19169055815192835290517f6621c4efc5efa31320394260425b7d14cbb9d7e3754b2c98c04af66b1cbf315b9281900390910190a150565b6000546001600160a01b03163314611f4e57600080fd5b6001600160a01b03811660009081526002602052604090205460ff16611f7357600080fd5b6001600160a01b0381166000908152600260205260408120805460ff191690555b6004548110156109e957816001600160a01b031660048281548110611fb557fe5b6000918252602090912001546001600160a01b0316141561208e57600480546000198101908110611fe257fe5b600091825260209091200154600480546001600160a01b03909216918390811061200857fe5b600091825260209091200180546001600160a01b0319166001600160a01b03929092169190911790556004805460001901906120449082612d7c565b50604080516001600160a01b03841681526000602082015281517f091a7a4b85135fdd7e8dbc18b12fabe5cc191ea867aa3c2e1a24a102af61d58b929181900390910190a16109e9565b600101611f94565b6007546001600160a01b031681565b6000546001600160a01b031633146120bc57600080fd5b6040516001600160a01b0382169083156108fc029084906000818181858888f193505050501580156120f2573d6000803e3d6000fd5b50604080518381526001600160a01b038316602082015281517fec47e7ed86c86774d1a72c19f35c639911393fe7c1a34031fdbd260890da90de929181900390910190a15050565b60006001600160a01b03831673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee141561217257506001600160a01b038116316121f7565b826001600160a01b03166370a08231836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156121c857600080fd5b505afa1580156121dc573d6000803e3d6000fd5b505050506040513d60208110156121f257600080fd5b505190505b92915050565b600b54600160a01b900460ff1681565b6000546001600160a01b0316331461222457600080fd5b6001600160a01b0381166122695760405162461bcd60e51b8152600401808060200182810382526023815260200180612ebc6023913960400191505060405180910390fd5b6001600160a01b0382166122c4576040805162461bcd60e51b815260206004820152601f60248201527f6b796265724e6574776f726b2061646472657373206973206d697373696e6700604482015290519081900360640190fd5b600780546001600160a01b038085166001600160a01b0319928316179092556008805484841692169190911790819055604080516321f8a72160e01b81526c42616e636f724e6574776f726b60981b6004820152905191909216916321f8a721916024808301926020929190829003018186803b15801561234457600080fd5b505afa158015612358573d6000803e3d6000fd5b505050506040513d602081101561236e57600080fd5b5051600980546001600160a01b0319166001600160a01b03928316179055600854604080516321f8a72160e01b81527f42616e636f724e6574776f726b5061746846696e6465720000000000000000006004820152905191909216916321f8a721916024808301926020929190829003018186803b1580156123ef57600080fd5b505afa158015612403573d6000803e3d6000fd5b505050506040513d602081101561241957600080fd5b5051600a80546001600160a01b0319166001600160a01b03928316179055600854604080516321f8a72160e01b81527f42616e636f72436f6e76657274657252656769737472790000000000000000006004820152905191909216916321f8a721916024808301926020929190829003018186803b15801561249a57600080fd5b505afa1580156124ae573d6000803e3d6000fd5b505050506040513d60208110156124c457600080fd5b5051600b80546001600160a01b0319166001600160a01b03928316179055604080518483168152918316602083015280517f14662a0fccd762a05d5e1fa6afdd204554c4cf90fe58b5c5947f664fb71925f59281900390910190a15050565b600f6020526000908152604090205460ff1681565b6000546001600160a01b031681565b60008115612601576000831161255c57600080fd5b6001600160a01b03871673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee14156125c4578534146125bf5760405162461bcd60e51b815260040180806020018281038252602f815260200180612e1b602f913960400191505060405180910390fd5b612601565b34156126015760405162461bcd60e51b8152600401808060200182810382526031815260200180612dea6031913960400191505060405180910390fd5b6001600160a01b03871673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee146126e157604080516323b872dd60e01b81523360048201523060248201526044810188905290516001600160a01b038916916323b872dd9160648083019260209291908290030181600087803b15801561267a57600080fd5b505af115801561268e573d6000803e3d6000fd5b505050506040513d60208110156126a457600080fd5b50516126e15760405162461bcd60e51b8152600401808060200182810382526021815260200180612edf6021913960400191505060405180910390fd5b600a546060906126fd90899088906001600160a01b0316611414565b90506000815111612755576040805162461bcd60e51b815260206004820152601b60248201527f646f54726164653a20636f756c646e27742066696e6420706174680000000000604482015290519081900360640190fd5b6000612773886127648b612b30565b61276d8a612b30565b88612cf1565b905060006001600160a01b038a1673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee141561287f5760095460405163569706eb60e01b8152602481018b9052604481018490526000606482018190526084820181905260a060048301908152865160a484015286516001600160a01b039094169363569706eb938e93899385938a93839291829160c401906020808a019102808383885b8381101561282357818101518382015260200161280b565b5050505090500196505050505050506020604051808303818588803b15801561284b57600080fd5b505af115801561285f573d6000803e3d6000fd5b50505050506040513d602081101561287657600080fd5b5051905061295d565b60095460405163569706eb60e01b8152602481018b9052604481018490526000606482018190526084820181905260a060048301908152865160a484015286516001600160a01b039094169363569706eb9388938f93899391928392829160c401906020808a019102808383885b838110156129055781810151838201526020016128ed565b505050509050019650505050505050602060405180830381600087803b15801561292e57600080fd5b505af1158015612942573d6000803e3d6000fd5b505050506040513d602081101561295857600080fd5b505190505b8181101561299c5760405162461bcd60e51b8152600401808060200182810382526032815260200180612f006032913960400191505060405180910390fd5b6001600160a01b03881673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee14156129fd576040516001600160a01b0388169083156108fc029084906000818181858888f193505050501580156129f7573d6000803e3d6000fd5b50612ac4565b876001600160a01b031663a9059cbb88846040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015612a5d57600080fd5b505af1158015612a71573d6000803e3d6000fd5b505050506040513d6020811015612a8757600080fd5b5051612ac45760405162461bcd60e51b8152600401808060200182810382526028815260200180612f326028913960400191505060405180910390fd5b604080516001600160a01b038c81168252602082018c90528a8116828401526060820185905289166080820152905133917fea9415385bae08fe9f6dc457b02577166790cde83bb18cc340aac6cb81b824de919081900360a00190a25060019998505050505050505050565b60006001600160a01b03821673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee1415612b5f57506012612bee565b6001600160a01b03821660009081526006602052604090205480612beb57826001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b158015612bb657600080fd5b505afa158015612bca573d6000803e3d6000fd5b505050506040513d6020811015612be057600080fd5b50519150612bee9050565b90505b919050565b60006b204fce5e3e25026110000000851115612c0e57600080fd5b6b204fce5e3e25026110000000841115612c2757600080fd5b828210612c605760128383031115612c3e57600080fd5b84838303600a0a02670de0b6b3a7640000850281612c5857fe5b049050611c42565b60128284031115612c7057600080fd5b84828403600a0a670de0b6b3a764000086020281612c5857fe5b60006b204fce5e3e25026110000000821115612cd75760405162461bcd60e51b8152600401808060200182810382526024815260200180612e4a6024913960400191505060405180910390fd5b61271082600c54612710030281612cea57fe5b0492915050565b60006b204fce5e3e25026110000000851115612d0c57600080fd5b69d3c21bcecceda1000000821115612d2357600080fd5b838310612d525760128484031115612d3a57600080fd5b670de0b6b3a7640000858302858503600a0a02612c58565b60128385031115612d6257600080fd5b828403600a0a670de0b6b3a76400000282860281612c5857fe5b815481835581811115612da057600083815260209020612da0918101908301612da5565b505050565b61088791905b80821115612dbf5760008155600101612dab565b509056fe7365744261736963546f6b656e733a2062616e636f72546f6b656e206973206d697373696e67646f54726164653a206d73672076616c7565206973206e6f7420636f727265637420666f7220746f6b656e207472616465646f54726164653a206d73672076616c7565206973206e6f7420636f727265637420666f722045544820747261646576616c756541667465725265647563696e674665653a2076616c203e204d41585f5154596c697374546f6b656e3a206661696c20746f20617070726f76652062616e636f72206e6574776f726b6c697374546f6b656e3a20746f6b656e27732061646472657373206973206d697373696e67636f6e747261637452656769737472792061646472657373206973206d697373696e67646f54726164653a20636f6c6c6563742073726320746f6b656e206661696c6564646f54726164653a206465737420616d6f756e74206973206c6f776572207468616e20657870656374656420616d6f756e74646f54726164653a207472616e73666572206261636b206465737420746f6b656e206661696c65647365744261736963546f6b656e733a2062616e636f72457468206973206d697373696e67a265627a7a723158206e9fe76a21f4783f2cd750ea62a5bddc516dfe312d2a4308b10c3234e71f5fe564736f6c634300050b0032636f6e747261637452656769737472792061646472657373206973206d697373696e6700000000000000000000000052ae12abe5d8bd778bd5397f99ca900624cfadd4000000000000000000000000be2f0354d970265bfc36d383af77f72736b81b540000000000000000000000000000000000000000000000000000000000000019000000000000000000000000be2f0354d970265bfc36d383af77f72736b81b54
Deployed Bytecode
0x6080604052600436106102035760003560e01c806375829def11610118578063abffc9ac116100a0578063d4fac45d1161006f578063d4fac45d14610751578063d621e8131461078c578063d8952a49146107a1578063e69ec653146107dc578063f851a4401461080f57610203565b8063abffc9ac1461069d578063ac8a584a146106d0578063b78b842d14610703578063ce56c4541461071857610203565b80637c423f54116100e75780637c423f54146105e25780637cd44272146105f75780639870d7fe14610640578063a4edb25e14610673578063abf410e51461068857610203565b806375829def1461052257806377f50f9714610555578063797ae0e01461056a5780637acc8678146105af57610203565b806327a099d81161019b578063408ee7fe1161016a578063408ee7fe1461044f5780634d21dff7146104825780636940030f146104975780636cf69811146104ac57806372c27b62146104f857610203565b806327a099d8146103575780632a044e39146103bc5780633b172a32146103f75780633ccdbb281461040c57610203565b80631fc1e25f116101d75780631fc1e25f146102e5578063235ce45c1461031857806324a9d8531461032d578063267822471461034257610203565b806299d3861461020557806301a12fd31461022e578063038fe1b114610261578063043a3c07146102b4575b005b34801561021157600080fd5b5061021a610824565b604080519115158252519081900360200190f35b34801561023a57600080fd5b506102036004803603602081101561025157600080fd5b50356001600160a01b031661088a565b34801561026d57600080fd5b506102a26004803603606081101561028457600080fd5b506001600160a01b03813516906020810135151590604001356109ed565b60408051918252519081900360200190f35b3480156102c057600080fd5b506102c9610bd6565b604080516001600160a01b039092168252519081900360200190f35b3480156102f157600080fd5b506102036004803603602081101561030857600080fd5b50356001600160a01b0316610be5565b34801561032457600080fd5b506102c9610dc2565b34801561033957600080fd5b506102a2610dd1565b34801561034e57600080fd5b506102c9610dd7565b34801561036357600080fd5b5061036c610de6565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156103a8578181015183820152602001610390565b505050509050019250505060405180910390f35b3480156103c857600080fd5b50610203600480360360408110156103df57600080fd5b506001600160a01b0381358116916020013516610e48565b34801561040357600080fd5b506102c9610f41565b34801561041857600080fd5b506102036004803603606081101561042f57600080fd5b506001600160a01b03813581169160208101359160409091013516610f50565b34801561045b57600080fd5b506102036004803603602081101561047257600080fd5b50356001600160a01b031661104b565b34801561048e57600080fd5b506102c9611141565b3480156104a357600080fd5b5061021a611150565b61021a600480360360c08110156104c257600080fd5b506001600160a01b038135811691602081013591604082013581169160608101359091169060808101359060a0013515156111b3565b34801561050457600080fd5b506102036004803603602081101561051b57600080fd5b5035611257565b34801561052e57600080fd5b506102036004803603602081101561054557600080fd5b50356001600160a01b03166112ff565b34801561056157600080fd5b5061020361138a565b34801561057657600080fd5b5061036c6004803603606081101561058d57600080fd5b506001600160a01b038135811691602081013582169160409091013516611414565b3480156105bb57600080fd5b50610203600480360360208110156105d257600080fd5b50356001600160a01b0316611990565b3480156105ee57600080fd5b5061036c611a60565b34801561060357600080fd5b506102a26004803603608081101561061a57600080fd5b506001600160a01b03813581169160208101359091169060408101359060600135611ac0565b34801561064c57600080fd5b506102036004803603602081101561066357600080fd5b50356001600160a01b0316611c4a565b34801561067f57600080fd5b506102c9611d40565b34801561069457600080fd5b506102c9611d4f565b3480156106a957600080fd5b50610203600480360360208110156106c057600080fd5b50356001600160a01b0316611d5e565b3480156106dc57600080fd5b50610203600480360360208110156106f357600080fd5b50356001600160a01b0316611f37565b34801561070f57600080fd5b506102c9612096565b34801561072457600080fd5b506102036004803603604081101561073b57600080fd5b50803590602001356001600160a01b03166120a5565b34801561075d57600080fd5b506102a26004803603604081101561077457600080fd5b506001600160a01b038135811691602001351661213a565b34801561079857600080fd5b5061021a6121fd565b3480156107ad57600080fd5b50610203600480360360408110156107c457600080fd5b506001600160a01b038135811691602001351661220d565b3480156107e857600080fd5b5061021a600480360360208110156107ff57600080fd5b50356001600160a01b0316612523565b34801561081b57600080fd5b506102c9612538565b600080546001600160a01b0316331461083c57600080fd5b600b805460ff60a01b1916600160a01b179055604080516001815290517f7d7f00509dd73ac4449f698ae75ccc797895eff5fa9d446d3df387598a26e7359181900360200190a15060015b90565b6000546001600160a01b031633146108a157600080fd5b6001600160a01b03811660009081526003602052604090205460ff166108c657600080fd5b6001600160a01b0381166000908152600360205260408120805460ff191690555b6005548110156109e957816001600160a01b03166005828154811061090857fe5b6000918252602090912001546001600160a01b031614156109e15760058054600019810190811061093557fe5b600091825260209091200154600580546001600160a01b03909216918390811061095b57fe5b600091825260209091200180546001600160a01b0319166001600160a01b03929092169190911790556005805490610997906000198301612d7c565b50604080516001600160a01b03841681526000602082015281517f5611bf3e417d124f97bf2c788843ea8bb502b66079fbee02158ef30b172cb762929181900390910190a16109e9565b6001016108e7565b5050565b6000806060610a3685610a005786610a0d565b600d546001600160a01b03165b86610a2357600d546001600160a01b0316610a25565b875b600a546001600160a01b0316611414565b90508415610afd576009546040805163032125b360e21b815260248101879052600481019182528351604482015283516001600160a01b0390931692630c8496cc92859289928291606401906020808701910280838360005b83811015610aa7578181015183820152602001610a8f565b505050509050019350505050604080518083038186803b158015610aca57600080fd5b505afa158015610ade573d6000803e3d6000fd5b505050506040513d6040811015610af457600080fd5b50519150610bb8565b6009546040805163032125b360e21b815260248101879052600481019182528351604482015283516001600160a01b0390931692630c8496cc92859289928291606401906020808701910280838360005b83811015610b66578181015183820152602001610b4e565b505050509050019350505050604080518083038186803b158015610b8957600080fd5b505afa158015610b9d573d6000803e3d6000fd5b505050506040513d6040811015610bb357600080fd5b505191505b50600b805460ff60a01b1916600160a01b17905590505b9392505050565b600b546001600160a01b031681565b6000546001600160a01b03163314610bfc57600080fd5b6001600160a01b038116610c415760405162461bcd60e51b8152600401808060200182810382526025815260200180612e976025913960400191505060405180910390fd5b6001600160a01b0381166000908152600f602052604090205460ff1615610ca7576040805162461bcd60e51b81526020600482015260156024820152741b1a5cdd151bdad95b8e88191d5c1b1a58d85d1959605a1b604482015290519081900360640190fd5b6009546040805163095ea7b360e01b81526001600160a01b039283166004820152600160ff1b602482015290519183169163095ea7b3916044808201926020929091908290030181600087803b158015610d0057600080fd5b505af1158015610d14573d6000803e3d6000fd5b505050506040513d6020811015610d2a57600080fd5b5051610d675760405162461bcd60e51b8152600401808060200182810382526029815260200180612e6e6029913960400191505060405180910390fd5b6001600160a01b0381166000818152600f6020908152604091829020805460ff19166001179055815192835290517f017664858438d89f547fee46da0bcfc5396ea13a9fb1490b8fdd76cfa979f1a99281900390910190a150565b600a546001600160a01b031681565b600c5481565b6001546001600160a01b031681565b60606004805480602002602001604051908101604052809291908181526020018280548015610e3e57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610e20575b5050505050905090565b6001600160a01b038216610e8d5760405162461bcd60e51b8152600401808060200182810382526024815260200180612f5a6024913960400191505060405180910390fd5b6001600160a01b038116610ed25760405162461bcd60e51b8152600401808060200182810382526026815260200180612dc46026913960400191505060405180910390fd5b600d80546001600160a01b038085166001600160a01b03199283168117909355600e805491851691909216811790915560408051928352602083019190915280517fcfbfff80d8491666a08780b57f8c2a4b9adfec058fc94d4a91ea6220f6e135bc9281900390910190a15050565b600e546001600160a01b031681565b6000546001600160a01b03163314610f6757600080fd5b826001600160a01b031663a9059cbb82846040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015610fc757600080fd5b505af1158015610fdb573d6000803e3d6000fd5b505050506040513d6020811015610ff157600080fd5b5051610ffc57600080fd5b604080516001600160a01b0380861682526020820185905283168183015290517f72cb8a894ddb372ceec3d2a7648d86f17d5a15caae0e986c53109b8a9a9385e69181900360600190a1505050565b6000546001600160a01b0316331461106257600080fd5b6001600160a01b03811660009081526003602052604090205460ff161561108857600080fd5b60055460321161109757600080fd5b604080516001600160a01b03831681526001602082015281517f5611bf3e417d124f97bf2c788843ea8bb502b66079fbee02158ef30b172cb762929181900390910190a16001600160a01b03166000818152600360205260408120805460ff191660019081179091556005805491820181559091527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db00180546001600160a01b0319169091179055565b600d546001600160a01b031681565b3360009081526003602052604081205460ff1661116c57600080fd5b600b805460ff60a01b19169055604080516000815290517f7d7f00509dd73ac4449f698ae75ccc797895eff5fa9d446d3df387598a26e7359181900360200190a150600190565b600b54600090600160a01b900460ff166111cc57600080fd5b6007546001600160a01b031633146111e357600080fd5b6001600160a01b03871673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee148061122a57506001600160a01b03851673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee145b61123357600080fd5b611241878787878787612547565b61124a57600080fd5b5060019695505050505050565b6000546001600160a01b0316331461126e57600080fd5b61271081106112c4576040805162461bcd60e51b815260206004820152601860248201527f7365744665654270733a20666565427073203e3d206270730000000000000000604482015290519081900360640190fd5b600c8190556040805182815290517f4f78c4ceb393a616bbd264a4584a9ad15d722042ce1e135e6a8380217f5cb42b9181900360200190a150565b6000546001600160a01b0316331461131657600080fd5b6001600160a01b03811661132957600080fd5b600154604080516001600160a01b039092168252517f3b81caf78fa51ecbc8acb482fd7012a277b428d9b80f9d156e8a54107496cc409181900360200190a1600180546001600160a01b0319166001600160a01b0392909216919091179055565b6001546001600160a01b031633146113a157600080fd5b600154600054604080516001600160a01b03938416815292909116602083015280517f65da1cfc2c2e81576ad96afb24a581f8e109b7a403b35cbd3243a1c99efdb9ed9281900390910190a160018054600080546001600160a01b03199081166001600160a01b03841617909155169055565b600e546040805160018082528183019092526060926001600160a01b031691839190602080830190803883395050600b5482519293506001600160a01b03169183915060009061146057fe5b6001600160a01b039283166020918202929092010152861673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee1415611711576060846001600160a01b0316635be093498488856040518463ffffffff1660e01b815260040180846001600160a01b03166001600160a01b03168152602001836001600160a01b03166001600160a01b0316815260200180602001828103825283818151815260200191508051906020019060200280838360005b8381101561152657818101518382015260200161150e565b5050505090500194505050505060006040518083038186803b15801561154b57600080fd5b505afa15801561155f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561158857600080fd5b81019080805160405193929190846401000000008211156115a857600080fd5b9083019060208201858111156115bd57600080fd5b82518660208202830111640100000000821117156115da57600080fd5b82525081516020918201928201910280838360005b838110156116075781810151838201526020016115ef565b5050505090500160405250505090508051600014156116295750610bcf915050565b8051600201604051908082528060200260200182016040528015611657578160200160208202803883390190505b50600d5481519195506001600160a01b031690859060009061167557fe5b60200260200101906001600160a01b031690816001600160a01b03168152505082846001815181106116a357fe5b6001600160a01b039092166020928302919091019091015260005b815181101561170a578181815181106116d357fe5b60200260200101518582600201815181106116ea57fe5b6001600160a01b03909216602092830291909101909101526001016116be565b5050611987565b6060846001600160a01b0316635be093498885856040518463ffffffff1660e01b815260040180846001600160a01b03166001600160a01b03168152602001836001600160a01b03166001600160a01b0316815260200180602001828103825283818151815260200191508051906020019060200280838360005b838110156117a457818101518382015260200161178c565b5050505090500194505050505060006040518083038186803b1580156117c957600080fd5b505afa1580156117dd573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561180657600080fd5b810190808051604051939291908464010000000082111561182657600080fd5b90830190602082018581111561183b57600080fd5b825186602082028301116401000000008211171561185857600080fd5b82525081516020918201928201910280838360005b8381101561188557818101518382015260200161186d565b5050505090500160405250505090508051600014156118a75750610bcf915050565b80516002016040519080825280602002602001820160405280156118d5578160200160208202803883390190505b50935060005b8151811015611924578181815181106118f057fe5b602002602001015185828151811061190457fe5b6001600160a01b03909216602092830291909101909101526001016118db565b50828482518151811061193357fe5b6001600160a01b039283166020918202929092010152600d548251865191909216918691600190910190811061196557fe5b60200260200101906001600160a01b031690816001600160a01b031681525050505b50509392505050565b6000546001600160a01b031633146119a757600080fd5b6001600160a01b0381166119ba57600080fd5b604080516001600160a01b038316815290517f3b81caf78fa51ecbc8acb482fd7012a277b428d9b80f9d156e8a54107496cc409181900360200190a1600054604080516001600160a01b038085168252909216602083015280517f65da1cfc2c2e81576ad96afb24a581f8e109b7a403b35cbd3243a1c99efdb9ed9281900390910190a1600080546001600160a01b0319166001600160a01b0392909216919091179055565b60606005805480602002602001604051908101604052809291908181526020018280548015610e3e576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610e20575050505050905090565b600b54600090600160a01b900460ff16611adc57506000611c42565b60006001600160a01b03861673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee14611b085785611b0a565b845b6001600160a01b0381166000908152600f602052604090205490915060ff16611b37576000915050611c42565b600a54606090611b5390889088906001600160a01b0316611414565b6009546040805163032125b360e21b815260248101899052600481019182528351604482015283519394506000936001600160a01b0390931692630c8496cc9286928b92829160640190602080870191028083838c5b83811015611bc1578181015183820152602001611ba9565b505050509050019350505050604080518083038186803b158015611be457600080fd5b505afa158015611bf8573d6000803e3d6000fd5b505050506040513d6040811015611c0e57600080fd5b505190506000611c308783611c228c612b30565b611c2b8c612b30565b612bf3565b9050611c3b81612c8a565b9450505050505b949350505050565b6000546001600160a01b03163314611c6157600080fd5b6001600160a01b03811660009081526002602052604090205460ff1615611c8757600080fd5b600454603211611c9657600080fd5b604080516001600160a01b03831681526001602082015281517f091a7a4b85135fdd7e8dbc18b12fabe5cc191ea867aa3c2e1a24a102af61d58b929181900390910190a16001600160a01b03166000818152600260205260408120805460ff191660019081179091556004805491820181559091527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b0180546001600160a01b0319169091179055565b6009546001600160a01b031681565b6008546001600160a01b031681565b6000546001600160a01b03163314611d7557600080fd5b6001600160a01b038116611dba5760405162461bcd60e51b8152600401808060200182810382526025815260200180612e976025913960400191505060405180910390fd5b6001600160a01b0381166000908152600f602052604090205460ff16611e1f576040805162461bcd60e51b81526020600482015260156024820152741b1a5cdd151bdad95b8e88191d5c1b1a58d85d1959605a1b604482015290519081900360640190fd5b6009546040805163095ea7b360e01b81526001600160a01b03928316600482015260006024820181905291519284169263095ea7b392604480840193602093929083900390910190829087803b158015611e7857600080fd5b505af1158015611e8c573d6000803e3d6000fd5b505050506040513d6020811015611ea257600080fd5b5051611edf5760405162461bcd60e51b8152600401808060200182810382526029815260200180612e6e6029913960400191505060405180910390fd5b6001600160a01b0381166000818152600f6020908152604091829020805460ff19169055815192835290517f6621c4efc5efa31320394260425b7d14cbb9d7e3754b2c98c04af66b1cbf315b9281900390910190a150565b6000546001600160a01b03163314611f4e57600080fd5b6001600160a01b03811660009081526002602052604090205460ff16611f7357600080fd5b6001600160a01b0381166000908152600260205260408120805460ff191690555b6004548110156109e957816001600160a01b031660048281548110611fb557fe5b6000918252602090912001546001600160a01b0316141561208e57600480546000198101908110611fe257fe5b600091825260209091200154600480546001600160a01b03909216918390811061200857fe5b600091825260209091200180546001600160a01b0319166001600160a01b03929092169190911790556004805460001901906120449082612d7c565b50604080516001600160a01b03841681526000602082015281517f091a7a4b85135fdd7e8dbc18b12fabe5cc191ea867aa3c2e1a24a102af61d58b929181900390910190a16109e9565b600101611f94565b6007546001600160a01b031681565b6000546001600160a01b031633146120bc57600080fd5b6040516001600160a01b0382169083156108fc029084906000818181858888f193505050501580156120f2573d6000803e3d6000fd5b50604080518381526001600160a01b038316602082015281517fec47e7ed86c86774d1a72c19f35c639911393fe7c1a34031fdbd260890da90de929181900390910190a15050565b60006001600160a01b03831673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee141561217257506001600160a01b038116316121f7565b826001600160a01b03166370a08231836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156121c857600080fd5b505afa1580156121dc573d6000803e3d6000fd5b505050506040513d60208110156121f257600080fd5b505190505b92915050565b600b54600160a01b900460ff1681565b6000546001600160a01b0316331461222457600080fd5b6001600160a01b0381166122695760405162461bcd60e51b8152600401808060200182810382526023815260200180612ebc6023913960400191505060405180910390fd5b6001600160a01b0382166122c4576040805162461bcd60e51b815260206004820152601f60248201527f6b796265724e6574776f726b2061646472657373206973206d697373696e6700604482015290519081900360640190fd5b600780546001600160a01b038085166001600160a01b0319928316179092556008805484841692169190911790819055604080516321f8a72160e01b81526c42616e636f724e6574776f726b60981b6004820152905191909216916321f8a721916024808301926020929190829003018186803b15801561234457600080fd5b505afa158015612358573d6000803e3d6000fd5b505050506040513d602081101561236e57600080fd5b5051600980546001600160a01b0319166001600160a01b03928316179055600854604080516321f8a72160e01b81527f42616e636f724e6574776f726b5061746846696e6465720000000000000000006004820152905191909216916321f8a721916024808301926020929190829003018186803b1580156123ef57600080fd5b505afa158015612403573d6000803e3d6000fd5b505050506040513d602081101561241957600080fd5b5051600a80546001600160a01b0319166001600160a01b03928316179055600854604080516321f8a72160e01b81527f42616e636f72436f6e76657274657252656769737472790000000000000000006004820152905191909216916321f8a721916024808301926020929190829003018186803b15801561249a57600080fd5b505afa1580156124ae573d6000803e3d6000fd5b505050506040513d60208110156124c457600080fd5b5051600b80546001600160a01b0319166001600160a01b03928316179055604080518483168152918316602083015280517f14662a0fccd762a05d5e1fa6afdd204554c4cf90fe58b5c5947f664fb71925f59281900390910190a15050565b600f6020526000908152604090205460ff1681565b6000546001600160a01b031681565b60008115612601576000831161255c57600080fd5b6001600160a01b03871673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee14156125c4578534146125bf5760405162461bcd60e51b815260040180806020018281038252602f815260200180612e1b602f913960400191505060405180910390fd5b612601565b34156126015760405162461bcd60e51b8152600401808060200182810382526031815260200180612dea6031913960400191505060405180910390fd5b6001600160a01b03871673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee146126e157604080516323b872dd60e01b81523360048201523060248201526044810188905290516001600160a01b038916916323b872dd9160648083019260209291908290030181600087803b15801561267a57600080fd5b505af115801561268e573d6000803e3d6000fd5b505050506040513d60208110156126a457600080fd5b50516126e15760405162461bcd60e51b8152600401808060200182810382526021815260200180612edf6021913960400191505060405180910390fd5b600a546060906126fd90899088906001600160a01b0316611414565b90506000815111612755576040805162461bcd60e51b815260206004820152601b60248201527f646f54726164653a20636f756c646e27742066696e6420706174680000000000604482015290519081900360640190fd5b6000612773886127648b612b30565b61276d8a612b30565b88612cf1565b905060006001600160a01b038a1673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee141561287f5760095460405163569706eb60e01b8152602481018b9052604481018490526000606482018190526084820181905260a060048301908152865160a484015286516001600160a01b039094169363569706eb938e93899385938a93839291829160c401906020808a019102808383885b8381101561282357818101518382015260200161280b565b5050505090500196505050505050506020604051808303818588803b15801561284b57600080fd5b505af115801561285f573d6000803e3d6000fd5b50505050506040513d602081101561287657600080fd5b5051905061295d565b60095460405163569706eb60e01b8152602481018b9052604481018490526000606482018190526084820181905260a060048301908152865160a484015286516001600160a01b039094169363569706eb9388938f93899391928392829160c401906020808a019102808383885b838110156129055781810151838201526020016128ed565b505050509050019650505050505050602060405180830381600087803b15801561292e57600080fd5b505af1158015612942573d6000803e3d6000fd5b505050506040513d602081101561295857600080fd5b505190505b8181101561299c5760405162461bcd60e51b8152600401808060200182810382526032815260200180612f006032913960400191505060405180910390fd5b6001600160a01b03881673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee14156129fd576040516001600160a01b0388169083156108fc029084906000818181858888f193505050501580156129f7573d6000803e3d6000fd5b50612ac4565b876001600160a01b031663a9059cbb88846040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015612a5d57600080fd5b505af1158015612a71573d6000803e3d6000fd5b505050506040513d6020811015612a8757600080fd5b5051612ac45760405162461bcd60e51b8152600401808060200182810382526028815260200180612f326028913960400191505060405180910390fd5b604080516001600160a01b038c81168252602082018c90528a8116828401526060820185905289166080820152905133917fea9415385bae08fe9f6dc457b02577166790cde83bb18cc340aac6cb81b824de919081900360a00190a25060019998505050505050505050565b60006001600160a01b03821673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee1415612b5f57506012612bee565b6001600160a01b03821660009081526006602052604090205480612beb57826001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b158015612bb657600080fd5b505afa158015612bca573d6000803e3d6000fd5b505050506040513d6020811015612be057600080fd5b50519150612bee9050565b90505b919050565b60006b204fce5e3e25026110000000851115612c0e57600080fd5b6b204fce5e3e25026110000000841115612c2757600080fd5b828210612c605760128383031115612c3e57600080fd5b84838303600a0a02670de0b6b3a7640000850281612c5857fe5b049050611c42565b60128284031115612c7057600080fd5b84828403600a0a670de0b6b3a764000086020281612c5857fe5b60006b204fce5e3e25026110000000821115612cd75760405162461bcd60e51b8152600401808060200182810382526024815260200180612e4a6024913960400191505060405180910390fd5b61271082600c54612710030281612cea57fe5b0492915050565b60006b204fce5e3e25026110000000851115612d0c57600080fd5b69d3c21bcecceda1000000821115612d2357600080fd5b838310612d525760128484031115612d3a57600080fd5b670de0b6b3a7640000858302858503600a0a02612c58565b60128385031115612d6257600080fd5b828403600a0a670de0b6b3a76400000282860281612c5857fe5b815481835581811115612da057600083815260209020612da0918101908301612da5565b505050565b61088791905b80821115612dbf5760008155600101612dab565b509056fe7365744261736963546f6b656e733a2062616e636f72546f6b656e206973206d697373696e67646f54726164653a206d73672076616c7565206973206e6f7420636f727265637420666f7220746f6b656e207472616465646f54726164653a206d73672076616c7565206973206e6f7420636f727265637420666f722045544820747261646576616c756541667465725265647563696e674665653a2076616c203e204d41585f5154596c697374546f6b656e3a206661696c20746f20617070726f76652062616e636f72206e6574776f726b6c697374546f6b656e3a20746f6b656e27732061646472657373206973206d697373696e67636f6e747261637452656769737472792061646472657373206973206d697373696e67646f54726164653a20636f6c6c6563742073726320746f6b656e206661696c6564646f54726164653a206465737420616d6f756e74206973206c6f776572207468616e20657870656374656420616d6f756e74646f54726164653a207472616e73666572206261636b206465737420746f6b656e206661696c65647365744261736963546f6b656e733a2062616e636f72457468206973206d697373696e67a265627a7a723158206e9fe76a21f4783f2cd750ea62a5bddc516dfe312d2a4308b10c3234e71f5fe564736f6c634300050b0032
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000052ae12abe5d8bd778bd5397f99ca900624cfadd4000000000000000000000000be2f0354d970265bfc36d383af77f72736b81b540000000000000000000000000000000000000000000000000000000000000019000000000000000000000000be2f0354d970265bfc36d383af77f72736b81b54
-----Decoded View---------------
Arg [0] : _contractRegistry (address): 0x52Ae12ABe5D8BD778BD5397F99cA900624CfADD4
Arg [1] : _kyberNetwork (address): 0xBE2F0354D970265BFc36D383af77F72736b81B54
Arg [2] : _feeBps (uint256): 25
Arg [3] : _admin (address): 0xBE2F0354D970265BFc36D383af77F72736b81B54
-----Encoded View---------------
4 Constructor Arguments found :
Arg [0] : 00000000000000000000000052ae12abe5d8bd778bd5397f99ca900624cfadd4
Arg [1] : 000000000000000000000000be2f0354d970265bfc36d383af77f72736b81b54
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000019
Arg [3] : 000000000000000000000000be2f0354d970265bfc36d383af77f72736b81b54
Deployed Bytecode Sourcemap
187:9582:2:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6140:145;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6140:145:2;;;:::i;:::-;;;;;;;;;;;;;;;;;;2406:456:4;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2406:456:4;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2406:456:4;-1:-1:-1;;;;;2406:456:4;;:::i;3150:571:2:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3150:571:2;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;3150:571:2;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;539:32;;8:9:-1;5:2;;;30:1;27;20:12;5:2;539:32:2;;;:::i;:::-;;;;-1:-1:-1;;;;;539:32:2;;;;;;;;;;;;;;5018:409;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5018:409:2;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5018:409:2;-1:-1:-1;;;;;5018:409:2;;:::i;485:48::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;485:48:2;;;:::i;608:18::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;608:18:2;;;:::i;85:27:4:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;85:27:4;;;:::i;656:103::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;656:103:4;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;656:103:4;;;;;;;;;;;;;;;;;4586:389:2;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4586:389:2;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;4586:389:2;;;;;;;;;;:::i;713:76::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;713:76:2;;;:::i;337:191:6:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;337:191:6;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;337:191:6;;;;;;;;;;;;;;;;;:::i;2094:306:4:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2094:306:4;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2094:306:4;-1:-1:-1;;;;;2094:306:4;;:::i;633:74:2:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;633:74:2;;;:::i;6291:150::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6291:150:2;;;:::i;2601:526::-;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;2601:526:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;5920:176::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5920:176:2;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5920:176:2;;:::i;1074:188:4:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1074:188:4;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1074:188:4;-1:-1:-1;;;;;1074:188:4;;:::i;1836:194::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1836:194:4;;;:::i;8411:1156:2:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8411:1156:2;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;8411:1156:2;;;;;;;;;;;;;;;;;;;:::i;1437:228:4:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1437:228:4;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1437:228:4;-1:-1:-1;;;;;1437:228:4;;:::i;765:101::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;765:101:4;;;:::i;1797:601:2:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1797:601:2;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;1797:601:2;;;;;;;;;;;;;;;;;;;;;;:::i;2927:317:4:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2927:317:4;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2927:317:4;-1:-1:-1;;;;;2927:317:4;;:::i;444:35:2:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;444:35:2;;;:::i;351:41::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;351:41:2;;;:::i;5472:407::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5472:407:2;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5472:407:2;-1:-1:-1;;;;;5472:407:2;;:::i;3250:474:4:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3250:474:4;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3250:474:4;-1:-1:-1;;;;;3250:474:4;;:::i;318:27:2:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;318:27:2;;;:::i;633:163:6:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;633:163:6;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;633:163:6;;;;;;-1:-1:-1;;;;;633:163:6;;:::i;673:208:5:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;673:208:5;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;673:208:5;;;;;;;;;;:::i;578:24:2:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;578:24:2;;;:::i;3801:712::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3801:712:2;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;3801:712:2;;;;;;;;;;:::i;796:45::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;796:45:2;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;796:45:2;-1:-1:-1;;;;;796:45:2;;:::i;59:20:4:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;59:20:4;;;:::i;6140:145:2:-;6188:4;452:5:4;;-1:-1:-1;;;;;452:5:4;438:10;:19;430:28;;;;;;6204:12:2;:19;;-1:-1:-1;;;;6204:19:2;-1:-1:-1;;;6204:19:2;;;6238:18;;;6219:4;6238:18;;;;;;;;;;;;;-1:-1:-1;6274:4:2;468:1:4;6140:145:2;:::o;2406:456:4:-;452:5;;-1:-1:-1;;;;;452:5:4;438:10;:19;430:28;;;;;;-1:-1:-1;;;;;2482:17:4;;;;;;:8;:17;;;;;;;;2474:26;;;;;;-1:-1:-1;;;;;2510:17:4;;2530:5;2510:17;;;:8;:17;;;;;:25;;-1:-1:-1;;2510:25:4;;;2546:310;2567:13;:20;2563:24;;2546:310;;;2632:7;-1:-1:-1;;;;;2612:27:4;:13;2626:1;2612:16;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2612:16:4;:27;2608:238;;;2678:13;2692:20;;-1:-1:-1;;2692:24:4;;;2678:39;;;;;;;;;;;;;;;;2659:13;:16;;-1:-1:-1;;;;;2678:39:4;;;;2673:1;;2659:16;;;;;;;;;;;;;;;:58;;-1:-1:-1;;;;;;2659:58:4;-1:-1:-1;;;;;2659:58:4;;;;;;;;;;2735:13;:22;;;;;-1:-1:-1;;2735:22:4;;;:::i;:::-;-1:-1:-1;2780:28:4;;;-1:-1:-1;;;;;2780:28:4;;;;2802:5;2780:28;;;;;;;;;;;;;;;;;2826:5;;2608:238;2589:3;;2546:310;;;;2406:456;:::o;3150:571:2:-;3237:4;3253:15;3278:19;3300:149;3331:12;:32;;3358:5;3331:32;;;3346:9;;-1:-1:-1;;;;;3346:9:2;3331:32;3377:12;:32;;3400:9;;-1:-1:-1;;;;;3400:9:2;3377:32;;;3392:5;3377:32;3423:16;;-1:-1:-1;;;;;3423:16:2;3300:17;:149::i;:::-;3278:171;;3463:12;3459:200;;;3508:13;;:46;;;-1:-1:-1;;;3508:46:2;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3508:13:2;;;;:29;;3538:4;;3544:9;;3508:46;;;;;;;;;;;;;;:13;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;3508:46:2;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3508:46:2;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3508:46:2;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3508:46:2;;-1:-1:-1;3459:200:2;;;3602:13;;:46;;;-1:-1:-1;;;3602:46:2;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3602:13:2;;;;:29;;3632:4;;3638:9;;3602:46;;;;;;;;;;;;;;:13;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;3602:46:2;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3602:46:2;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3602:46:2;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3602:46:2;;-1:-1:-1;3459:200:2;-1:-1:-1;3668:12:2;:19;;-1:-1:-1;;;;3668:19:2;-1:-1:-1;;;3668:19:2;;;3704:10;-1:-1:-1;3150:571:2;;;;;;:::o;539:32::-;;;-1:-1:-1;;;;;539:32:2;;:::o;5018:409::-;452:5:4;;-1:-1:-1;;;;;452:5:4;438:10;:19;430:28;;;;;;-1:-1:-1;;;;;5085:28:2;;5077:78;;;;-1:-1:-1;;;5077:78:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5174:29:2;;;;;;:13;:29;;;;;;;;5173:30;5165:64;;;;;-1:-1:-1;;;5165:64:2;;;;;;;;;;;;-1:-1:-1;;;5165:64:2;;;;;;;;;;;;;;;5270:13;;5248:45;;;-1:-1:-1;;;5248:45:2;;-1:-1:-1;;;;;5270:13:2;;;5248:45;;;;-1:-1:-1;;;5248:45:2;;;;;;:13;;;;;;:45;;;;;;;;;;;;;;;5270:13;5248;:45;;;5:2:-1;;;;30:1;27;20:12;5:2;5248:45:2;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5248:45:2;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5248:45:2;5240:99;;;;-1:-1:-1;;;5240:99:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5350:29:2;;;;;;:13;:29;;;;;;;;;:36;;-1:-1:-1;;5350:36:2;5382:4;5350:36;;;5402:18;;;;;;;;;;;;;;;;;5018:409;:::o;485:48::-;;;-1:-1:-1;;;;;485:48:2;;:::o;608:18::-;;;;:::o;85:27:4:-;;;-1:-1:-1;;;;;85:27:4;;:::o;656:103::-;703:16;738:14;731:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;731:21:4;;;;;;;;;;;;;;;;;;;;;;;656:103;:::o;4586:389:2:-;-1:-1:-1;;;;;4677:24:2;;4669:73;;;;-1:-1:-1;;;4669:73:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4760:26:2;;4752:77;;;;-1:-1:-1;;;4752:77:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4840:9;:29;;-1:-1:-1;;;;;4840:29:2;;;-1:-1:-1;;;;;;4840:29:2;;;;;;;;4879:11;:33;;;;;;;;;;;;;;4928:40;;;;;;;;;;;;;;;;;;;;;;;;;4586:389;;:::o;713:76::-;;;-1:-1:-1;;;;;713:76:2;;:::o;337:191:6:-;452:5:4;;-1:-1:-1;;;;;452:5:4;438:10;:19;430:28;;;;;;439:5:6;-1:-1:-1;;;;;439:14:6;;454:6;462;439:30;;;;;;;;;;;;;-1:-1:-1;;;;;439:30:6;-1:-1:-1;;;;;439:30:6;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;439:30:6;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;439:30:6;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;439:30:6;431:39;;;;;;485:36;;;-1:-1:-1;;;;;485:36:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;337:191;;;:::o;2094:306:4:-;452:5;;-1:-1:-1;;;;;452:5:4;438:10;:19;430:28;;;;;;-1:-1:-1;;;;;2170:20:4;;;;;;:8;:20;;;;;;;;2169:21;2161:30;;;;;;2232:13;:20;328:2;-1:-1:-1;2224:46:4;;;;;;2286:30;;;-1:-1:-1;;;;;2286:30:4;;;;2311:4;2286:30;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2326:20:4;;;;;:8;:20;;;;;:27;;-1:-1:-1;;2326:27:4;2349:4;2326:27;;;;;;2363:13;27:10:-1;;23:18;;;45:23;;2363:30:4;;;;;;;-1:-1:-1;;;;;;2363:30:4;;;;;;2094:306::o;633:74:2:-;;;-1:-1:-1;;;;;633:74:2;;:::o;6291:150::-;620:10:4;6342:4:2;611:20:4;;;:8;:20;;;;;;;;603:29;;;;;;6358:12:2;:20;;-1:-1:-1;;;;6358:20:2;;;6393:19;;;6373:5;6393:19;;;;;;;;;;;;;-1:-1:-1;6430:4:2;6291:150;:::o;2601:526::-;2860:12;;2831:4;;-1:-1:-1;;;2860:12:2;;;;2852:21;;;;;;2905:12;;-1:-1:-1;;;;;2905:12:2;2891:10;:26;2883:35;;;;;;-1:-1:-1;;;;;2936:29:2;;176:42:5;2936:29:2;;:63;;-1:-1:-1;;;;;;2969:30:2;;176:42:5;2969:30:2;2936:63;2928:72;;;;;;3019:78;3027:8;3037:9;3048;3059:11;3072:14;3088:8;3019:7;:78::i;:::-;3011:87;;;;;;-1:-1:-1;3116:4:2;2601:526;;;;;;;;:::o;5920:176::-;452:5:4;;-1:-1:-1;;;;;452:5:4;438:10;:19;430:28;;;;;;298:5:2;5988:7;:13;5980:50;;;;;-1:-1:-1;;;5980:50:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;6041:6;:16;;;6072:17;;;;;;;;;;;;;;;;;5920:176;:::o;1074:188:4:-;452:5;;-1:-1:-1;;;;;452:5:4;438:10;:19;430:28;;;;;;-1:-1:-1;;;;;1150:22:4;;1142:31;;;;;;1209:12;;1188:34;;;-1:-1:-1;;;;;1209:12:4;;;1188:34;;;;;;;;;;;;1232:12;:23;;-1:-1:-1;;;;;;1232:23:4;-1:-1:-1;;;;;1232:23:4;;;;;;;;;;1074:188::o;1836:194::-;1883:12;;-1:-1:-1;;;;;1883:12:4;1899:10;1883:26;1875:35;;;;;;1938:12;;;1952:5;1925:33;;;-1:-1:-1;;;;;1938:12:4;;;1925:33;;1952:5;;;;1925:33;;;;;;;;;;;;;;;;1976:12;;;;1968:20;;-1:-1:-1;;;;;;1968:20:4;;;-1:-1:-1;;;;;1976:12:4;;1968:20;;;;1998:25;;;1836:194::o;8411:1156:2:-;8562:11;;8623:16;;;8562:11;8623:16;;;;;;;;;8514:19;;-1:-1:-1;;;;;8562:11:2;;8514:19;;8623:16;;;;;;;105:10:-1;8623:16:2;88:34:-1;-1:-1;;8674:17:2;;8649:22;;;;-1:-1:-1;;;;;;8674:17:2;;8649:22;;-1:-1:-1;8674:17:2;;8649:22;;;;-1:-1:-1;;;;;8649:42:2;;;:22;;;;;;;;;:42;8706:24;;176:42:5;8706:24:2;8702:837;;;8746:24;8773:6;-1:-1:-1;;;;;8773:10:2;;8784:8;8794:4;8800:19;8773:47;;;;;;;;;;;;;-1:-1:-1;;;;;8773:47:2;-1:-1:-1;;;;;8773:47:2;;;;;;-1:-1:-1;;;;;8773:47:2;-1:-1:-1;;;;;8773:47:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;8773:47:2;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8773:47:2;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8773:47:2;;;;;;39:16:-1;36:1;17:17;2:54;101:4;8773:47:2;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;13:2;5:11;;2:2;;;29:1;26;19:12;2:2;8773:47:2;;;;;;;;;;;;;19:11:-1;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;219:3;213:10;331:9;325:2;311:12;307:21;289:16;285:44;282:59;261:11;247:12;244:29;233:116;230:2;;;362:1;359;352:12;230:2;373:25;;-1:-1;8773:47:2;;421:4:-1;412:14;;;;8773:47:2;;;;;412:14:-1;8773:47:2;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;8773:47:2;;;;;;;;;;;8746:74;;8838:7;:14;8856:1;8838:19;8834:41;;;-1:-1:-1;8861:11:2;;-1:-1:-1;;8861:11:2;8834:41;8907:7;:14;8924:1;8907:18;8895:31;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;136:17;;-1:-1;8895:31:2;-1:-1:-1;8950:9:2;;8940:7;;8888:38;;-1:-1:-1;;;;;;8950:9:2;;8888:38;;8950:9;;8940:7;;;;;;;;;:19;-1:-1:-1;;;;;8940:19:2;;;-1:-1:-1;;;;;8940:19:2;;;;;8983:8;8973:4;8978:1;8973:7;;;;;;;;-1:-1:-1;;;;;8973:18:2;;;:7;;;;;;;;;;;:18;9009:6;9005:105;9025:7;:14;9021:1;:18;9005:105;;;9084:7;9092:1;9084:10;;;;;;;;;;;;;;9064:4;9069:1;9073;9069:5;9064:11;;;;;;;;-1:-1:-1;;;;;9064:31:2;;;:11;;;;;;;;;;;:31;9041:3;;9005:105;;;;8702:837;;;;9140:24;9167:6;-1:-1:-1;;;;;9167:10:2;;9178:3;9183:8;9193:19;9167:46;;;;;;;;;;;;;-1:-1:-1;;;;;9167:46:2;-1:-1:-1;;;;;9167:46:2;;;;;;-1:-1:-1;;;;;9167:46:2;-1:-1:-1;;;;;9167:46:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;9167:46:2;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9167:46:2;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9167:46:2;;;;;;39:16:-1;36:1;17:17;2:54;101:4;9167:46:2;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;13:2;5:11;;2:2;;;29:1;26;19:12;2:2;9167:46:2;;;;;;;;;;;;;19:11:-1;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;219:3;213:10;331:9;325:2;311:12;307:21;289:16;285:44;282:59;261:11;247:12;244:29;233:116;230:2;;;362:1;359;352:12;230:2;373:25;;-1:-1;9167:46:2;;421:4:-1;412:14;;;;9167:46:2;;;;;412:14:-1;9167:46:2;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;9167:46:2;;;;;;;;;;;9140:73;;9231:7;:14;9249:1;9231:19;9227:41;;;-1:-1:-1;9254:11:2;;-1:-1:-1;;9254:11:2;9227:41;9300:7;:14;9317:1;9300:18;9288:31;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;136:17;;-1:-1;9288:31:2;-1:-1:-1;9281:38:2;-1:-1:-1;9337:6:2;9333:101;9353:7;:14;9349:1;:18;9333:101;;;9408:7;9416:1;9408:10;;;;;;;;;;;;;;9392:4;9397:1;9392:7;;;;;;;;-1:-1:-1;;;;;9392:27:2;;;:7;;;;;;;;;;;:27;9369:3;;9333:101;;;;9470:8;9447:4;9452:7;:14;9447:20;;;;;;;;-1:-1:-1;;;;;9447:31:2;;;:20;;;;;;;;;:31;9519:9;;9497:14;;9492:24;;9519:9;;;;;9492:24;;9519:9;9497:18;;;;9492:24;;;;;;;;;;;:36;-1:-1:-1;;;;;9492:36:2;;;-1:-1:-1;;;;;9492:36:2;;;;;8702:837;;-1:-1:-1;;8411:1156:2;;;;;:::o;1437:228:4:-;452:5;;-1:-1:-1;;;;;452:5:4;438:10;:19;430:28;;;;;;-1:-1:-1;;;;;1520:22:4;;1512:31;;;;;;1558:30;;;-1:-1:-1;;;;;1558:30:4;;;;;;;;;;;;;;;1626:5;;1603:29;;;-1:-1:-1;;;;;1603:29:4;;;;;1626:5;;;1603:29;;;;;;;;;;;;;;;;1642:5;:16;;-1:-1:-1;;;;;;1642:16:4;-1:-1:-1;;;;;1642:16:4;;;;;;;;;;1437:228::o;765:101::-;811:16;846:13;839:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;839:20:4;;;;;;;;;;;;;;;;;;;;;;765:101;:::o;1797:601:2:-;1907:12;;1886:4;;-1:-1:-1;;;1907:12:2;;;;1902:27;;-1:-1:-1;1928:1:2;1921:8;;1902:27;1940:11;-1:-1:-1;;;;;1954:24:2;;176:42:5;1954:24:2;:37;;1988:3;1954:37;;;1981:4;1954:37;-1:-1:-1;;;;;2006:29:2;;;;;;:13;:29;;;;;;1940:51;;-1:-1:-1;2006:29:2;;2001:49;;2046:1;2039:8;;;;;2001:49;2125:16;;2074:19;;2096:46;;2114:3;;2119:4;;-1:-1:-1;;;;;2125:16:2;2096:17;:46::i;:::-;2189:13;;:43;;;-1:-1:-1;;;2189:43:2;;;;;;;;;;;;;;;;;;;;;;2074:68;;-1:-1:-1;2153:12:2;;-1:-1:-1;;;;;2189:13:2;;;;:29;;2074:68;;2225:6;;2189:43;;;;;;;;;;;;;;2153:12;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;2189:43:2;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2189:43:2;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2189:43:2;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2189:43:2;;-1:-1:-1;2243:9:2;2255:69;2271:6;2189:43;2288:16;2300:3;2288:11;:16::i;:::-;2306:17;2318:4;2306:11;:17::i;:::-;2255:15;:69::i;:::-;2243:81;;2342:27;2364:4;2342:21;:27::i;:::-;2335:34;-1:-1:-1;;;;;1797:601:2;;;;;;;:::o;2927:317:4:-;452:5;;-1:-1:-1;;;;;452:5:4;438:10;:19;430:28;;;;;;-1:-1:-1;;;;;3005:22:4;;;;;;:9;:22;;;;;;;;3004:23;2996:32;;;;;;3069:14;:21;328:2;-1:-1:-1;3061:47:4;;;;;;3124:32;;;-1:-1:-1;;;;;3124:32:4;;;;3151:4;3124:32;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3166:22:4;;;;;:9;:22;;;;;:29;;-1:-1:-1;;3166:29:4;3191:4;3166:29;;;;;;3205:14;27:10:-1;;23:18;;;45:23;;3205:32:4;;;;;;;-1:-1:-1;;;;;;3205:32:4;;;;;;2927:317::o;444:35:2:-;;;-1:-1:-1;;;;;444:35:2;;:::o;351:41::-;;;-1:-1:-1;;;;;351:41:2;;:::o;5472:407::-;452:5:4;;-1:-1:-1;;;;;452:5:4;438:10;:19;430:28;;;;;;-1:-1:-1;;;;;5541:28:2;;5533:78;;;;-1:-1:-1;;;5533:78:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5629:29:2;;;;;;:13;:29;;;;;;;;5621:63;;;;;-1:-1:-1;;;5621:63:2;;;;;;;;;;;;-1:-1:-1;;;5621:63:2;;;;;;;;;;;;;;;5725:13;;5703:40;;;-1:-1:-1;;;5703:40:2;;-1:-1:-1;;;;;5725:13:2;;;5703:40;;;;5725:13;5703:40;;;;;;;;:13;;;;;;:40;;;;;;;;;;;;;;;;;;:13;:40;;;5:2:-1;;;;30:1;27;20:12;5:2;5703:40:2;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5703:40:2;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5703:40:2;5695:94;;;;-1:-1:-1;;;5695:94:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5807:29:2;;;;;;:13;:29;;;;;;;;;5800:36;;-1:-1:-1;;5800:36:2;;;5852:20;;;;;;;;;;;;;;;;;5472:407;:::o;3250:474:4:-;452:5;;-1:-1:-1;;;;;452:5:4;438:10;:19;430:28;;;;;;-1:-1:-1;;;;;3328:19:4;;;;;;:9;:19;;;;;;;;3320:28;;;;;;-1:-1:-1;;;;;3358:19:4;;3380:5;3358:19;;;:9;:19;;;;;:27;;-1:-1:-1;;3358:27:4;;;3396:322;3417:14;:21;3413:25;;3396:322;;;3484:8;-1:-1:-1;;;;;3463:29:4;:14;3478:1;3463:17;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3463:17:4;:29;3459:249;;;3532:14;3547:21;;-1:-1:-1;;3547:25:4;;;3532:41;;;;;;;;;;;;;;;;3512:14;:17;;-1:-1:-1;;;;;3532:41:4;;;;3527:1;;3512:17;;;;;;;;;;;;;;;:61;;-1:-1:-1;;;;;;3512:61:4;-1:-1:-1;;;;;3512:61:4;;;;;;;;;;3591:14;:26;;-1:-1:-1;;3591:26:4;;;;;;:::i;:::-;-1:-1:-1;3640:30:4;;;-1:-1:-1;;;;;3640:30:4;;;;3664:5;3640:30;;;;;;;;;;;;;;;;;3688:5;;3459:249;3440:3;;3396:322;;318:27:2;;;-1:-1:-1;;;;;318:27:2;;:::o;633:163:6:-;452:5:4;;-1:-1:-1;;;;;452:5:4;438:10;:19;430:28;;;;;;722:23:6;;-1:-1:-1;;;;;722:15:6;;;:23;;;;;738:6;;722:23;;;;738:6;722:15;:23;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;760:29:6;;;;;;-1:-1:-1;;;;;760:29:6;;;;;;;;;;;;;;;;;;;633:163;;:::o;673:208:5:-;740:4;-1:-1:-1;;;;;760:26:5;;176:42;760:26;756:118;;;-1:-1:-1;;;;;;807:12:5;;;800:19;;756:118;853:5;-1:-1:-1;;;;;853:15:5;;869:4;853:21;;;;;;;;;;;;;-1:-1:-1;;;;;853:21:5;-1:-1:-1;;;;;853:21:5;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;853:21:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;853:21:5;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;853:21:5;;-1:-1:-1;756:118:5;673:208;;;;:::o;578:24:2:-;;;-1:-1:-1;;;578:24:2;;;;;:::o;3801:712::-;452:5:4;;-1:-1:-1;;;;;452:5:4;438:10;:19;430:28;;;;;;-1:-1:-1;;;;;3908:31:2;;3900:79;;;;-1:-1:-1;;;3900:79:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3997:27:2;;3989:71;;;;;-1:-1:-1;;;3989:71:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;4071:12;:28;;-1:-1:-1;;;;;4071:28:2;;;-1:-1:-1;;;;;;4071:28:2;;;;;;;4109:16;:55;;;;;;;;;;;;;;;4206:44;;;-1:-1:-1;;;4206:44:2;;-1:-1:-1;;;4206:44:2;;;;;;:16;;;;;:27;;:44;;;;;;;;;;;;;;:16;:44;;;5:2:-1;;;;30:1;27;20:12;5:2;4206:44:2;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4206:44:2;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4206:44:2;4175:13;:76;;-1:-1:-1;;;;;;4175:76:2;-1:-1:-1;;;;;4175:76:2;;;;;;4305:16;;:54;;;-1:-1:-1;;;4305:54:2;;;;;;;;;:16;;;;;:27;;:54;;;;;4206:44;;4305:54;;;;;;;:16;:54;;;5:2:-1;;;;30:1;27;20:12;5:2;4305:54:2;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4305:54:2;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4305:54:2;4261:16;:99;;-1:-1:-1;;;;;;4261:99:2;-1:-1:-1;;;;;4261:99:2;;;;;;4390:16;;:54;;;-1:-1:-1;;;4390:54:2;;;;;;;;;:16;;;;;:27;;:54;;;;;4305;;4390;;;;;;;:16;:54;;;5:2:-1;;;;30:1;27;20:12;5:2;4390:54:2;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4390:54:2;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4390:54:2;4370:17;:74;;-1:-1:-1;;;;;;4370:74:2;-1:-1:-1;;;;;4370:74:2;;;;;;4460:46;;;;;;;;;;;4390:54;4460:46;;;;;;;;;;;;;;;3801:712;;:::o;796:45::-;;;;;;;;;;;;;;;:::o;59:20:4:-;;;-1:-1:-1;;;;;59:20:4;;:::o;6447:1958:2:-;6665:4;6751:8;6747:324;;;6800:1;6783:14;:18;6775:27;;;;;;-1:-1:-1;;;;;6820:29:2;;176:42:5;6820:29:2;6816:244;;;6888:9;6875;:22;6867:82;;;;-1:-1:-1;;;6867:82:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6816:244;;;6992:9;:14;6984:76;;;;-1:-1:-1;;;6984:76:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7085:29:2;;176:42:5;7085:29:2;7081:202;;7175:59;;;-1:-1:-1;;;7175:59:2;;7197:10;7175:59;;;;7217:4;7175:59;;;;;;;;;;;;-1:-1:-1;;;;;7175:21:2;;;;;:59;;;;;;;;;;;;;;-1:-1:-1;7175:21:2;:59;;;5:2:-1;;;;30:1;27;20:12;5:2;7175:59:2;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7175:59:2;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;7175:59:2;7167:105;;;;-1:-1:-1;;;7167:105:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7354:16;;7293:19;;7315:56;;7333:8;;7343:9;;-1:-1:-1;;;;;7354:16:2;7315:17;:56::i;:::-;7293:78;;7403:1;7389:4;:11;:15;7381:55;;;;;-1:-1:-1;;;7381:55:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;7447:27;7477:84;7488:9;7499:21;7511:8;7499:11;:21::i;:::-;7522:22;7534:9;7522:11;:22::i;:::-;7546:14;7477:10;:84::i;:::-;7447:114;-1:-1:-1;7571:15:2;-1:-1:-1;;;;;7601:29:2;;176:42:5;7601:29:2;7597:290;;;7659:13;;:95;;-1:-1:-1;;;7659:95:2;;;;;;;;;;;;;;:13;:95;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7659:13:2;;;;:22;;7688:9;;7699:4;;7688:9;;7716:22;;7659:13;;:95;;;;;;;;;;;;;;;:13;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;7659:95:2;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7659:95:2;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7659:95:2;;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;7659:95:2;;-1:-1:-1;7597:290:2;;;7798:13;;:78;;-1:-1:-1;;;7798:78:2;;;;;;;;;;;;;;:13;:78;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7798:13:2;;;;:22;;7821:4;;7827:9;;7838:22;;7798:13;;;;:78;;;;;;;;;;;;;;:13;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;7798:78:2;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7798:78:2;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7798:78:2;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;7798:78:2;;-1:-1:-1;7597:290:2;7919:22;7905:10;:36;;7897:99;;;;-1:-1:-1;;;7897:99:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8011:30:2;;176:42:5;8011:30:2;8007:244;;;8057:44;;-1:-1:-1;;;;;8057:20:2;;;:44;;;;;8078:22;;8057:44;;;;8078:22;8057:20;:44;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8057:44:2;8007:244;;;8140:9;-1:-1:-1;;;;;8140:18:2;;8159:11;8172:22;8140:55;;;;;;;;;;;;;-1:-1:-1;;;;;8140:55:2;-1:-1:-1;;;;;8140:55:2;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8140:55:2;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8140:55:2;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;8140:55:2;8132:108;;;;-1:-1:-1;;;8132:108:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8266:111;;;-1:-1:-1;;;;;8266:111:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8279:10;;8266:111;;;;;;;;;;-1:-1:-1;8394:4:2;;6447:1958;-1:-1:-1;;;;;;;;;6447:1958:2:o;1106:419:5:-;1162:4;-1:-1:-1;;;;;1182:26:5;;176:42;1182:26;1178:51;;;-1:-1:-1;513:2:5;1210:19;;1178:51;-1:-1:-1;;;;;1283:24:5;;1262:18;1283:24;;;:8;:24;;;;;;1444:18;1440:47;;1471:5;-1:-1:-1;;;;;1471:14:5;;:16;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1471:16:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1471:16:5;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1471:16:5;;-1:-1:-1;1464:23:5;;-1:-1:-1;1464:23:5;1440:47;1505:13;-1:-1:-1;1106:419:5;;;;:::o;3338:614::-;3462:4;312:6;3490:9;:20;;3482:29;;;;;;312:6;3529:10;:21;;3521:30;;;;;;3581:11;3566;:26;3562:384;;466:2;3631:11;3617;:25;3616:43;;3608:52;;;;;;3746:9;3730:11;3716;:25;3709:2;:33;3708:47;262:6;3682:10;:22;:74;;;;;;3674:83;;;;3562:384;466:2;3811:11;3797;:25;3796:43;;3788:52;;;;;;3925:9;3909:11;3895;:25;3888:2;:33;262:6;3862:10;:22;:60;:72;;;;9573:194:2;9636:4;312:6:5;9660:3:2;:14;;9652:63;;;;-1:-1:-1;;;9652:63:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;298:5;9750:3;9740:6;;298:5;9734:12;9733:20;9732:28;;;;;;;9573:194;-1:-1:-1;;9573:194:2:o;1531:558:5:-;1633:4;312:6;1657;:17;;1649:26;;;;;;376:17;1693:16;;;1685:25;;;;;;1740:11;1725;:26;1721:362;;466:2;1790:11;1776;:25;1775:43;;1767:52;;;;;;262:6;1841:13;;;1863:25;;;1858:2;:31;1841:49;1840:63;;1721:362;466:2;1957:11;1943;:25;1942:43;;1934:52;;;;;;2058:11;2044;:25;2039:2;:31;262:6;2026:45;2017:4;2008:6;:13;2007:65;;;;187:9582:2;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;
Swarm Source
bzzr://6e9fe76a21f4783f2cd750ea62a5bddc516dfe312d2a4308b10c3234e71f5fe5
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in ETH
0
Multichain Portfolio | 33 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ 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.