More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 175 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Deposit Pool | 68044483 | 38 hrs ago | IN | 0 POL | 0.00719213 | ||||
Deposit Pool | 68044464 | 38 hrs ago | IN | 0 POL | 0.00690753 | ||||
Deposit Pool | 68044372 | 38 hrs ago | IN | 0 POL | 0.00735858 | ||||
Update KYC Addre... | 68032767 | 45 hrs ago | IN | 0 POL | 0.00302034 | ||||
Deposit Pool | 67996394 | 2 days ago | IN | 0 POL | 0.0076279 | ||||
Deposit Pool | 67949368 | 3 days ago | IN | 0 POL | 0.00622011 | ||||
Deposit Pool | 67908081 | 4 days ago | IN | 0 POL | 0.00837322 | ||||
Update KYC Addre... | 67907774 | 4 days ago | IN | 0 POL | 0.00159659 | ||||
Deposit Pool | 67775307 | 8 days ago | IN | 0 POL | 0.00703305 | ||||
Multi Deposit Po... | 67617791 | 12 days ago | IN | 0 POL | 0.02459824 | ||||
Update KYC Addre... | 67560464 | 14 days ago | IN | 0 POL | 0.0029922 | ||||
Deposit Pool | 67532761 | 14 days ago | IN | 0 POL | 0.02724031 | ||||
Deposit Pool | 67527667 | 14 days ago | IN | 0 POL | 0.04548308 | ||||
Deposit Pool | 67525259 | 14 days ago | IN | 0 POL | 0.02753767 | ||||
Multi Deposit Po... | 67525174 | 14 days ago | IN | 0 POL | 0.02320785 | ||||
Update KYC Addre... | 67482005 | 16 days ago | IN | 0 POL | 0.01010498 | ||||
Update KYC Addre... | 67201722 | 23 days ago | IN | 0 POL | 0.00154467 | ||||
Deposit Pool | 67091562 | 25 days ago | IN | 0 POL | 0.03503777 | ||||
Update KYC Addre... | 67087633 | 25 days ago | IN | 0 POL | 0.00434558 | ||||
Deposit Pool | 67051751 | 26 days ago | IN | 0 POL | 0.03657186 | ||||
Deposit Pool | 67016125 | 27 days ago | IN | 0 POL | 0.00903195 | ||||
Deposit Pool | 67003537 | 27 days ago | IN | 0 POL | 0.01077804 | ||||
Deposit Pool | 67003370 | 27 days ago | IN | 0 POL | 0.01178842 | ||||
Update KYC Addre... | 67002696 | 27 days ago | IN | 0 POL | 0.00231705 | ||||
Multi Deposit Po... | 66946003 | 29 days ago | IN | 0 POL | 0.03901585 |
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
GPROStaking
Compiler Version
v0.8.26+commit.8a97fa7a
Contract Source Code (Solidity Multiple files format)
// SPDX-License-Identifier: MIT /** * * @title: Staking Pools * @date: 26-November-2024 * @version: 2.6 * @author: IPMB Dev Team */ import "./IERC20.sol"; import "./Ownable.sol"; import "./IPriceFeed.sol"; pragma solidity ^0.8.19; contract GPROStaking is Ownable { // pool structure struct poolStr { uint256 poolID; string poolName; uint256 duration; uint256 amount; uint256 discount; uint256 lockDuration; uint256 poolMax; bool status; } // address pool data structure struct addressStr { uint256 amount; uint256 dateDeposit; uint256 epoch; uint256 goldProPrice; uint256 goldPrice; } // mappings declaration mapping (address => bool) public admin; mapping (address => bool) public authority; mapping (address => bool) public blacklist; mapping (uint256 => poolStr) public poolsRegistry; mapping (address => bool) public kycAddress; mapping (address => mapping (uint256 => uint256)) public addressCounter; mapping (address => mapping (uint256 => uint256[])) public addressArray; mapping (address => mapping (uint256 => mapping (uint256 => addressStr))) public addressDataNew; // variables declaration uint256 public nextpoolCounter; address public goldProAddress; IPriceFeed public priceFeedAddress; address public gemMintingContract; uint256 public blackPeriod; uint256 public minDiscount; uint256 public maxDiscount; // modifiers modifier onlyAdmin() { require(admin[msg.sender] == true, "Not allowed"); _; } modifier onlyAuthority() { require(admin[msg.sender] == true || authority[msg.sender] == true, "Not allowed"); _; } // events event poolRegistration(uint256 indexed poolId); event poolUpdate(uint256 indexed poolId); event poolDeposit(uint256 indexed poolId, address indexed addr, uint256 indexed index, uint256 amount); event poolWithdrawal(uint256 indexed poolId, address indexed addr, uint256 indexed index, uint256 amount); event blacklistWithdrawal(uint256 indexed poolId, address indexed addr, uint256 indexed index, uint256 amount); event poolResetAfterMinting(uint256 indexed poolId, address indexed addr, uint256 indexed index); event adminStatus(address indexed addr, bool indexed status); event authorityStatus(address indexed addr, bool indexed status); event blacklistStatus(address indexed addr, bool indexed status); event updateBlackPeriod(uint256 indexed bperiod); event kycStatus(address indexed addr, bool indexed status); // constructor constructor (address _goldProAddress, address _priceFeedAddress, uint256 _blackPeriod) { admin[msg.sender] = true; goldProAddress = _goldProAddress; nextpoolCounter = 1; priceFeedAddress = IPriceFeed(_priceFeedAddress); blackPeriod = _blackPeriod; minDiscount = 2; maxDiscount = 11; } // function to register a Pool function registerPool(string memory _poolName, uint256 _duration, uint256 _discount, uint256 _amount, uint256 _lockDuration, uint256 _poolMax) public onlyAdmin { require(_duration > 0 && _amount > 0 , "err"); require(_discount >= minDiscount && _discount <= maxDiscount, "Check min & max"); uint256 poolID = nextpoolCounter; poolsRegistry[poolID].poolID = poolID; poolsRegistry[poolID].poolName = _poolName; poolsRegistry[poolID].duration = _duration; poolsRegistry[poolID].amount = _amount; poolsRegistry[poolID].discount = _discount; poolsRegistry[poolID].lockDuration = _lockDuration; poolsRegistry[poolID].poolMax = _poolMax; poolsRegistry[poolID].status = true; emit poolRegistration(poolID); nextpoolCounter = nextpoolCounter + 1; } // function to deposit funds function depositPool(uint256 _poolID) public { require(kycAddress[msg.sender] == true, "No KYC"); require(blacklist[msg.sender] == false, "Address is blacklisted"); require(poolsRegistry[_poolID].status == true, "Pool is inactive"); require(poolsRegistry[_poolID].poolMax > addressArray[msg.sender][_poolID].length, "Already deposited max times"); require(IERC20(goldProAddress).balanceOf(msg.sender) >= poolsRegistry[_poolID].amount, "Your ERC20 balance is not enough"); (uint256 epoch, uint256 goldProPrice, uint256 goldPrice, , ,) = priceFeedAddress.getLatestPrices(); uint256 count = addressCounter[msg.sender][_poolID]; addressDataNew[msg.sender][_poolID][count].amount = poolsRegistry[_poolID].amount; addressDataNew[msg.sender][_poolID][count].dateDeposit = block.timestamp; addressDataNew[msg.sender][_poolID][count].epoch = epoch; addressDataNew[msg.sender][_poolID][count].goldProPrice = goldProPrice; addressDataNew[msg.sender][_poolID][count].goldPrice = goldPrice; addressArray[msg.sender][_poolID].push(count); addressCounter[msg.sender][_poolID]++; IERC20(goldProAddress).transferFrom(msg.sender, address(this), poolsRegistry[_poolID].amount); emit poolDeposit(_poolID, msg.sender, count, poolsRegistry[_poolID].amount); } // function to deposit multitimes function multiDepositPool(uint256[] memory _poolIDs, uint256[] memory _quantity) public { require(_poolIDs.length == _quantity.length , "Check lengths"); for (uint256 i = 0; i < _poolIDs.length; i++) { for (uint256 y = 0; y < _quantity[i]; y++) { depositPool(_poolIDs[i]); } } } // function to withdrawl deposit amounts function withdrawalPool(uint256 _poolID, uint256 _index) public { require(blacklist[msg.sender] == false, "Address is blacklisted"); require(addressDataNew[msg.sender][_poolID][_index].amount == poolsRegistry[_poolID].amount, "No deposit"); require(block.timestamp >= addressDataNew[msg.sender][_poolID][_index].dateDeposit + poolsRegistry[_poolID].lockDuration, "Time has not passed"); uint256 amount = addressDataNew[msg.sender][_poolID][_index].amount; addressDataNew[msg.sender][_poolID][_index].amount = 0; addressDataNew[msg.sender][_poolID][_index].dateDeposit = 0; addressDataNew[msg.sender][_poolID][_index].epoch = 0; addressDataNew[msg.sender][_poolID][_index].goldProPrice = 0; addressDataNew[msg.sender][_poolID][_index].goldPrice = 0; for (uint256 i = 0; i < addressArray[msg.sender][_poolID].length; i++) { if (_index == addressArray[msg.sender][_poolID][i]) { addressArray[msg.sender][_poolID][i] = addressArray[msg.sender][_poolID][addressArray[msg.sender][_poolID].length-1]; addressArray[msg.sender][_poolID].pop(); } } IERC20(goldProAddress).transfer(msg.sender, amount); emit poolWithdrawal(_poolID, msg.sender, _index, amount); } // function to update pool data function updatePoolData(uint256 _poolID, uint256 _poolMax, bool status) public onlyAdmin { poolsRegistry[_poolID].poolMax = _poolMax; poolsRegistry[_poolID].status = status; emit poolUpdate(_poolID); } // function to update address pool details after nft minting function updateAddressPool(address _address, uint256 _poolID, uint256 _index) public { require(msg.sender == gemMintingContract, "Not allowed"); addressDataNew[_address][_poolID][_index].amount = 0; addressDataNew[_address][_poolID][_index].dateDeposit = 0; addressDataNew[_address][_poolID][_index].epoch = 0; addressDataNew[_address][_poolID][_index].goldProPrice = 0; addressDataNew[_address][_poolID][_index].goldPrice = 0; emit poolResetAfterMinting(_poolID, _address, _index); } // function to add/remove an admin function addAdmin(address _address, bool _status) public onlyOwner { admin[_address] = _status; emit adminStatus(_address, _status); } // function to add/remove an authority function addAuthority(address _address, bool _status) public onlyOwner { authority[_address] = _status; emit authorityStatus(_address, _status); } // function to add/remove a wallet from blacklist function addBlacklist(address _address, bool _status) public onlyAuthority { blacklist[_address] = _status; emit blacklistStatus(_address, _status); } // function to set GEM minting contract function setGEMMintingContract(address _address) public onlyOwner { gemMintingContract = _address; } // function to update prices contract admin function updatePricesContract(address _address) public onlyOwner { priceFeedAddress = IPriceFeed(_address); } // function to approve GEM minting contract function approveGEMMintingContract(uint256 _amount) public onlyAdmin { IERC20(goldProAddress).approve(gemMintingContract, _amount); } // function to modify the time that the blacklist funds can be withdrawl function changeBlackPeriod(uint256 _blackPeriod) public onlyAdmin { blackPeriod = _blackPeriod; emit updateBlackPeriod(_blackPeriod); } // function to update address kyc status function updateKYCAddress(address _address, bool _status) public onlyAdmin { kycAddress[_address] = _status; emit kycStatus(_address, _status); } // function to update the min and max % of discounts for pool registration function updateMinMaxDiscounts(uint256 _min, uint256 _max) public onlyAdmin { minDiscount = _min; maxDiscount = _max; } // function to update kyc status for multiple addresses function updateKYCAddressBatch(address[] memory _address, bool[] memory _status) public onlyAdmin { for (uint256 i = 0; i < _address.length; i++) { kycAddress[_address[i]] = _status[i]; emit kycStatus(_address[i], _status[i]); } } // function to withdrawal blacklist amount for a blaclist address function blacklistAddressWithdrawalPool(address _receiver, address _address, uint256 _poolID, uint256 _index) public onlyOwner { require(blacklist[_address] == true, "Address is not blacklisted"); require(addressDataNew[_address][_poolID][_index].amount == poolsRegistry[_poolID].amount, "No deposit"); require(block.timestamp >= addressDataNew[_address][_poolID][_index].dateDeposit + blackPeriod, "Time has not passed"); uint256 amount = addressDataNew[_address][_poolID][_index].amount; addressDataNew[_address][_poolID][_index].amount = 0; addressDataNew[_address][_poolID][_index].dateDeposit = 0; addressDataNew[_address][_poolID][_index].epoch = 0; addressDataNew[_address][_poolID][_index].goldProPrice = 0; addressDataNew[_address][_poolID][_index].goldPrice = 0; IERC20(goldProAddress).transfer(_receiver, amount); emit blacklistWithdrawal(_poolID, _address, _index, amount); } // retrieve discount function getDiscount(uint256 _poolID, address _address, uint256 _index) public view returns (uint256) { if ((addressDataNew[_address][_poolID][_index].amount == poolsRegistry[_poolID].amount) && (block.timestamp >= addressDataNew[_address][_poolID][_index].dateDeposit + poolsRegistry[_poolID].duration)) { return poolsRegistry[_poolID].discount; } else { return 0; } } // retrieve pool info function poolInfo(uint256 _poolID) public view returns (string memory, uint256, uint256, uint256, uint256, uint256, bool) { return (poolsRegistry[_poolID].poolName, poolsRegistry[_poolID].duration, poolsRegistry[_poolID].amount, poolsRegistry[_poolID].discount, poolsRegistry[_poolID].lockDuration, poolsRegistry[_poolID].poolMax, poolsRegistry[_poolID].status); } // retrieve pool price function poolPrice(uint256 _poolID) public view returns (uint256) { return (poolsRegistry[_poolID].amount); } // retrieve pool status function poolStatus(uint256 _poolID) public view returns (bool) { return (poolsRegistry[_poolID].status); } // retrieve pool discount function poolDiscount(uint256 _poolID) public view returns (uint256) { return (poolsRegistry[_poolID].discount); } // retrieve deposit amount function poolAmountPerAddress(uint256 _poolID, address _address, uint256 _index) public view returns (uint256) { return (addressDataNew[_address][_poolID][_index].amount); } // retrieve deposit amount function poolDataPerAddress(uint256 _poolID, address _address, uint256 _index) public view returns (uint256, uint256, uint256, uint256, uint256) { return (addressDataNew[_address][_poolID][_index].amount, addressDataNew[_address][_poolID][_index].dateDeposit, addressDataNew[_address][_poolID][_index].epoch, addressDataNew[_address][_poolID][_index].goldProPrice, addressDataNew[_address][_poolID][_index].goldPrice); } // retrieve deposit date function poolDepositDatePerAddress(uint256 _poolID, address _address, uint256 _index) public view returns (uint256) { return (addressDataNew[_address][_poolID][_index].dateDeposit); } // retrieve goldPro price at pool deposit function poolGPROPricePerAddress(uint256 _poolID, address _address, uint256 _index) public view returns (uint256) { return (addressDataNew[_address][_poolID][_index].goldProPrice); } // retrieve gold price at pool deposit function poolGoldPricePerAddress(uint256 _poolID, address _address, uint256 _index) public view returns (uint256) { return (addressDataNew[_address][_poolID][_index].goldPrice); } // retrieve epoch at pool deposit function poolEpochPerAddress(uint256 _poolID, address _address, uint256 _index) public view returns (uint256) { return (addressDataNew[_address][_poolID][_index].epoch); } // retrieve KYC address status function retrieveKYCStatus(address _address) public view returns (bool) { return (kycAddress[_address]); } // retrieve the deposit indices per address per pool function retrieveAddressArrayPool(address _address, uint256 _pool) public view returns (uint256[] memory) { return (addressArray[_address][_pool]); } // retrieve counter per address per pool function retrieveAddressCounterPool(address _address, uint256 _pool) public view returns (uint256) { return (addressCounter[_address][_pool]); } // retrieve blacklist status function retrieveBlackListStatus(address _address) public view returns (bool) { return (blacklist[_address]); } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.5; /* * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with GSN meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes memory) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } }
// SPDX-License-Identifier: MIT /** * * @title IERC20 */ pragma solidity ^0.8.5; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `to`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address to, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `from` to `to` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom(address from, address to, uint256 amount) external returns (bool); }
// SPDX-License-Identifier: MIT /** * * @title Price Feed Interface */ pragma solidity ^0.8.5; interface IPriceFeed { function getLatestPrices() external view returns (uint256, uint256, uint256, uint256, bytes32, uint256); function getEpochPrices(uint256 _epoch) external view returns (uint256, uint256, uint256, bytes32, uint256); function getEpochDataSetHash(uint256 _epoch) external view returns (bytes32, bytes32); }
// SPDX-License-Identifier: MIT // File: @openzeppelin/contracts/access/Ownable.sol pragma solidity ^0.8.5; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ import "./Context.sol"; abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor () internal { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_goldProAddress","type":"address"},{"internalType":"address","name":"_priceFeedAddress","type":"address"},{"internalType":"uint256","name":"_blackPeriod","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"addr","type":"address"},{"indexed":true,"internalType":"bool","name":"status","type":"bool"}],"name":"adminStatus","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"addr","type":"address"},{"indexed":true,"internalType":"bool","name":"status","type":"bool"}],"name":"authorityStatus","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"addr","type":"address"},{"indexed":true,"internalType":"bool","name":"status","type":"bool"}],"name":"blacklistStatus","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"poolId","type":"uint256"},{"indexed":true,"internalType":"address","name":"addr","type":"address"},{"indexed":true,"internalType":"uint256","name":"index","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"blacklistWithdrawal","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"addr","type":"address"},{"indexed":true,"internalType":"bool","name":"status","type":"bool"}],"name":"kycStatus","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"poolId","type":"uint256"},{"indexed":true,"internalType":"address","name":"addr","type":"address"},{"indexed":true,"internalType":"uint256","name":"index","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"poolDeposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"poolId","type":"uint256"}],"name":"poolRegistration","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"poolId","type":"uint256"},{"indexed":true,"internalType":"address","name":"addr","type":"address"},{"indexed":true,"internalType":"uint256","name":"index","type":"uint256"}],"name":"poolResetAfterMinting","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"poolId","type":"uint256"}],"name":"poolUpdate","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"poolId","type":"uint256"},{"indexed":true,"internalType":"address","name":"addr","type":"address"},{"indexed":true,"internalType":"uint256","name":"index","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"poolWithdrawal","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"bperiod","type":"uint256"}],"name":"updateBlackPeriod","type":"event"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"addAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"addAuthority","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"addBlacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"addressArray","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"addressCounter","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"addressDataNew","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"dateDeposit","type":"uint256"},{"internalType":"uint256","name":"epoch","type":"uint256"},{"internalType":"uint256","name":"goldProPrice","type":"uint256"},{"internalType":"uint256","name":"goldPrice","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"admin","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"approveGEMMintingContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"authority","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"blackPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"blacklist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_receiver","type":"address"},{"internalType":"address","name":"_address","type":"address"},{"internalType":"uint256","name":"_poolID","type":"uint256"},{"internalType":"uint256","name":"_index","type":"uint256"}],"name":"blacklistAddressWithdrawalPool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_blackPeriod","type":"uint256"}],"name":"changeBlackPeriod","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_poolID","type":"uint256"}],"name":"depositPool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"gemMintingContract","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_poolID","type":"uint256"},{"internalType":"address","name":"_address","type":"address"},{"internalType":"uint256","name":"_index","type":"uint256"}],"name":"getDiscount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"goldProAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"kycAddress","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxDiscount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minDiscount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"_poolIDs","type":"uint256[]"},{"internalType":"uint256[]","name":"_quantity","type":"uint256[]"}],"name":"multiDepositPool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"nextpoolCounter","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_poolID","type":"uint256"},{"internalType":"address","name":"_address","type":"address"},{"internalType":"uint256","name":"_index","type":"uint256"}],"name":"poolAmountPerAddress","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_poolID","type":"uint256"},{"internalType":"address","name":"_address","type":"address"},{"internalType":"uint256","name":"_index","type":"uint256"}],"name":"poolDataPerAddress","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_poolID","type":"uint256"},{"internalType":"address","name":"_address","type":"address"},{"internalType":"uint256","name":"_index","type":"uint256"}],"name":"poolDepositDatePerAddress","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_poolID","type":"uint256"}],"name":"poolDiscount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_poolID","type":"uint256"},{"internalType":"address","name":"_address","type":"address"},{"internalType":"uint256","name":"_index","type":"uint256"}],"name":"poolEpochPerAddress","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_poolID","type":"uint256"},{"internalType":"address","name":"_address","type":"address"},{"internalType":"uint256","name":"_index","type":"uint256"}],"name":"poolGPROPricePerAddress","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_poolID","type":"uint256"},{"internalType":"address","name":"_address","type":"address"},{"internalType":"uint256","name":"_index","type":"uint256"}],"name":"poolGoldPricePerAddress","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_poolID","type":"uint256"}],"name":"poolInfo","outputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_poolID","type":"uint256"}],"name":"poolPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_poolID","type":"uint256"}],"name":"poolStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"poolsRegistry","outputs":[{"internalType":"uint256","name":"poolID","type":"uint256"},{"internalType":"string","name":"poolName","type":"string"},{"internalType":"uint256","name":"duration","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"discount","type":"uint256"},{"internalType":"uint256","name":"lockDuration","type":"uint256"},{"internalType":"uint256","name":"poolMax","type":"uint256"},{"internalType":"bool","name":"status","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"priceFeedAddress","outputs":[{"internalType":"contract IPriceFeed","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"_poolName","type":"string"},{"internalType":"uint256","name":"_duration","type":"uint256"},{"internalType":"uint256","name":"_discount","type":"uint256"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"uint256","name":"_lockDuration","type":"uint256"},{"internalType":"uint256","name":"_poolMax","type":"uint256"}],"name":"registerPool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"uint256","name":"_pool","type":"uint256"}],"name":"retrieveAddressArrayPool","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"uint256","name":"_pool","type":"uint256"}],"name":"retrieveAddressCounterPool","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"retrieveBlackListStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"retrieveKYCStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"setGEMMintingContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"uint256","name":"_poolID","type":"uint256"},{"internalType":"uint256","name":"_index","type":"uint256"}],"name":"updateAddressPool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"updateKYCAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_address","type":"address[]"},{"internalType":"bool[]","name":"_status","type":"bool[]"}],"name":"updateKYCAddressBatch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_min","type":"uint256"},{"internalType":"uint256","name":"_max","type":"uint256"}],"name":"updateMinMaxDiscounts","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_poolID","type":"uint256"},{"internalType":"uint256","name":"_poolMax","type":"uint256"},{"internalType":"bool","name":"status","type":"bool"}],"name":"updatePoolData","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"updatePricesContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_poolID","type":"uint256"},{"internalType":"uint256","name":"_index","type":"uint256"}],"name":"withdrawalPool","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
608060405234801561000f575f80fd5b50604051612b54380380612b5483398101604081905261002e916100e9565b5f80546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350335f908152600160208190526040909120805460ff191682179055600a80546001600160a01b039586166001600160a01b031991821617909155600991909155600b8054939094169216919091178255600d556002600e55600f55610122565b80516001600160a01b03811681146100e4575f80fd5b919050565b5f805f606084860312156100fb575f80fd5b610104846100ce565b9250610112602085016100ce565b9150604084015190509250925092565b612a258061012f5f395ff3fe608060405234801561000f575f80fd5b50600436106102ad575f3560e01c8063892950d11161016c578063bf759150116100d5578063e6b284491161008f578063e6b284491461080f578063e6ee309214610822578063ee60bd4a14610835578063f2fde38b14610874578063f665d10b14610887578063f7fbff8f146108ac578063f9f92be4146108bf575f80fd5b8063bf7591501461070d578063c2d148ec14610738578063c4b05eb31461074b578063cbc6fda71461078d578063d52e4f06146107da578063e0abca0b146107fc575f80fd5b80639ace5699116101265780639ace5699146106695780639b056afb14610693578063a4230bd51461069c578063acf513c1146106af578063b8214a37146106c2578063b8b89e1b14610704575f80fd5b8063892950d1146105dd5780638d64bc53146105f05780638da5cb5b14610632578063914b9a531461063a578063976ca7d314610643578063998c234714610656575f80fd5b8063401d65df1161021957806360419bda116101d357806360419bda1461053157806363a846f8146105585780636473eec61461057a5780636d2834821461058d5780637104dd03146105a0578063715018a6146105c25780638536ef37146105ca575f80fd5b8063401d65df1461047557806342cf0309146104885780634347d052146104a8578063530c91e0146104b157806357fdb107146104f35780635a21eeae1461051e575f80fd5b80631e275daf1161026a5780631e275daf146103835780632344094414610396578063267abd92146103a957806337b80a70146103cb57806338559d72146103de578063388b7661146103f1575f80fd5b80630244cd8a146102b15780630558d721146102e7578063141c21c8146102fc5780631526fe271461030f57806317ca2e41146103355780631a47bd9314610348575b5f80fd5b6102d46102bf366004612116565b5f908152600460208190526040909120015490565b6040519081526020015b60405180910390f35b6102fa6102f5366004612116565b6108e1565b005b6102fa61030a366004612148565b610950565b61032261031d366004612116565b6109a1565b6040516102de979695949392919061218f565b6102fa6103433660046121e4565b610a91565b610373610356366004612148565b6001600160a01b03165f9081526003602052604090205460ff1690565b60405190151581526020016102de565b6102fa6103913660046121e4565b610b36565b6102fa6103a4366004612116565b610bbd565b6103736103b7366004612148565b60056020525f908152604090205460ff1681565b6102d46103d9366004612219565b611190565b6102d46103ec36600461224c565b611241565b61044d6103ff366004612219565b6001600160a01b03919091165f908152600860209081526040808320948352938152838220928252919091522080546001820154600283015460038401546004909401549294919390929091565b604080519586526020860194909452928401919091526060830152608082015260a0016102de565b6102fa610483366004612274565b61126b565b61049b61049636600461224c565b611559565b6040516102de9190612294565b6102d4600d5481565b6102d46104bf366004612219565b6001600160a01b03919091165f90815260086020908152604080832094835293815283822092825291909152206003015490565b600c54610506906001600160a01b031681565b6040516001600160a01b0390911681526020016102de565b600a54610506906001600160a01b031681565b61054461053f366004612116565b6115cb565b6040516102de9897969594939291906122d6565b610373610566366004612148565b60016020525f908152604090205460ff1681565b6102fa610588366004612324565b611697565b6102fa61059b366004612354565b611739565b6103736105ae366004612148565b60026020525f908152604090205460ff1681565b6102fa61197b565b6102fa6105d8366004612116565b6119f2565b6102d46105eb366004612324565b611aa0565b6102d46105fe366004612219565b6001600160a01b03919091165f90815260086020908152604080832094835293815283822092825291909152206002015490565b610506611ad6565b6102d460095481565b6102fa610651366004612274565b611ae4565b6102fa610664366004612393565b611b23565b6102d461067736600461224c565b600660209081525f928352604080842090915290825290205481565b6102d4600e5481565b6102fa6106aa3660046121e4565b611ba6565b6102fa6106bd36600461240d565b611c28565b6102d46106d0366004612219565b6001600160a01b03919091165f90815260086020908152604080832094835293815283822092825291909152206004015490565b6102d4600f5481565b61037361071b366004612148565b6001600160a01b03165f9081526005602052604090205460ff1690565b6102fa610746366004612148565b611d91565b6102d4610759366004612219565b6001600160a01b03919091165f90815260086020908152604080832094835293815283822092825291909152206001015490565b61044d61079b366004612324565b600860209081525f9384526040808520825292845282842090528252902080546001820154600283015460038401546004909401549293919290919085565b6102d46107e8366004612116565b5f9081526004602052604090206003015490565b600b54610506906001600160a01b031681565b6102fa61081d3660046121e4565b611de2565b6102fa61083036600461254e565b611e64565b6102d4610843366004612219565b6001600160a01b03919091165f90815260086020908152604080832094835293815283822092825291909152205490565b6102fa610882366004612148565b611f0b565b610373610895366004612116565b5f9081526004602052604090206007015460ff1690565b6102fa6108ba366004612615565b611ff8565b6103736108cd366004612148565b60036020525f908152604090205460ff1681565b335f9081526001602081905260409091205460ff1615151461091e5760405162461bcd60e51b8152600401610915906126cc565b60405180910390fd5b600d81905560405181907f455bd98bd2d908608322751f3b7614208dcf5b93ab9b6eb1ce22dfa20d002713905f90a250565b33610959611ad6565b6001600160a01b03161461097f5760405162461bcd60e51b8152600401610915906126f1565b600b80546001600160a01b0319166001600160a01b0392909216919091179055565b5f818152600460208190526040822060028101546003820154928201546005830154600684015460078501546001909501805460609897889788978897889788979295919390929160ff9091169087906109fa90612726565b80601f0160208091040260200160405190810160405280929190818152602001828054610a2690612726565b8015610a715780601f10610a4857610100808354040283529160200191610a71565b820191905f5260205f20905b815481529060010190602001808311610a5457829003601f168201915b505050505096509650965096509650965096509650919395979092949650565b335f9081526001602081905260409091205460ff1615151480610ac75750335f9081526002602052604090205460ff1615156001145b610ae35760405162461bcd60e51b8152600401610915906126cc565b6001600160a01b0382165f81815260036020526040808220805460ff191685151590811790915590519092917f1036c1e68dffa49bd561f2edfd63a11079114fb320a2fbef76709f0536ec6ab491a35050565b335f9081526001602081905260409091205460ff16151514610b6a5760405162461bcd60e51b8152600401610915906126cc565b6001600160a01b0382165f81815260056020526040808220805460ff191685151590811790915590519092917facc96907734141e646498435b03deb52adc4805c94c610b604114bc3eea9a4c891a35050565b335f9081526005602052604090205460ff161515600114610c095760405162461bcd60e51b81526020600482015260066024820152654e6f204b594360d01b6044820152606401610915565b335f9081526003602052604090205460ff1615610c385760405162461bcd60e51b81526004016109159061275e565b5f8181526004602052604090206007015460ff161515600114610c905760405162461bcd60e51b815260206004820152601060248201526f506f6f6c20697320696e61637469766560801b6044820152606401610915565b335f90815260076020908152604080832084845282528083205460049092529091206006015411610d035760405162461bcd60e51b815260206004820152601b60248201527f416c7265616479206465706f7369746564206d61782074696d657300000000006044820152606401610915565b5f8181526004602081905260409182902060030154600a5492516370a0823160e01b81523392810192909252916001600160a01b0316906370a0823190602401602060405180830381865afa158015610d5e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d82919061278e565b1015610dd05760405162461bcd60e51b815260206004820181905260248201527f596f75722045524332302062616c616e6365206973206e6f7420656e6f7567686044820152606401610915565b5f805f600b5f9054906101000a90046001600160a01b03166001600160a01b031663ff61ba5c6040518163ffffffff1660e01b815260040160c060405180830381865afa158015610e23573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e4791906127a5565b5050509250925092505f60065f336001600160a01b03166001600160a01b031681526020019081526020015f205f8681526020019081526020015f2054905060045f8681526020019081526020015f206003015460085f336001600160a01b03166001600160a01b031681526020019081526020015f205f8781526020019081526020015f205f8381526020019081526020015f205f01819055504260085f336001600160a01b03166001600160a01b031681526020019081526020015f205f8781526020019081526020015f205f8381526020019081526020015f20600101819055508360085f336001600160a01b03166001600160a01b031681526020019081526020015f205f8781526020019081526020015f205f8381526020019081526020015f20600201819055508260085f336001600160a01b03166001600160a01b031681526020019081526020015f205f8781526020019081526020015f205f8381526020019081526020015f20600301819055508160085f336001600160a01b03166001600160a01b031681526020019081526020015f205f8781526020019081526020015f205f8381526020019081526020015f206004018190555060075f336001600160a01b03166001600160a01b031681526020019081526020015f205f8681526020019081526020015f2081908060018154018082558091505060019003905f5260205f20015f909190919091505560065f336001600160a01b03166001600160a01b031681526020019081526020015f205f8681526020019081526020015f205f81548092919061109e906127ff565b9091555050600a545f8681526004602081815260408084206003015481516323b872dd60e01b815233948101949094523060248501526044840152516001600160a01b03909416936323b872dd9360648085019483900301908290875af115801561110b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061112f9190612817565b5080336001600160a01b0316867f792dc12b7630a6a6b000ca94502fa0138161ffe9302a6493a96ed1b96af6d60960045f8a81526020019081526020015f206003015460405161118191815260200190565b60405180910390a45050505050565b5f838152600460209081526040808320600301546001600160a01b038616845260088352818420878552835281842085855290925282205414801561121a57505f848152600460209081526040808320600201546001600160a01b0387168452600883528184208885528352818420868552909252909120600101546112169190612832565b4210155b1561123757505f838152600460208190526040909120015461123a565b505f5b9392505050565b6001600160a01b0382165f9081526006602090815260408083208484529091529020545b92915050565b335f9081526003602052604090205460ff161561129a5760405162461bcd60e51b81526004016109159061275e565b5f8281526004602090815260408083206003015433845260088352818420868552835281842085855290925290912054146112e75760405162461bcd60e51b815260040161091590612845565b5f82815260046020908152604080832060050154338452600883528184208685528352818420858552909252909120600101546113249190612832565b4210156113435760405162461bcd60e51b815260040161091590612869565b335f9081526008602090815260408083208584528252808320848452909152812080548282556001820183905560028201839055600382018390556004909101829055905b335f90815260076020908152604080832087845290915290205481101561149b57335f90815260076020908152604080832087845290915290208054829081106113d4576113d4612896565b905f5260205f200154830361149357335f9081526007602090815260408083208784529091529020805461140a906001906128aa565b8154811061141a5761141a612896565b5f918252602080832090910154338352600782526040808420888552909252912080548390811061144d5761144d612896565b5f9182526020808320909101929092553381526007825260408082208783529092522080548061147f5761147f6128bd565b600190038181905f5260205f20015f905590555b600101611388565b50600a5460405163a9059cbb60e01b81526001600160a01b039091169063a9059cbb906114ce90339085906004016128d1565b6020604051808303815f875af11580156114ea573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061150e9190612817565b5081336001600160a01b0316847fda69eb80482fd8e6c337a1ca9d6de692a2c2b93bc40140b739915b9893857b548460405161154c91815260200190565b60405180910390a4505050565b6001600160a01b0382165f9081526007602090815260408083208484528252918290208054835181840281018401909452808452606093928301828280156115be57602002820191905f5260205f20905b8154815260200190600101908083116115aa575b5050505050905092915050565b60046020525f9081526040902080546001820180549192916115ec90612726565b80601f016020809104026020016040519081016040528092919081815260200182805461161890612726565b80156116635780601f1061163a57610100808354040283529160200191611663565b820191905f5260205f20905b81548152906001019060200180831161164657829003601f168201915b5050506002840154600385015460048601546005870154600688015460079098015496979396929550909350919060ff1688565b600c546001600160a01b031633146116c15760405162461bcd60e51b8152600401610915906126cc565b6001600160a01b0383165f81815260086020908152604080832086845282528083208584529091528082208281556001810183905560028101839055600381018390556004018290555183929185917f32b90fd018ae2a1ec15120ce7bbf7b170888d820027c1b0ed237d2a393cad27a9190a4505050565b33611742611ad6565b6001600160a01b0316146117685760405162461bcd60e51b8152600401610915906126f1565b6001600160a01b0383165f9081526003602052604090205460ff1615156001146117d45760405162461bcd60e51b815260206004820152601a60248201527f41646472657373206973206e6f7420626c61636b6c69737465640000000000006044820152606401610915565b5f828152600460209081526040808320600301546001600160a01b0387168452600883528184208685528352818420858552909252909120541461182a5760405162461bcd60e51b815260040161091590612845565b600d546001600160a01b0384165f90815260086020908152604080832086845282528083208584529091529020600101546118659190612832565b4210156118845760405162461bcd60e51b815260040161091590612869565b6001600160a01b038381165f90815260086020908152604080832086845282528083208584529091528082208054838255600182018490556002820184905560038201849055600491820193909355600a54915163a9059cbb60e01b81529293919091169163a9059cbb916118fd9189918691016128d1565b6020604051808303815f875af1158015611919573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061193d9190612817565b5081846001600160a01b0316847f5d64492d7bf60171a1d18557f8ce1ff39f332683ca7f9e51066b3b89185fec7c8460405161118191815260200190565b33611984611ad6565b6001600160a01b0316146119aa5760405162461bcd60e51b8152600401610915906126f1565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b335f9081526001602081905260409091205460ff16151514611a265760405162461bcd60e51b8152600401610915906126cc565b600a54600c5460405163095ea7b360e01b81526001600160a01b039283169263095ea7b392611a5c9291169085906004016128d1565b6020604051808303815f875af1158015611a78573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a9c9190612817565b5050565b6007602052825f5260405f20602052815f5260405f208181548110611ac3575f80fd5b905f5260205f20015f9250925050505481565b5f546001600160a01b031690565b335f9081526001602081905260409091205460ff16151514611b185760405162461bcd60e51b8152600401610915906126cc565b600e91909155600f55565b335f9081526001602081905260409091205460ff16151514611b575760405162461bcd60e51b8152600401610915906126cc565b5f8381526004602052604080822060068101859055600701805460ff19168415151790555184917f5ea024fc07ed117607d3f6225be684cd813fab5371028b9dba87f793b1333b8991a2505050565b33611baf611ad6565b6001600160a01b031614611bd55760405162461bcd60e51b8152600401610915906126f1565b6001600160a01b0382165f81815260016020526040808220805460ff191685151590811790915590519092917f31e432c8a0b8a5d799c926dfc9357612dec1d1171af2b563beb34e54fc57196091a35050565b335f9081526001602081905260409091205460ff16151514611c5c5760405162461bcd60e51b8152600401610915906126cc565b5f85118015611c6a57505f83115b611c9c5760405162461bcd60e51b815260206004820152600360248201526232b93960e91b6044820152606401610915565b600e548410158015611cb05750600f548411155b611cee5760405162461bcd60e51b815260206004820152600f60248201526e086d0cac6d640dad2dc404c40dac2f608b1b6044820152606401610915565b6009545f818152600460205260409020818155600101611d0e8882612935565b505f818152600460208190526040808320600281018a90556003810188905591820188905560058201869055600682018590556007909101805460ff191660011790555182917f3eab7cd7b91b05da9ef283cab6a769878feb6ae17b982bc7aef8c6c9487e5dbb91a2600954611d85906001612832565b60095550505050505050565b33611d9a611ad6565b6001600160a01b031614611dc05760405162461bcd60e51b8152600401610915906126f1565b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b33611deb611ad6565b6001600160a01b031614611e115760405162461bcd60e51b8152600401610915906126f1565b6001600160a01b0382165f81815260026020526040808220805460ff191685151590811790915590519092917ff58b84d12f1d006909ec67d87c36fe211d74a3dff077d1df5c158bd6fd0e4fab91a35050565b8051825114611ea55760405162461bcd60e51b815260206004820152600d60248201526c436865636b206c656e6774687360981b6044820152606401610915565b5f5b8251811015611f06575f5b828281518110611ec457611ec4612896565b6020026020010151811015611efd57611ef5848381518110611ee857611ee8612896565b6020026020010151610bbd565b600101611eb2565b50600101611ea7565b505050565b33611f14611ad6565b6001600160a01b031614611f3a5760405162461bcd60e51b8152600401610915906126f1565b6001600160a01b038116611f9f5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610915565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b335f9081526001602081905260409091205460ff1615151461202c5760405162461bcd60e51b8152600401610915906126cc565b5f5b8251811015611f065781818151811061204957612049612896565b602002602001015160055f85848151811061206657612066612896565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f205f6101000a81548160ff0219169083151502179055508181815181106120b5576120b5612896565b602002602001015115158382815181106120d1576120d1612896565b60200260200101516001600160a01b03167facc96907734141e646498435b03deb52adc4805c94c610b604114bc3eea9a4c860405160405180910390a360010161202e565b5f60208284031215612126575f80fd5b5035919050565b80356001600160a01b0381168114612143575f80fd5b919050565b5f60208284031215612158575f80fd5b61123a8261212d565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b60e081525f6121a160e083018a612161565b60208301989098525060408101959095526060850193909352608084019190915260a0830152151560c090910152919050565b80151581146121e1575f80fd5b50565b5f80604083850312156121f5575f80fd5b6121fe8361212d565b9150602083013561220e816121d4565b809150509250929050565b5f805f6060848603121561222b575f80fd5b8335925061223b6020850161212d565b929592945050506040919091013590565b5f806040838503121561225d575f80fd5b6122668361212d565b946020939093013593505050565b5f8060408385031215612285575f80fd5b50508035926020909101359150565b602080825282518282018190525f918401906040840190835b818110156122cb5783518352602093840193909201916001016122ad565b509095945050505050565b88815261010060208201525f6122f061010083018a612161565b6040830198909852506060810195909552608085019390935260a084019190915260c0830152151560e09091015292915050565b5f805f60608486031215612336575f80fd5b61233f8461212d565b95602085013595506040909401359392505050565b5f805f8060808587031215612367575f80fd5b6123708561212d565b935061237e6020860161212d565b93969395505050506040820135916060013590565b5f805f606084860312156123a5575f80fd5b833592506020840135915060408401356123be816121d4565b809150509250925092565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f191681016001600160401b0381118282101715612405576124056123c9565b604052919050565b5f805f805f8060c08789031215612422575f80fd5b86356001600160401b03811115612437575f80fd5b8701601f81018913612447575f80fd5b80356001600160401b03811115612460576124606123c9565b612473601f8201601f19166020016123dd565b8181528a6020838501011115612487575f80fd5b816020840160208301375f60209282018301529a908901359950604089013598606081013598506080810135975060a0013595509350505050565b5f6001600160401b038211156124da576124da6123c9565b5060051b60200190565b5f82601f8301126124f3575f80fd5b8135612506612501826124c2565b6123dd565b8082825260208201915060208360051b860101925085831115612527575f80fd5b602085015b8381101561254457803583526020928301920161252c565b5095945050505050565b5f806040838503121561255f575f80fd5b82356001600160401b03811115612574575f80fd5b612580858286016124e4565b92505060208301356001600160401b0381111561259b575f80fd5b6125a7858286016124e4565b9150509250929050565b5f82601f8301126125c0575f80fd5b81356125ce612501826124c2565b8082825260208201915060208360051b8601019250858311156125ef575f80fd5b602085015b83811015612544578035612607816121d4565b8352602092830192016125f4565b5f8060408385031215612626575f80fd5b82356001600160401b0381111561263b575f80fd5b8301601f8101851361264b575f80fd5b8035612659612501826124c2565b8082825260208201915060208360051b85010192508783111561267a575f80fd5b6020840193505b828410156126a3576126928461212d565b825260209384019390910190612681565b945050505060208301356001600160401b038111156126c0575f80fd5b6125a7858286016125b1565b6020808252600b908201526a139bdd08185b1b1bddd95960aa1b604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600181811c9082168061273a57607f821691505b60208210810361275857634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252601690820152751059191c995cdcc81a5cc8189b1858dadb1a5cdd195960521b604082015260600190565b5f6020828403121561279e575f80fd5b5051919050565b5f805f805f8060c087890312156127ba575f80fd5b50508451602086015160408701516060880151608089015160a090990151939a929950909790965094509092509050565b634e487b7160e01b5f52601160045260245ffd5b5f60018201612810576128106127eb565b5060010190565b5f60208284031215612827575f80fd5b815161123a816121d4565b80820180821115611265576112656127eb565b6020808252600a9082015269139bc819195c1bdcda5d60b21b604082015260600190565b602080825260139082015272151a5b59481a185cc81b9bdd081c185cdcd959606a1b604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b81810381811115611265576112656127eb565b634e487b7160e01b5f52603160045260245ffd5b6001600160a01b03929092168252602082015260400190565b601f821115611f0657805f5260205f20601f840160051c8101602085101561290f5750805b601f840160051c820191505b8181101561292e575f815560010161291b565b5050505050565b81516001600160401b0381111561294e5761294e6123c9565b6129628161295c8454612726565b846128ea565b6020601f821160018114612994575f831561297d5750848201515b5f19600385901b1c1916600184901b17845561292e565b5f84815260208120601f198516915b828110156129c357878501518255602094850194600190920191016129a3565b50848210156129e057868401515f19600387901b60f8161c191681555b50505050600190811b0190555056fea2646970667358221220310c122ee83dba0faec67462508aba3357b9e82ed25a04c70878fdbac17ce6a564736f6c634300081a0033000000000000000000000000ace7eb41d6bad44907cda84a122f052c74cb782600000000000000000000000082ca437d8cf216ffacea208c3d8b04f0bfdd922d0000000000000000000000000000000000000000000000000000000000127500
Deployed Bytecode
0x608060405234801561000f575f80fd5b50600436106102ad575f3560e01c8063892950d11161016c578063bf759150116100d5578063e6b284491161008f578063e6b284491461080f578063e6ee309214610822578063ee60bd4a14610835578063f2fde38b14610874578063f665d10b14610887578063f7fbff8f146108ac578063f9f92be4146108bf575f80fd5b8063bf7591501461070d578063c2d148ec14610738578063c4b05eb31461074b578063cbc6fda71461078d578063d52e4f06146107da578063e0abca0b146107fc575f80fd5b80639ace5699116101265780639ace5699146106695780639b056afb14610693578063a4230bd51461069c578063acf513c1146106af578063b8214a37146106c2578063b8b89e1b14610704575f80fd5b8063892950d1146105dd5780638d64bc53146105f05780638da5cb5b14610632578063914b9a531461063a578063976ca7d314610643578063998c234714610656575f80fd5b8063401d65df1161021957806360419bda116101d357806360419bda1461053157806363a846f8146105585780636473eec61461057a5780636d2834821461058d5780637104dd03146105a0578063715018a6146105c25780638536ef37146105ca575f80fd5b8063401d65df1461047557806342cf0309146104885780634347d052146104a8578063530c91e0146104b157806357fdb107146104f35780635a21eeae1461051e575f80fd5b80631e275daf1161026a5780631e275daf146103835780632344094414610396578063267abd92146103a957806337b80a70146103cb57806338559d72146103de578063388b7661146103f1575f80fd5b80630244cd8a146102b15780630558d721146102e7578063141c21c8146102fc5780631526fe271461030f57806317ca2e41146103355780631a47bd9314610348575b5f80fd5b6102d46102bf366004612116565b5f908152600460208190526040909120015490565b6040519081526020015b60405180910390f35b6102fa6102f5366004612116565b6108e1565b005b6102fa61030a366004612148565b610950565b61032261031d366004612116565b6109a1565b6040516102de979695949392919061218f565b6102fa6103433660046121e4565b610a91565b610373610356366004612148565b6001600160a01b03165f9081526003602052604090205460ff1690565b60405190151581526020016102de565b6102fa6103913660046121e4565b610b36565b6102fa6103a4366004612116565b610bbd565b6103736103b7366004612148565b60056020525f908152604090205460ff1681565b6102d46103d9366004612219565b611190565b6102d46103ec36600461224c565b611241565b61044d6103ff366004612219565b6001600160a01b03919091165f908152600860209081526040808320948352938152838220928252919091522080546001820154600283015460038401546004909401549294919390929091565b604080519586526020860194909452928401919091526060830152608082015260a0016102de565b6102fa610483366004612274565b61126b565b61049b61049636600461224c565b611559565b6040516102de9190612294565b6102d4600d5481565b6102d46104bf366004612219565b6001600160a01b03919091165f90815260086020908152604080832094835293815283822092825291909152206003015490565b600c54610506906001600160a01b031681565b6040516001600160a01b0390911681526020016102de565b600a54610506906001600160a01b031681565b61054461053f366004612116565b6115cb565b6040516102de9897969594939291906122d6565b610373610566366004612148565b60016020525f908152604090205460ff1681565b6102fa610588366004612324565b611697565b6102fa61059b366004612354565b611739565b6103736105ae366004612148565b60026020525f908152604090205460ff1681565b6102fa61197b565b6102fa6105d8366004612116565b6119f2565b6102d46105eb366004612324565b611aa0565b6102d46105fe366004612219565b6001600160a01b03919091165f90815260086020908152604080832094835293815283822092825291909152206002015490565b610506611ad6565b6102d460095481565b6102fa610651366004612274565b611ae4565b6102fa610664366004612393565b611b23565b6102d461067736600461224c565b600660209081525f928352604080842090915290825290205481565b6102d4600e5481565b6102fa6106aa3660046121e4565b611ba6565b6102fa6106bd36600461240d565b611c28565b6102d46106d0366004612219565b6001600160a01b03919091165f90815260086020908152604080832094835293815283822092825291909152206004015490565b6102d4600f5481565b61037361071b366004612148565b6001600160a01b03165f9081526005602052604090205460ff1690565b6102fa610746366004612148565b611d91565b6102d4610759366004612219565b6001600160a01b03919091165f90815260086020908152604080832094835293815283822092825291909152206001015490565b61044d61079b366004612324565b600860209081525f9384526040808520825292845282842090528252902080546001820154600283015460038401546004909401549293919290919085565b6102d46107e8366004612116565b5f9081526004602052604090206003015490565b600b54610506906001600160a01b031681565b6102fa61081d3660046121e4565b611de2565b6102fa61083036600461254e565b611e64565b6102d4610843366004612219565b6001600160a01b03919091165f90815260086020908152604080832094835293815283822092825291909152205490565b6102fa610882366004612148565b611f0b565b610373610895366004612116565b5f9081526004602052604090206007015460ff1690565b6102fa6108ba366004612615565b611ff8565b6103736108cd366004612148565b60036020525f908152604090205460ff1681565b335f9081526001602081905260409091205460ff1615151461091e5760405162461bcd60e51b8152600401610915906126cc565b60405180910390fd5b600d81905560405181907f455bd98bd2d908608322751f3b7614208dcf5b93ab9b6eb1ce22dfa20d002713905f90a250565b33610959611ad6565b6001600160a01b03161461097f5760405162461bcd60e51b8152600401610915906126f1565b600b80546001600160a01b0319166001600160a01b0392909216919091179055565b5f818152600460208190526040822060028101546003820154928201546005830154600684015460078501546001909501805460609897889788978897889788979295919390929160ff9091169087906109fa90612726565b80601f0160208091040260200160405190810160405280929190818152602001828054610a2690612726565b8015610a715780601f10610a4857610100808354040283529160200191610a71565b820191905f5260205f20905b815481529060010190602001808311610a5457829003601f168201915b505050505096509650965096509650965096509650919395979092949650565b335f9081526001602081905260409091205460ff1615151480610ac75750335f9081526002602052604090205460ff1615156001145b610ae35760405162461bcd60e51b8152600401610915906126cc565b6001600160a01b0382165f81815260036020526040808220805460ff191685151590811790915590519092917f1036c1e68dffa49bd561f2edfd63a11079114fb320a2fbef76709f0536ec6ab491a35050565b335f9081526001602081905260409091205460ff16151514610b6a5760405162461bcd60e51b8152600401610915906126cc565b6001600160a01b0382165f81815260056020526040808220805460ff191685151590811790915590519092917facc96907734141e646498435b03deb52adc4805c94c610b604114bc3eea9a4c891a35050565b335f9081526005602052604090205460ff161515600114610c095760405162461bcd60e51b81526020600482015260066024820152654e6f204b594360d01b6044820152606401610915565b335f9081526003602052604090205460ff1615610c385760405162461bcd60e51b81526004016109159061275e565b5f8181526004602052604090206007015460ff161515600114610c905760405162461bcd60e51b815260206004820152601060248201526f506f6f6c20697320696e61637469766560801b6044820152606401610915565b335f90815260076020908152604080832084845282528083205460049092529091206006015411610d035760405162461bcd60e51b815260206004820152601b60248201527f416c7265616479206465706f7369746564206d61782074696d657300000000006044820152606401610915565b5f8181526004602081905260409182902060030154600a5492516370a0823160e01b81523392810192909252916001600160a01b0316906370a0823190602401602060405180830381865afa158015610d5e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d82919061278e565b1015610dd05760405162461bcd60e51b815260206004820181905260248201527f596f75722045524332302062616c616e6365206973206e6f7420656e6f7567686044820152606401610915565b5f805f600b5f9054906101000a90046001600160a01b03166001600160a01b031663ff61ba5c6040518163ffffffff1660e01b815260040160c060405180830381865afa158015610e23573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e4791906127a5565b5050509250925092505f60065f336001600160a01b03166001600160a01b031681526020019081526020015f205f8681526020019081526020015f2054905060045f8681526020019081526020015f206003015460085f336001600160a01b03166001600160a01b031681526020019081526020015f205f8781526020019081526020015f205f8381526020019081526020015f205f01819055504260085f336001600160a01b03166001600160a01b031681526020019081526020015f205f8781526020019081526020015f205f8381526020019081526020015f20600101819055508360085f336001600160a01b03166001600160a01b031681526020019081526020015f205f8781526020019081526020015f205f8381526020019081526020015f20600201819055508260085f336001600160a01b03166001600160a01b031681526020019081526020015f205f8781526020019081526020015f205f8381526020019081526020015f20600301819055508160085f336001600160a01b03166001600160a01b031681526020019081526020015f205f8781526020019081526020015f205f8381526020019081526020015f206004018190555060075f336001600160a01b03166001600160a01b031681526020019081526020015f205f8681526020019081526020015f2081908060018154018082558091505060019003905f5260205f20015f909190919091505560065f336001600160a01b03166001600160a01b031681526020019081526020015f205f8681526020019081526020015f205f81548092919061109e906127ff565b9091555050600a545f8681526004602081815260408084206003015481516323b872dd60e01b815233948101949094523060248501526044840152516001600160a01b03909416936323b872dd9360648085019483900301908290875af115801561110b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061112f9190612817565b5080336001600160a01b0316867f792dc12b7630a6a6b000ca94502fa0138161ffe9302a6493a96ed1b96af6d60960045f8a81526020019081526020015f206003015460405161118191815260200190565b60405180910390a45050505050565b5f838152600460209081526040808320600301546001600160a01b038616845260088352818420878552835281842085855290925282205414801561121a57505f848152600460209081526040808320600201546001600160a01b0387168452600883528184208885528352818420868552909252909120600101546112169190612832565b4210155b1561123757505f838152600460208190526040909120015461123a565b505f5b9392505050565b6001600160a01b0382165f9081526006602090815260408083208484529091529020545b92915050565b335f9081526003602052604090205460ff161561129a5760405162461bcd60e51b81526004016109159061275e565b5f8281526004602090815260408083206003015433845260088352818420868552835281842085855290925290912054146112e75760405162461bcd60e51b815260040161091590612845565b5f82815260046020908152604080832060050154338452600883528184208685528352818420858552909252909120600101546113249190612832565b4210156113435760405162461bcd60e51b815260040161091590612869565b335f9081526008602090815260408083208584528252808320848452909152812080548282556001820183905560028201839055600382018390556004909101829055905b335f90815260076020908152604080832087845290915290205481101561149b57335f90815260076020908152604080832087845290915290208054829081106113d4576113d4612896565b905f5260205f200154830361149357335f9081526007602090815260408083208784529091529020805461140a906001906128aa565b8154811061141a5761141a612896565b5f918252602080832090910154338352600782526040808420888552909252912080548390811061144d5761144d612896565b5f9182526020808320909101929092553381526007825260408082208783529092522080548061147f5761147f6128bd565b600190038181905f5260205f20015f905590555b600101611388565b50600a5460405163a9059cbb60e01b81526001600160a01b039091169063a9059cbb906114ce90339085906004016128d1565b6020604051808303815f875af11580156114ea573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061150e9190612817565b5081336001600160a01b0316847fda69eb80482fd8e6c337a1ca9d6de692a2c2b93bc40140b739915b9893857b548460405161154c91815260200190565b60405180910390a4505050565b6001600160a01b0382165f9081526007602090815260408083208484528252918290208054835181840281018401909452808452606093928301828280156115be57602002820191905f5260205f20905b8154815260200190600101908083116115aa575b5050505050905092915050565b60046020525f9081526040902080546001820180549192916115ec90612726565b80601f016020809104026020016040519081016040528092919081815260200182805461161890612726565b80156116635780601f1061163a57610100808354040283529160200191611663565b820191905f5260205f20905b81548152906001019060200180831161164657829003601f168201915b5050506002840154600385015460048601546005870154600688015460079098015496979396929550909350919060ff1688565b600c546001600160a01b031633146116c15760405162461bcd60e51b8152600401610915906126cc565b6001600160a01b0383165f81815260086020908152604080832086845282528083208584529091528082208281556001810183905560028101839055600381018390556004018290555183929185917f32b90fd018ae2a1ec15120ce7bbf7b170888d820027c1b0ed237d2a393cad27a9190a4505050565b33611742611ad6565b6001600160a01b0316146117685760405162461bcd60e51b8152600401610915906126f1565b6001600160a01b0383165f9081526003602052604090205460ff1615156001146117d45760405162461bcd60e51b815260206004820152601a60248201527f41646472657373206973206e6f7420626c61636b6c69737465640000000000006044820152606401610915565b5f828152600460209081526040808320600301546001600160a01b0387168452600883528184208685528352818420858552909252909120541461182a5760405162461bcd60e51b815260040161091590612845565b600d546001600160a01b0384165f90815260086020908152604080832086845282528083208584529091529020600101546118659190612832565b4210156118845760405162461bcd60e51b815260040161091590612869565b6001600160a01b038381165f90815260086020908152604080832086845282528083208584529091528082208054838255600182018490556002820184905560038201849055600491820193909355600a54915163a9059cbb60e01b81529293919091169163a9059cbb916118fd9189918691016128d1565b6020604051808303815f875af1158015611919573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061193d9190612817565b5081846001600160a01b0316847f5d64492d7bf60171a1d18557f8ce1ff39f332683ca7f9e51066b3b89185fec7c8460405161118191815260200190565b33611984611ad6565b6001600160a01b0316146119aa5760405162461bcd60e51b8152600401610915906126f1565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b335f9081526001602081905260409091205460ff16151514611a265760405162461bcd60e51b8152600401610915906126cc565b600a54600c5460405163095ea7b360e01b81526001600160a01b039283169263095ea7b392611a5c9291169085906004016128d1565b6020604051808303815f875af1158015611a78573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a9c9190612817565b5050565b6007602052825f5260405f20602052815f5260405f208181548110611ac3575f80fd5b905f5260205f20015f9250925050505481565b5f546001600160a01b031690565b335f9081526001602081905260409091205460ff16151514611b185760405162461bcd60e51b8152600401610915906126cc565b600e91909155600f55565b335f9081526001602081905260409091205460ff16151514611b575760405162461bcd60e51b8152600401610915906126cc565b5f8381526004602052604080822060068101859055600701805460ff19168415151790555184917f5ea024fc07ed117607d3f6225be684cd813fab5371028b9dba87f793b1333b8991a2505050565b33611baf611ad6565b6001600160a01b031614611bd55760405162461bcd60e51b8152600401610915906126f1565b6001600160a01b0382165f81815260016020526040808220805460ff191685151590811790915590519092917f31e432c8a0b8a5d799c926dfc9357612dec1d1171af2b563beb34e54fc57196091a35050565b335f9081526001602081905260409091205460ff16151514611c5c5760405162461bcd60e51b8152600401610915906126cc565b5f85118015611c6a57505f83115b611c9c5760405162461bcd60e51b815260206004820152600360248201526232b93960e91b6044820152606401610915565b600e548410158015611cb05750600f548411155b611cee5760405162461bcd60e51b815260206004820152600f60248201526e086d0cac6d640dad2dc404c40dac2f608b1b6044820152606401610915565b6009545f818152600460205260409020818155600101611d0e8882612935565b505f818152600460208190526040808320600281018a90556003810188905591820188905560058201869055600682018590556007909101805460ff191660011790555182917f3eab7cd7b91b05da9ef283cab6a769878feb6ae17b982bc7aef8c6c9487e5dbb91a2600954611d85906001612832565b60095550505050505050565b33611d9a611ad6565b6001600160a01b031614611dc05760405162461bcd60e51b8152600401610915906126f1565b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b33611deb611ad6565b6001600160a01b031614611e115760405162461bcd60e51b8152600401610915906126f1565b6001600160a01b0382165f81815260026020526040808220805460ff191685151590811790915590519092917ff58b84d12f1d006909ec67d87c36fe211d74a3dff077d1df5c158bd6fd0e4fab91a35050565b8051825114611ea55760405162461bcd60e51b815260206004820152600d60248201526c436865636b206c656e6774687360981b6044820152606401610915565b5f5b8251811015611f06575f5b828281518110611ec457611ec4612896565b6020026020010151811015611efd57611ef5848381518110611ee857611ee8612896565b6020026020010151610bbd565b600101611eb2565b50600101611ea7565b505050565b33611f14611ad6565b6001600160a01b031614611f3a5760405162461bcd60e51b8152600401610915906126f1565b6001600160a01b038116611f9f5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610915565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b335f9081526001602081905260409091205460ff1615151461202c5760405162461bcd60e51b8152600401610915906126cc565b5f5b8251811015611f065781818151811061204957612049612896565b602002602001015160055f85848151811061206657612066612896565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f205f6101000a81548160ff0219169083151502179055508181815181106120b5576120b5612896565b602002602001015115158382815181106120d1576120d1612896565b60200260200101516001600160a01b03167facc96907734141e646498435b03deb52adc4805c94c610b604114bc3eea9a4c860405160405180910390a360010161202e565b5f60208284031215612126575f80fd5b5035919050565b80356001600160a01b0381168114612143575f80fd5b919050565b5f60208284031215612158575f80fd5b61123a8261212d565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b60e081525f6121a160e083018a612161565b60208301989098525060408101959095526060850193909352608084019190915260a0830152151560c090910152919050565b80151581146121e1575f80fd5b50565b5f80604083850312156121f5575f80fd5b6121fe8361212d565b9150602083013561220e816121d4565b809150509250929050565b5f805f6060848603121561222b575f80fd5b8335925061223b6020850161212d565b929592945050506040919091013590565b5f806040838503121561225d575f80fd5b6122668361212d565b946020939093013593505050565b5f8060408385031215612285575f80fd5b50508035926020909101359150565b602080825282518282018190525f918401906040840190835b818110156122cb5783518352602093840193909201916001016122ad565b509095945050505050565b88815261010060208201525f6122f061010083018a612161565b6040830198909852506060810195909552608085019390935260a084019190915260c0830152151560e09091015292915050565b5f805f60608486031215612336575f80fd5b61233f8461212d565b95602085013595506040909401359392505050565b5f805f8060808587031215612367575f80fd5b6123708561212d565b935061237e6020860161212d565b93969395505050506040820135916060013590565b5f805f606084860312156123a5575f80fd5b833592506020840135915060408401356123be816121d4565b809150509250925092565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f191681016001600160401b0381118282101715612405576124056123c9565b604052919050565b5f805f805f8060c08789031215612422575f80fd5b86356001600160401b03811115612437575f80fd5b8701601f81018913612447575f80fd5b80356001600160401b03811115612460576124606123c9565b612473601f8201601f19166020016123dd565b8181528a6020838501011115612487575f80fd5b816020840160208301375f60209282018301529a908901359950604089013598606081013598506080810135975060a0013595509350505050565b5f6001600160401b038211156124da576124da6123c9565b5060051b60200190565b5f82601f8301126124f3575f80fd5b8135612506612501826124c2565b6123dd565b8082825260208201915060208360051b860101925085831115612527575f80fd5b602085015b8381101561254457803583526020928301920161252c565b5095945050505050565b5f806040838503121561255f575f80fd5b82356001600160401b03811115612574575f80fd5b612580858286016124e4565b92505060208301356001600160401b0381111561259b575f80fd5b6125a7858286016124e4565b9150509250929050565b5f82601f8301126125c0575f80fd5b81356125ce612501826124c2565b8082825260208201915060208360051b8601019250858311156125ef575f80fd5b602085015b83811015612544578035612607816121d4565b8352602092830192016125f4565b5f8060408385031215612626575f80fd5b82356001600160401b0381111561263b575f80fd5b8301601f8101851361264b575f80fd5b8035612659612501826124c2565b8082825260208201915060208360051b85010192508783111561267a575f80fd5b6020840193505b828410156126a3576126928461212d565b825260209384019390910190612681565b945050505060208301356001600160401b038111156126c0575f80fd5b6125a7858286016125b1565b6020808252600b908201526a139bdd08185b1b1bddd95960aa1b604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600181811c9082168061273a57607f821691505b60208210810361275857634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252601690820152751059191c995cdcc81a5cc8189b1858dadb1a5cdd195960521b604082015260600190565b5f6020828403121561279e575f80fd5b5051919050565b5f805f805f8060c087890312156127ba575f80fd5b50508451602086015160408701516060880151608089015160a090990151939a929950909790965094509092509050565b634e487b7160e01b5f52601160045260245ffd5b5f60018201612810576128106127eb565b5060010190565b5f60208284031215612827575f80fd5b815161123a816121d4565b80820180821115611265576112656127eb565b6020808252600a9082015269139bc819195c1bdcda5d60b21b604082015260600190565b602080825260139082015272151a5b59481a185cc81b9bdd081c185cdcd959606a1b604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b81810381811115611265576112656127eb565b634e487b7160e01b5f52603160045260245ffd5b6001600160a01b03929092168252602082015260400190565b601f821115611f0657805f5260205f20601f840160051c8101602085101561290f5750805b601f840160051c820191505b8181101561292e575f815560010161291b565b5050505050565b81516001600160401b0381111561294e5761294e6123c9565b6129628161295c8454612726565b846128ea565b6020601f821160018114612994575f831561297d5750848201515b5f19600385901b1c1916600184901b17845561292e565b5f84815260208120601f198516915b828110156129c357878501518255602094850194600190920191016129a3565b50848210156129e057868401515f19600387901b60f8161c191681555b50505050600190811b0190555056fea2646970667358221220310c122ee83dba0faec67462508aba3357b9e82ed25a04c70878fdbac17ce6a564736f6c634300081a0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000ace7eb41d6bad44907cda84a122f052c74cb782600000000000000000000000082ca437d8cf216ffacea208c3d8b04f0bfdd922d0000000000000000000000000000000000000000000000000000000000127500
-----Decoded View---------------
Arg [0] : _goldProAddress (address): 0xACe7eb41D6BAd44907cdA84A122F052c74cB7826
Arg [1] : _priceFeedAddress (address): 0x82cA437D8cf216fFACea208c3D8B04F0bfDD922D
Arg [2] : _blackPeriod (uint256): 1209600
-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 000000000000000000000000ace7eb41d6bad44907cda84a122f052c74cb7826
Arg [1] : 00000000000000000000000082ca437d8cf216ffacea208c3d8b04f0bfdd922d
Arg [2] : 0000000000000000000000000000000000000000000000000000000000127500
Deployed Bytecode Sourcemap
261:15106:4:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12778:128;;;;;;:::i;:::-;12838:7;12866:22;;;:13;:22;;;;;;;;:31;;;12778:128;;;;391:25:5;;;379:2;364:18;12778:128:4;;;;;;;;9502:158;;;;;;:::i;:::-;;:::i;:::-;;9085:123;;;;;;:::i;:::-;;:::i;12038:378::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;:::i;8684:173::-;;;;;;:::i;:::-;;:::i;15237:125::-;;;;;;:::i;:::-;-1:-1:-1;;;;;15334:19:4;15309:4;15334:19;;;:9;:19;;;;;;;;;15237:125;;;;2364:14:5;;2357:22;2339:41;;2327:2;2312:18;15237:125:4;2199:187:5;9716:168:4;;;;;;:::i;:::-;;:::i;4104:1386::-;;;;;;:::i;:::-;;:::i;1007:43::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;11574:427;;;;;;:::i;:::-;;:::i;15035:158::-;;;;;;:::i;:::-;;:::i;13177:434::-;;;;;;:::i;:::-;-1:-1:-1;;;;;13341:24:4;;;;13277:7;13341:24;;;:14;:24;;;;;;;;:33;;;;;;;;;:41;;;;;;;;:48;;13391:53;;;;13446:47;;;;13495:54;;;;13551:51;;;;;13341:48;;13391:53;;13446:47;;13495:54;;13177:434;;;;;3380:25:5;;;3436:2;3421:18;;3414:34;;;;3464:18;;;3457:34;;;;3522:2;3507:18;;3500:34;3565:3;3550:19;;3543:35;3367:3;3352:19;13177:434:4;3121:463:5;5948:1333:4;;;;;;:::i;:::-;;:::i;14816:163::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;1509:26::-;;;;;;13905:196;;;;;;:::i;:::-;-1:-1:-1;;;;;14038:24:4;;;;14010:7;14038:24;;;:14;:24;;;;;;;;:33;;;;;;;;;:41;;;;;;;;:54;;;;13905:196;1469:33;;;;;-1:-1:-1;;;;;1469:33:4;;;;;;-1:-1:-1;;;;;4720:32:5;;;4702:51;;4690:2;4675:18;1469:33:4;4556:203:5;1392:29:4;;;;;-1:-1:-1;;;;;1392:29:4;;;951:49;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;:::i;808:38::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;7637:552;;;;;;:::i;:::-;;:::i;10547:991::-;;;;;;:::i;:::-;;:::i;853:42::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;1816:148:3;;;:::i;9267:147:4:-;;;;;;:::i;:::-;;:::i;1135:71::-;;;;;;:::i;:::-;;:::i;14397:185::-;;;;;;:::i;:::-;-1:-1:-1;;;;;14526:24:4;;;;14498:7;14526:24;;;:14;:24;;;;;;;;:33;;;;;;;;;:41;;;;;;;;:47;;;;14397:185;1165:87:3;;;:::i;1355:30:4:-;;;;;;9974:142;;;;;;:::i;:::-;;:::i;7328:233::-;;;;;;:::i;:::-;;:::i;1057:71::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;1542:26;;;;;;8239:157;;;;;;:::i;:::-;;:::i;3200:860::-;;;;;;:::i;:::-;;:::i;14155:193::-;;;;;;:::i;:::-;-1:-1:-1;;;;;14288:24:4;;;;14260:7;14288:24;;;:14;:24;;;;;;;;:33;;;;;;;;;:41;;;;;;;;:51;;;;14155:193;1575:26;;;;;;14628:120;;;;;;:::i;:::-;-1:-1:-1;;;;;14719:20:4;14694:4;14719:20;;;:10;:20;;;;;;;;;14628:120;8912:114;;;;;;:::i;:::-;;:::i;13651:197::-;;;;;;:::i;:::-;-1:-1:-1;;;;;13786:24:4;;;;13758:7;13786:24;;;:14;:24;;;;;;;;:33;;;;;;;;;:41;;;;;;;;:53;;;;13651:197;1213:95;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12454:123;;;;;;:::i;:::-;12511:7;12539:22;;;:13;:22;;;;;:29;;;;12454:123;1428:34;;;;;-1:-1:-1;;;;;1428:34:4;;;8450:169;;;;;;:::i;:::-;;:::i;5539:353::-;;;;;;:::i;:::-;;:::i;12948:187::-;;;;;;:::i;:::-;-1:-1:-1;;;;;13078:24:4;;;;13050:7;13078:24;;;:14;:24;;;;;;;;:33;;;;;;;;;:41;;;;;;;;:48;;12948:187;2119:244:3;;;;;;:::i;:::-;;:::i;12616:121:4:-;;;;;;:::i;:::-;12674:4;12699:22;;;:13;:22;;;;;:29;;;;;;12616:121;10187:279;;;;;;:::i;:::-;;:::i;902:42::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;9502:158;1676:10;1670:17;;;;:5;:17;;;;;;;;;;;:25;;;1662:49;;;;-1:-1:-1;;;1662:49:4;;;;;;;:::i;:::-;;;;;;;;;9579:11:::1;:26:::0;;;9621:31:::1;::::0;9593:12;;9621:31:::1;::::0;;;::::1;9502:158:::0;:::o;9085:123::-;685:10:0;1385:7:3;:5;:7::i;:::-;-1:-1:-1;;;;;1385:23:3;;1377:68;;;;-1:-1:-1;;;1377:68:3;;;;;;;:::i;:::-;9161:16:4::1;:39:::0;;-1:-1:-1;;;;;;9161:39:4::1;-1:-1:-1::0;;;;;9161:39:4;;;::::1;::::0;;;::::1;::::0;;9085:123::o;12038:378::-;12109:7;12179:22;;;:13;:22;;;;;;;12212:31;;;;12245:29;;;;12276:31;;;;12309:35;;;;12346:30;;;;12378:29;;;;12179:31;;;;12171:237;;12094:13;;12109:7;;;;;;;;;;;12212:31;;12276;;12309:35;;12346:30;12378:29;;;;;12179:31;;12171:237;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12038:378;;;;;;;;;:::o;8684:173::-;1789:10;1783:17;;;;:5;:17;;;;;;;;;;;:25;;;;:58;;-1:-1:-1;1822:10:4;1812:21;;;;:9;:21;;;;;;;;:29;;:21;:29;1783:58;1775:82;;;;-1:-1:-1;;;1775:82:4;;;;;;;:::i;:::-;-1:-1:-1;;;;;8770:19:4;::::1;;::::0;;;:9:::1;:19;::::0;;;;;:29;;-1:-1:-1;;8770:29:4::1;::::0;::::1;;::::0;;::::1;::::0;;;8815:34;;8770:29;;:19;8815:34:::1;::::0;::::1;8684:173:::0;;:::o;9716:168::-;1676:10;1670:17;;;;:5;:17;;;;;;;;;;;:25;;;1662:49;;;;-1:-1:-1;;;1662:49:4;;;;;;;:::i;:::-;-1:-1:-1;;;;;9802:20:4;::::1;;::::0;;;:10:::1;:20;::::0;;;;;:30;;-1:-1:-1;;9802:30:4::1;::::0;::::1;;::::0;;::::1;::::0;;;9848:28;;9802:30;;:20;9848:28:::1;::::0;::::1;9716:168:::0;;:::o;4104:1386::-;4179:10;4168:22;;;;:10;:22;;;;;;;;:30;;:22;:30;4160:49;;;;-1:-1:-1;;;4160:49:4;;13618:2:5;4160:49:4;;;13600:21:5;13657:1;13637:18;;;13630:29;-1:-1:-1;;;13675:18:5;;;13668:36;13721:18;;4160:49:4;13416:329:5;4160:49:4;4238:10;4228:21;;;;:9;:21;;;;;;;;:30;4220:65;;;;-1:-1:-1;;;4220:65:4;;;;;;;:::i;:::-;4304:22;;;;:13;:22;;;;;:29;;;;;:37;;:29;:37;4296:66;;;;-1:-1:-1;;;4296:66:4;;14303:2:5;4296:66:4;;;14285:21:5;14342:2;14322:18;;;14315:30;-1:-1:-1;;;14361:18:5;;;14354:46;14417:18;;4296:66:4;14101:340:5;4296:66:4;4427:10;4414:24;;;;:12;:24;;;;;;;;:33;;;;;;;;:40;4381:13;:22;;;;;;:30;;;:73;4373:113;;;;-1:-1:-1;;;4373:113:4;;14648:2:5;4373:113:4;;;14630:21:5;14687:2;14667:18;;;14660:30;14726:29;14706:18;;;14699:57;14773:18;;4373:113:4;14446:351:5;4373:113:4;4553:22;;;;:13;:22;;;;;;;;;:29;;;4512:14;;4505:44;;-1:-1:-1;;;4505:44:4;;4538:10;4505:44;;;4702:51:5;;;;4553:29:4;-1:-1:-1;;;;;4512:14:4;;4505:32;;4675:18:5;;4505:44:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:77;;4497:122;;;;-1:-1:-1;;;4497:122:4;;15239:2:5;4497:122:4;;;15221:21:5;;;15258:18;;;15251:30;15317:34;15297:18;;;15290:62;15369:18;;4497:122:4;15037:356:5;4497:122:4;4631:13;4646:20;4668:17;4694:16;;;;;;;;;-1:-1:-1;;;;;4694:16:4;-1:-1:-1;;;;;4694:32:4;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4630:98;;;;;;;;;4739:13;4755:14;:26;4770:10;-1:-1:-1;;;;;4755:26:4;-1:-1:-1;;;;;4755:26:4;;;;;;;;;;;;:35;4782:7;4755:35;;;;;;;;;;;;4739:51;;4853:13;:22;4867:7;4853:22;;;;;;;;;;;:29;;;4801:14;:26;4816:10;-1:-1:-1;;;;;4801:26:4;-1:-1:-1;;;;;4801:26:4;;;;;;;;;;;;:35;4828:7;4801:35;;;;;;;;;;;:42;4837:5;4801:42;;;;;;;;;;;:49;;:81;;;;4950:15;4893:14;:26;4908:10;-1:-1:-1;;;;;4893:26:4;-1:-1:-1;;;;;4893:26:4;;;;;;;;;;;;:35;4920:7;4893:35;;;;;;;;;;;:42;4929:5;4893:42;;;;;;;;;;;:54;;:72;;;;5027:5;4976:14;:26;4991:10;-1:-1:-1;;;;;4976:26:4;-1:-1:-1;;;;;4976:26:4;;;;;;;;;;;;:35;5003:7;4976:35;;;;;;;;;;;:42;5012:5;4976:42;;;;;;;;;;;:48;;:56;;;;5101:12;5043:14;:26;5058:10;-1:-1:-1;;;;;5043:26:4;-1:-1:-1;;;;;5043:26:4;;;;;;;;;;;;:35;5070:7;5043:35;;;;;;;;;;;:42;5079:5;5043:42;;;;;;;;;;;:55;;:70;;;;5179:9;5124:14;:26;5139:10;-1:-1:-1;;;;;5124:26:4;-1:-1:-1;;;;;5124:26:4;;;;;;;;;;;;:35;5151:7;5124:35;;;;;;;;;;;:42;5160:5;5124:42;;;;;;;;;;;:52;;:64;;;;5199:12;:24;5212:10;-1:-1:-1;;;;;5199:24:4;-1:-1:-1;;;;;5199:24:4;;;;;;;;;;;;:33;5224:7;5199:33;;;;;;;;;;;5238:5;5199:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5255:14;:26;5270:10;-1:-1:-1;;;;;5255:26:4;-1:-1:-1;;;;;5255:26:4;;;;;;;;;;;;:35;5282:7;5255:35;;;;;;;;;;;;:37;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;5310:14:4;;;5366:22;;;:13;:22;;;;;;;;:29;;;5303:93;;-1:-1:-1;;;5303:93:4;;5339:10;5303:93;;;16623:51:5;;;;5359:4:4;16690:18:5;;;16683:60;16759:18;;;16752:34;5303:93:4;-1:-1:-1;;;;;5310:14:4;;;;5303:35;;16596:18:5;;;;;5303:93:4;;;;;;;5310:14;5303:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;5445:5;5433:10;-1:-1:-1;;;;;5412:70:4;5424:7;5412:70;5452:13;:22;5466:7;5452:22;;;;;;;;;;;:29;;;5412:70;;;;391:25:5;;379:2;364:18;;245:177;5412:70:4;;;;;;;;4149:1341;;;;4104:1386;:::o;11574:427::-;11667:7;11744:22;;;:13;:22;;;;;;;;:29;;;-1:-1:-1;;;;;11692:24:4;;;;:14;:24;;;;;:33;;;;;;;;:41;;;;;;;;:48;:81;11691:195;;;;-1:-1:-1;11854:22:4;;;;:13;:22;;;;;;;;:31;;;-1:-1:-1;;;;;11798:24:4;;;;:14;:24;;;;;:33;;;;;;;;:41;;;;;;;;;:53;;;:87;;11854:31;11798:87;:::i;:::-;11779:15;:106;;11691:195;11687:307;;;-1:-1:-1;11910:22:4;;;;:13;:22;;;;;;;;:31;;11903:38;;11687:307;-1:-1:-1;11981:1:4;11687:307;11574:427;;;;;:::o;15035:158::-;-1:-1:-1;;;;;15153:24:4;;15125:7;15153:24;;;:14;:24;;;;;;;;:31;;;;;;;;;15035:158;;;;;:::o;5948:1333::-;6041:10;6031:21;;;;:9;:21;;;;;;;;:30;6023:65;;;;-1:-1:-1;;;6023:65:4;;;;;;;:::i;:::-;6161:22;;;;:13;:22;;;;;;;;:29;;;6122:10;6107:26;;:14;:26;;;;;:35;;;;;;;;:43;;;;;;;;;:50;:83;6099:106;;;;-1:-1:-1;;;6099:106:4;;;;;;;:::i;:::-;6301:22;;;;:13;:22;;;;;;;;:35;;;6258:10;6243:26;;:14;:26;;;;;:35;;;;;;;;:43;;;;;;;;;:55;;;:93;;6301:35;6243:93;:::i;:::-;6224:15;:112;;6216:144;;;;-1:-1:-1;;;6216:144:4;;;;;;;:::i;:::-;6403:10;6371:14;6388:26;;;:14;:26;;;;;;;;:35;;;;;;;;:43;;;;;;;;:50;;6449:54;;;-1:-1:-1;6514:55:4;;:59;;;6584:49;;;:53;;;6648:56;;;:60;;;6719:53;;;;:57;;;6388:50;6787:358;6824:10;6811:24;;;;:12;:24;;;;;;;;:33;;;;;;;;:40;6807:44;;6787:358;;;6900:10;6887:24;;;;:12;:24;;;;;;;;:33;;;;;;;;:36;;6921:1;;6887:36;;;;;;:::i;:::-;;;;;;;;;6877:6;:46;6873:261;;6996:10;6983:24;;;;:12;:24;;;;;;;;:33;;;;;;;;7017:40;;:42;;7058:1;;7017:42;:::i;:::-;6983:77;;;;;;;;:::i;:::-;;;;;;;;;;;;;6957:10;6944:24;;:12;:24;;;;;;:33;;;;;;;;:36;;6978:1;;6944:36;;;;;;:::i;:::-;;;;;;;;;;;;:116;;;;7092:10;7079:24;;:12;:24;;;;;;:33;;;;;;;:39;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;6873:261;6853:3;;6787:358;;;-1:-1:-1;7162:14:4;;7155:51;;-1:-1:-1;;;7155:51:4;;-1:-1:-1;;;;;7162:14:4;;;;7155:31;;:51;;7187:10;;7199:6;;7155:51;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;7258:6;7246:10;-1:-1:-1;;;;;7222:51:4;7237:7;7222:51;7266:6;7222:51;;;;391:25:5;;379:2;364:18;;245:177;7222:51:4;;;;;;;;6012:1269;5948:1333;;:::o;14816:163::-;-1:-1:-1;;;;;14941:22:4;;;;;;:12;:22;;;;;;;;:29;;;;;;;;;14933:38;;;;;;;;;;;;;;;;;14904:16;;14933:38;;;14941:29;14933:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14816:163;;;;:::o;951:49::-;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;951:49:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;951:49:4;;-1:-1:-1;951:49:4;;;;;:::o;7637:552::-;7755:18;;-1:-1:-1;;;;;7755:18:4;7741:10;:32;7733:56;;;;-1:-1:-1;;;7733:56:4;;;;;;;:::i;:::-;-1:-1:-1;;;;;7800:24:4;;7851:1;7800:24;;;:14;:24;;;;;;;;:33;;;;;;;;:41;;;;;;;;;:52;;;7863:53;;;:57;;;7931:47;;;:51;;;7993:54;;;:58;;;8062:51;;:55;;;8133:48;7800:41;;:24;:33;;8133:48;;7851:1;8133:48;7637:552;;;:::o;10547:991::-;685:10:0;1385:7:3;:5;:7::i;:::-;-1:-1:-1;;;;;1385:23:3;;1377:68;;;;-1:-1:-1;;;1377:68:3;;;;;;;:::i;:::-;-1:-1:-1;;;;;10693:19:4;::::1;;::::0;;;:9:::1;:19;::::0;;;;;::::1;;:27;;:19:::0;:27:::1;10685:66;;;::::0;-1:-1:-1;;;10685:66:4;;18742:2:5;10685:66:4::1;::::0;::::1;18724:21:5::0;18781:2;18761:18;;;18754:30;18820:28;18800:18;;;18793:56;18866:18;;10685:66:4::1;18540:350:5::0;10685:66:4::1;10822:22;::::0;;;:13:::1;:22;::::0;;;;;;;:29:::1;;::::0;-1:-1:-1;;;;;10770:24:4;::::1;::::0;;:14:::1;:24:::0;;;;;:33;;;;;;;;:41;;;;;;;;;:48;:81:::1;10762:104;;;;-1:-1:-1::0;;;10762:104:4::1;;;;;;;:::i;:::-;10960:11;::::0;-1:-1:-1;;;;;10904:24:4;::::1;;::::0;;;:14:::1;:24;::::0;;;;;;;:33;;;;;;;;:41;;;;;;;;:53:::1;;::::0;:67:::1;::::0;10960:11;10904:67:::1;:::i;:::-;10885:15;:86;;10877:118;;;;-1:-1:-1::0;;;10877:118:4::1;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11023:24:4;;::::1;11006:14;11023:24:::0;;;:14:::1;:24;::::0;;;;;;;:33;;;;;;;;:41;;;;;;;;;:48;;11082:52;;;-1:-1:-1;11145:53:4;::::1;:57:::0;;;11213:47:::1;::::0;::::1;:51:::0;;;11275:54:::1;::::0;::::1;:58:::0;;;11344:51:::1;::::0;;::::1;:55:::0;;;;11417:14:::1;::::0;11410:50;;-1:-1:-1;;;11410:50:4;;11023:48;;11417:14;;;::::1;::::0;11410:31:::1;::::0;:50:::1;::::0;11442:9;;11023:48;;11410:50:::1;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;11515:6;11505:8;-1:-1:-1::0;;;;;11476:54:4::1;11496:7;11476:54;11523:6;11476:54;;;;391:25:5::0;;379:2;364:18;;245:177;1816:148:3;685:10:0;1385:7:3;:5;:7::i;:::-;-1:-1:-1;;;;;1385:23:3;;1377:68;;;;-1:-1:-1;;;1377:68:3;;;;;;;:::i;:::-;1923:1:::1;1907:6:::0;;1886:40:::1;::::0;-1:-1:-1;;;;;1907:6:3;;::::1;::::0;1886:40:::1;::::0;1923:1;;1886:40:::1;1954:1;1937:19:::0;;-1:-1:-1;;;;;;1937:19:3::1;::::0;;1816:148::o;9267:147:4:-;1676:10;1670:17;;;;:5;:17;;;;;;;;;;;:25;;;1662:49;;;;-1:-1:-1;;;1662:49:4;;;;;;;:::i;:::-;9354:14:::1;::::0;9378:18:::1;::::0;9347:59:::1;::::0;-1:-1:-1;;;9347:59:4;;-1:-1:-1;;;;;9354:14:4;;::::1;::::0;9347:30:::1;::::0;:59:::1;::::0;9378:18;::::1;::::0;9398:7;;9347:59:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;9267:147:::0;:::o;1135:71::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1165:87:3:-;1211:7;1238:6;-1:-1:-1;;;;;1238:6:3;;1165:87::o;9974:142:4:-;1676:10;1670:17;;;;:5;:17;;;;;;;;;;;:25;;;1662:49;;;;-1:-1:-1;;;1662:49:4;;;;;;;:::i;:::-;10061:11:::1;:18:::0;;;;10090:11:::1;:18:::0;9974:142::o;7328:233::-;1676:10;1670:17;;;;:5;:17;;;;;;;;;;;:25;;;1662:49;;;;-1:-1:-1;;;1662:49:4;;;;;;;:::i;:::-;7428:22:::1;::::0;;;:13:::1;:22;::::0;;;;;:30:::1;::::0;::::1;:41:::0;;;7480:29:::1;;:38:::0;;-1:-1:-1;;7480:38:4::1;::::0;::::1;;;::::0;;7534:19;7428:22;;7534:19:::1;::::0;::::1;7328:233:::0;;;:::o;8239:157::-;685:10:0;1385:7:3;:5;:7::i;:::-;-1:-1:-1;;;;;1385:23:3;;1377:68;;;;-1:-1:-1;;;1377:68:3;;;;;;;:::i;:::-;-1:-1:-1;;;;;8317:15:4;::::1;;::::0;;;:5:::1;:15;::::0;;;;;:25;;-1:-1:-1;;8317:25:4::1;::::0;::::1;;::::0;;::::1;::::0;;;8358:30;;8317:25;;:15;8358:30:::1;::::0;::::1;8239:157:::0;;:::o;3200:860::-;1676:10;1670:17;;;;:5;:17;;;;;;;;;;;:25;;;1662:49;;;;-1:-1:-1;;;1662:49:4;;;;;;;:::i;:::-;3391:1:::1;3379:9;:13;:28;;;;;3406:1;3396:7;:11;3379:28;3371:45;;;::::0;-1:-1:-1;;;3371:45:4;;19097:2:5;3371:45:4::1;::::0;::::1;19079:21:5::0;19136:1;19116:18;;;19109:29;-1:-1:-1;;;19154:18:5;;;19147:33;19197:18;;3371:45:4::1;18895:326:5::0;3371:45:4::1;3448:11;;3435:9;:24;;:52;;;;;3476:11;;3463:9;:24;;3435:52;3427:80;;;::::0;-1:-1:-1;;;3427:80:4;;19428:2:5;3427:80:4::1;::::0;::::1;19410:21:5::0;19467:2;19447:18;;;19440:30;-1:-1:-1;;;19486:18:5;;;19479:45;19541:18;;3427:80:4::1;19226:339:5::0;3427:80:4::1;3535:15;::::0;3518:14:::1;3561:21:::0;;;:13:::1;:21;::::0;;;;:37;;;3609:30:::1;;:42;3642:9:::0;3609:30;:42:::1;:::i;:::-;-1:-1:-1::0;3662:21:4::1;::::0;;;:13:::1;:21;::::0;;;;;;;:30:::1;::::0;::::1;:42:::0;;;3715:28:::1;::::0;::::1;:38:::0;;;3764:30;;::::1;:42:::0;;;3817:34:::1;::::0;::::1;:50:::0;;;3878:29:::1;::::0;::::1;:40:::0;;;3929:28:::1;::::0;;::::1;:35:::0;;-1:-1:-1;;3929:35:4::1;3960:4;3929:35;::::0;;3980:24;3676:6;;3980:24:::1;::::0;::::1;4033:15;::::0;:19:::1;::::0;4051:1:::1;4033:19;:::i;:::-;4015:15;:37:::0;-1:-1:-1;;;;;;;3200:860:4:o;8912:114::-;685:10:0;1385:7:3;:5;:7::i;:::-;-1:-1:-1;;;;;1385:23:3;;1377:68;;;;-1:-1:-1;;;1377:68:3;;;;;;;:::i;:::-;8989:18:4::1;:29:::0;;-1:-1:-1;;;;;;8989:29:4::1;-1:-1:-1::0;;;;;8989:29:4;;;::::1;::::0;;;::::1;::::0;;8912:114::o;8450:169::-;685:10:0;1385:7:3;:5;:7::i;:::-;-1:-1:-1;;;;;1385:23:3;;1377:68;;;;-1:-1:-1;;;1377:68:3;;;;;;;:::i;:::-;-1:-1:-1;;;;;8532:19:4;::::1;;::::0;;;:9:::1;:19;::::0;;;;;:29;;-1:-1:-1;;8532:29:4::1;::::0;::::1;;::::0;;::::1;::::0;;;8577:34;;8532:29;;:19;8577:34:::1;::::0;::::1;8450:169:::0;;:::o;5539:353::-;5665:9;:16;5646:8;:15;:35;5638:62;;;;-1:-1:-1;;;5638:62:4;;21896:2:5;5638:62:4;;;21878:21:5;21935:2;21915:18;;;21908:30;-1:-1:-1;;;21954:18:5;;;21947:43;22007:18;;5638:62:4;21694:337:5;5638:62:4;5716:9;5711:174;5735:8;:15;5731:1;:19;5711:174;;;5777:9;5772:102;5796:9;5806:1;5796:12;;;;;;;;:::i;:::-;;;;;;;5792:1;:16;5772:102;;;5834:24;5846:8;5855:1;5846:11;;;;;;;;:::i;:::-;;;;;;;5834;:24::i;:::-;5810:3;;5772:102;;;-1:-1:-1;5752:3:4;;5711:174;;;;5539:353;;:::o;2119:244:3:-;685:10:0;1385:7:3;:5;:7::i;:::-;-1:-1:-1;;;;;1385:23:3;;1377:68;;;;-1:-1:-1;;;1377:68:3;;;;;;;:::i;:::-;-1:-1:-1;;;;;2208:22:3;::::1;2200:73;;;::::0;-1:-1:-1;;;2200:73:3;;22238:2:5;2200:73:3::1;::::0;::::1;22220:21:5::0;22277:2;22257:18;;;22250:30;22316:34;22296:18;;;22289:62;-1:-1:-1;;;22367:18:5;;;22360:36;22413:19;;2200:73:3::1;22036:402:5::0;2200:73:3::1;2310:6;::::0;;2289:38:::1;::::0;-1:-1:-1;;;;;2289:38:3;;::::1;::::0;2310:6;::::1;::::0;2289:38:::1;::::0;::::1;2338:6;:17:::0;;-1:-1:-1;;;;;;2338:17:3::1;-1:-1:-1::0;;;;;2338:17:3;;;::::1;::::0;;;::::1;::::0;;2119:244::o;10187:279:4:-;1676:10;1670:17;;;;:5;:17;;;;;;;;;;;:25;;;1662:49;;;;-1:-1:-1;;;1662:49:4;;;;;;;:::i;:::-;10301:9:::1;10296:163;10320:8;:15;10316:1;:19;10296:163;;;10383:7;10391:1;10383:10;;;;;;;;:::i;:::-;;;;;;;10357;:23;10368:8;10377:1;10368:11;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1::0;;;;;10357:23:4::1;-1:-1:-1::0;;;;;10357:23:4::1;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;10436:7;10444:1;10436:10;;;;;;;;:::i;:::-;;;;;;;10413:34;;10423:8;10432:1;10423:11;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1::0;;;;;10413:34:4::1;;;;;;;;;;;10337:3;;10296:163;;14:226:5::0;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;-1:-1:-1;187:23:5;;14:226;-1:-1:-1;14:226:5:o;427:173::-;495:20;;-1:-1:-1;;;;;544:31:5;;534:42;;524:70;;590:1;587;580:12;524:70;427:173;;;:::o;605:186::-;664:6;717:2;705:9;696:7;692:23;688:32;685:52;;;733:1;730;723:12;685:52;756:29;775:9;756:29;:::i;796:289::-;838:3;876:5;870:12;903:6;898:3;891:19;959:6;952:4;945:5;941:16;934:4;929:3;925:14;919:47;1011:1;1004:4;995:6;990:3;986:16;982:27;975:38;1074:4;1067:2;1063:7;1058:2;1050:6;1046:15;1042:29;1037:3;1033:39;1029:50;1022:57;;;796:289;;;;:::o;1090:661::-;1401:3;1390:9;1383:22;1364:4;1422:46;1463:3;1452:9;1448:19;1440:6;1422:46;:::i;:::-;1499:2;1484:18;;1477:34;;;;-1:-1:-1;1542:2:5;1527:18;;1520:34;;;;1585:2;1570:18;;1563:34;;;;1628:3;1613:19;;1606:35;;;;1672:3;1657:19;;1650:35;1729:14;1722:22;1716:3;1701:19;;;1694:51;1414:54;1090:661;-1:-1:-1;1090:661:5:o;1756:118::-;1842:5;1835:13;1828:21;1821:5;1818:32;1808:60;;1864:1;1861;1854:12;1808:60;1756:118;:::o;1879:315::-;1944:6;1952;2005:2;1993:9;1984:7;1980:23;1976:32;1973:52;;;2021:1;2018;2011:12;1973:52;2044:29;2063:9;2044:29;:::i;:::-;2034:39;;2123:2;2112:9;2108:18;2095:32;2136:28;2158:5;2136:28;:::i;:::-;2183:5;2173:15;;;1879:315;;;;;:::o;2391:420::-;2468:6;2476;2484;2537:2;2525:9;2516:7;2512:23;2508:32;2505:52;;;2553:1;2550;2543:12;2505:52;2598:23;;;-1:-1:-1;2664:38:5;2698:2;2683:18;;2664:38;:::i;:::-;2391:420;;2654:48;;-1:-1:-1;;;2775:2:5;2760:18;;;;2747:32;;2391:420::o;2816:300::-;2884:6;2892;2945:2;2933:9;2924:7;2920:23;2916:32;2913:52;;;2961:1;2958;2951:12;2913:52;2984:29;3003:9;2984:29;:::i;:::-;2974:39;3082:2;3067:18;;;;3054:32;;-1:-1:-1;;;2816:300:5:o;3589:346::-;3657:6;3665;3718:2;3706:9;3697:7;3693:23;3689:32;3686:52;;;3734:1;3731;3724:12;3686:52;-1:-1:-1;;3779:23:5;;;3899:2;3884:18;;;3871:32;;-1:-1:-1;3589:346:5:o;3940:611::-;4130:2;4142:21;;;4212:13;;4115:18;;;4234:22;;;4082:4;;4313:15;;;4287:2;4272:18;;;4082:4;4356:169;4370:6;4367:1;4364:13;4356:169;;;4431:13;;4419:26;;4474:2;4500:15;;;;4465:12;;;;4392:1;4385:9;4356:169;;;-1:-1:-1;4542:3:5;;3940:611;-1:-1:-1;;;;;3940:611:5:o;4764:733::-;5103:6;5092:9;5085:25;5146:3;5141:2;5130:9;5126:18;5119:31;5066:4;5167:46;5208:3;5197:9;5193:19;5185:6;5167:46;:::i;:::-;5244:2;5229:18;;5222:34;;;;-1:-1:-1;5287:2:5;5272:18;;5265:34;;;;5330:3;5315:19;;5308:35;;;;5374:3;5359:19;;5352:35;;;;5418:3;5403:19;;5396:35;5475:14;5468:22;5462:3;5447:19;;;5440:51;5159:54;4764:733;-1:-1:-1;;4764:733:5:o;5502:420::-;5579:6;5587;5595;5648:2;5636:9;5627:7;5623:23;5619:32;5616:52;;;5664:1;5661;5654:12;5616:52;5687:29;5706:9;5687:29;:::i;:::-;5677:39;5785:2;5770:18;;5757:32;;-1:-1:-1;5886:2:5;5871:18;;;5858:32;;5502:420;-1:-1:-1;;;5502:420:5:o;5927:495::-;6013:6;6021;6029;6037;6090:3;6078:9;6069:7;6065:23;6061:33;6058:53;;;6107:1;6104;6097:12;6058:53;6130:29;6149:9;6130:29;:::i;:::-;6120:39;;6178:38;6212:2;6201:9;6197:18;6178:38;:::i;:::-;5927:495;;6168:48;;-1:-1:-1;;;;6285:2:5;6270:18;;6257:32;;6386:2;6371:18;6358:32;;5927:495::o;6427:481::-;6501:6;6509;6517;6570:2;6558:9;6549:7;6545:23;6541:32;6538:52;;;6586:1;6583;6576:12;6538:52;6631:23;;;-1:-1:-1;6751:2:5;6736:18;;6723:32;;-1:-1:-1;6833:2:5;6818:18;;6805:32;6846:30;6805:32;6846:30;:::i;:::-;6895:7;6885:17;;;6427:481;;;;;:::o;6913:127::-;6974:10;6969:3;6965:20;6962:1;6955:31;7005:4;7002:1;6995:15;7029:4;7026:1;7019:15;7045:275;7116:2;7110:9;7181:2;7162:13;;-1:-1:-1;;7158:27:5;7146:40;;-1:-1:-1;;;;;7201:34:5;;7237:22;;;7198:62;7195:88;;;7263:18;;:::i;:::-;7299:2;7292:22;7045:275;;-1:-1:-1;7045:275:5:o;7325:1375::-;7439:6;7447;7455;7463;7471;7479;7532:3;7520:9;7511:7;7507:23;7503:33;7500:53;;;7549:1;7546;7539:12;7500:53;7589:9;7576:23;-1:-1:-1;;;;;7614:6:5;7611:30;7608:50;;;7654:1;7651;7644:12;7608:50;7677:22;;7730:4;7722:13;;7718:27;-1:-1:-1;7708:55:5;;7759:1;7756;7749:12;7708:55;7799:2;7786:16;-1:-1:-1;;;;;7817:6:5;7814:30;7811:56;;;7847:18;;:::i;:::-;7889:59;7936:2;7913:17;;-1:-1:-1;;7909:31:5;7942:4;7905:42;7889:59;:::i;:::-;7971:6;7964:5;7957:21;8021:7;8014:4;8005:6;8001:2;7997:15;7993:26;7990:39;7987:59;;;8042:1;8039;8032:12;7987:59;8101:6;8094:4;8090:2;8086:13;8079:4;8072:5;8068:16;8055:53;8155:1;8148:4;8128:18;;;8124:29;;8117:40;8128:18;8235:20;;;8222:34;;-1:-1:-1;8353:2:5;8338:18;;8325:32;;8456:2;8441:18;;8428:32;;-1:-1:-1;8559:3:5;8544:19;;8531:33;;-1:-1:-1;8663:3:5;8648:19;8635:33;;-1:-1:-1;8132:5:5;-1:-1:-1;;;;7325:1375:5:o;8931:183::-;8991:4;-1:-1:-1;;;;;9016:6:5;9013:30;9010:56;;;9046:18;;:::i;:::-;-1:-1:-1;9091:1:5;9087:14;9103:4;9083:25;;8931:183::o;9119:723::-;9173:5;9226:3;9219:4;9211:6;9207:17;9203:27;9193:55;;9244:1;9241;9234:12;9193:55;9284:6;9271:20;9311:64;9327:47;9367:6;9327:47;:::i;:::-;9311:64;:::i;:::-;9399:3;9423:6;9418:3;9411:19;9455:4;9450:3;9446:14;9439:21;;9516:4;9506:6;9503:1;9499:14;9491:6;9487:27;9483:38;9469:52;;9544:3;9536:6;9533:15;9530:35;;;9561:1;9558;9551:12;9530:35;9597:4;9589:6;9585:17;9611:200;9627:6;9622:3;9619:15;9611:200;;;9719:17;;9749:18;;9796:4;9787:14;;;;9644;9611:200;;;-1:-1:-1;9829:7:5;9119:723;-1:-1:-1;;;;;9119:723:5:o;9847:590::-;9965:6;9973;10026:2;10014:9;10005:7;10001:23;9997:32;9994:52;;;10042:1;10039;10032:12;9994:52;10082:9;10069:23;-1:-1:-1;;;;;10107:6:5;10104:30;10101:50;;;10147:1;10144;10137:12;10101:50;10170:61;10223:7;10214:6;10203:9;10199:22;10170:61;:::i;:::-;10160:71;;;10284:2;10273:9;10269:18;10256:32;-1:-1:-1;;;;;10303:8:5;10300:32;10297:52;;;10345:1;10342;10335:12;10297:52;10368:63;10423:7;10412:8;10401:9;10397:24;10368:63;:::i;:::-;10358:73;;;9847:590;;;;;:::o;10442:738::-;10493:5;10546:3;10539:4;10531:6;10527:17;10523:27;10513:55;;10564:1;10561;10554:12;10513:55;10604:6;10591:20;10631:64;10647:47;10687:6;10647:47;:::i;10631:64::-;10719:3;10743:6;10738:3;10731:19;10775:4;10770:3;10766:14;10759:21;;10836:4;10826:6;10823:1;10819:14;10811:6;10807:27;10803:38;10789:52;;10864:3;10856:6;10853:15;10850:35;;;10881:1;10878;10871:12;10850:35;10917:4;10909:6;10905:17;10931:218;10947:6;10942:3;10939:15;10931:218;;;11029:3;11016:17;11046:28;11068:5;11046:28;:::i;:::-;11087:18;;11134:4;11125:14;;;;10964;10931:218;;11185:1140;11300:6;11308;11361:2;11349:9;11340:7;11336:23;11332:32;11329:52;;;11377:1;11374;11367:12;11329:52;11417:9;11404:23;-1:-1:-1;;;;;11442:6:5;11439:30;11436:50;;;11482:1;11479;11472:12;11436:50;11505:22;;11558:4;11550:13;;11546:27;-1:-1:-1;11536:55:5;;11587:1;11584;11577:12;11536:55;11627:2;11614:16;11650:64;11666:47;11706:6;11666:47;:::i;11650:64::-;11736:3;11760:6;11755:3;11748:19;11792:4;11787:3;11783:14;11776:21;;11849:4;11839:6;11836:1;11832:14;11828:2;11824:23;11820:34;11806:48;;11877:7;11869:6;11866:19;11863:39;;;11898:1;11895;11888:12;11863:39;11930:4;11926:2;11922:13;11911:24;;11944:152;11960:6;11955:3;11952:15;11944:152;;;12028:23;12047:3;12028:23;:::i;:::-;12016:36;;12081:4;11977:14;;;;12072;;;;11944:152;;;12115:5;-1:-1:-1;;;;12173:4:5;12158:20;;12145:34;-1:-1:-1;;;;;12191:32:5;;12188:52;;;12236:1;12233;12226:12;12188:52;12259:60;12311:7;12300:8;12289:9;12285:24;12259:60;:::i;12330:335::-;12532:2;12514:21;;;12571:2;12551:18;;;12544:30;-1:-1:-1;;;12605:2:5;12590:18;;12583:41;12656:2;12641:18;;12330:335::o;12670:356::-;12872:2;12854:21;;;12891:18;;;12884:30;12950:34;12945:2;12930:18;;12923:62;13017:2;13002:18;;12670:356::o;13031:380::-;13110:1;13106:12;;;;13153;;;13174:61;;13228:4;13220:6;13216:17;13206:27;;13174:61;13281:2;13273:6;13270:14;13250:18;13247:38;13244:161;;13327:10;13322:3;13318:20;13315:1;13308:31;13362:4;13359:1;13352:15;13390:4;13387:1;13380:15;13244:161;;13031:380;;;:::o;13750:346::-;13952:2;13934:21;;;13991:2;13971:18;;;13964:30;-1:-1:-1;;;14025:2:5;14010:18;;14003:52;14087:2;14072:18;;13750:346::o;14802:230::-;14872:6;14925:2;14913:9;14904:7;14900:23;14896:32;14893:52;;;14941:1;14938;14931:12;14893:52;-1:-1:-1;14986:16:5;;14802:230;-1:-1:-1;14802:230:5:o;15398:746::-;15513:6;15521;15529;15537;15545;15553;15606:3;15594:9;15585:7;15581:23;15577:33;15574:53;;;15623:1;15620;15613:12;15574:53;-1:-1:-1;;15668:16:5;;15774:2;15759:18;;15753:25;15870:2;15855:18;;15849:25;15966:2;15951:18;;15945:25;16036:3;16021:19;;16015:26;16107:3;16092:19;;;16086:26;15668:16;;15753:25;;-1:-1:-1;15849:25:5;;15945;;-1:-1:-1;16015:26:5;-1:-1:-1;16086:26:5;;-1:-1:-1;15398:746:5;-1:-1:-1;15398:746:5:o;16149:127::-;16210:10;16205:3;16201:20;16198:1;16191:31;16241:4;16238:1;16231:15;16265:4;16262:1;16255:15;16281:135;16320:3;16341:17;;;16338:43;;16361:18;;:::i;:::-;-1:-1:-1;16408:1:5;16397:13;;16281:135::o;16797:245::-;16864:6;16917:2;16905:9;16896:7;16892:23;16888:32;16885:52;;;16933:1;16930;16923:12;16885:52;16965:9;16959:16;16984:28;17006:5;16984:28;:::i;17047:125::-;17112:9;;;17133:10;;;17130:36;;;17146:18;;:::i;17177:334::-;17379:2;17361:21;;;17418:2;17398:18;;;17391:30;-1:-1:-1;;;17452:2:5;17437:18;;17430:40;17502:2;17487:18;;17177:334::o;17516:343::-;17718:2;17700:21;;;17757:2;17737:18;;;17730:30;-1:-1:-1;;;17791:2:5;17776:18;;17769:49;17850:2;17835:18;;17516:343::o;17864:127::-;17925:10;17920:3;17916:20;17913:1;17906:31;17956:4;17953:1;17946:15;17980:4;17977:1;17970:15;17996:128;18063:9;;;18084:11;;;18081:37;;;18098:18;;:::i;18129:127::-;18190:10;18185:3;18181:20;18178:1;18171:31;18221:4;18218:1;18211:15;18245:4;18242:1;18235:15;18261:274;-1:-1:-1;;;;;18453:32:5;;;;18435:51;;18517:2;18502:18;;18495:34;18423:2;18408:18;;18261:274::o;19696:518::-;19798:2;19793:3;19790:11;19787:421;;;19834:5;19831:1;19824:16;19878:4;19875:1;19865:18;19948:2;19936:10;19932:19;19929:1;19925:27;19919:4;19915:38;19984:4;19972:10;19969:20;19966:47;;;-1:-1:-1;20007:4:5;19966:47;20062:2;20057:3;20053:12;20050:1;20046:20;20040:4;20036:31;20026:41;;20117:81;20135:2;20128:5;20125:13;20117:81;;;20194:1;20180:16;;20161:1;20150:13;20117:81;;;20121:3;;19696:518;;;:::o;20390:1299::-;20516:3;20510:10;-1:-1:-1;;;;;20535:6:5;20532:30;20529:56;;;20565:18;;:::i;:::-;20594:97;20684:6;20644:38;20676:4;20670:11;20644:38;:::i;:::-;20638:4;20594:97;:::i;:::-;20740:4;20771:2;20760:14;;20788:1;20783:649;;;;21476:1;21493:6;21490:89;;;-1:-1:-1;21545:19:5;;;21539:26;21490:89;-1:-1:-1;;20347:1:5;20343:11;;;20339:24;20335:29;20325:40;20371:1;20367:11;;;20322:57;21592:81;;20753:930;;20783:649;19643:1;19636:14;;;19680:4;19667:18;;-1:-1:-1;;20819:20:5;;;20937:222;20951:7;20948:1;20945:14;20937:222;;;21033:19;;;21027:26;21012:42;;21140:4;21125:20;;;;21093:1;21081:14;;;;20967:12;20937:222;;;20941:3;21187:6;21178:7;21175:19;21172:201;;;21248:19;;;21242:26;-1:-1:-1;;21331:1:5;21327:14;;;21343:3;21323:24;21319:37;21315:42;21300:58;21285:74;;21172:201;-1:-1:-1;;;;21419:1:5;21403:14;;;21399:22;21386:36;;-1:-1:-1;20390:1299:5:o
Swarm Source
ipfs://310c122ee83dba0faec67462508aba3357b9e82ed25a04c70878fdbac17ce6a5
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 31 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
POL | 100.00% | $36.07 | 22,649.5 | $816,967.47 |
[ 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.