Spend less on fees, more on crypto. Buy crypto easily with MoonPay Balance. 20M+ users trust MoonPay worldwide.
Don’t invest unless you’re prepared to lose all the money you invest.
3000+ Slots, 20+ Cryptos, 75K Raffle, Sports Promos - World's largest Crypto Casino & Sportsbook - Provably Fair!
Play in crypto to make deposits and withdrawals easy! Register and get a free daily shot at a 100 000 $ jackpot.
Monthly Wagering Contest - $500,000+ rewards. Provably Fair, Low House Edge and best VIP Program!
Daily free Spin 50000 Matic ,760% Deposit Bonus, 20%Rakeback, And Get 1000000 Matic free bonus on BC.Game
Deposit BONUS 300% and Cashbacks. without verification!
Holidays are coming soon! Start betting on 1xBit and get a secret gift from Santa!
Overview
POL Balance
POL Value
$56,163.88 (@ $0.65/POL)Token Holdings
Could not find any matches!
- ERC-20 Tokens (>100)0 COMP(PoS) Compou... (COMP)$0.00@116.730 GHSTAavegotchi G... (GHST)$0.00@1.320 ADDYAdamant (ADDY)$0.00@0.03310 ANKRAnkr (PoS) (ANKR)$0.00@0.04950 ankrMATICAnkr Staked ... (ankrMA...)$0.00@2.370 OMENAugury Finan... (OMEN)$0.00@0.00110 BALBalancer (BAL)$0.00@3.680 BANKBankless Tok... (BANK)$0.00@0.0010 BATBAT (BAT)$0.00@0.29880 BIFIbeefy.financ... (BIFI)$0.00@394.410 BOBBOB (BOB)$0.00@0.99950 BONEBone Token (BONE)$0.00@0.02650 BZRXbZx Protocol... (BZRX)$0.00@0.00430 LINKChainLink To... (LINK)$0.00@28.190 CRVCRV (PoS) (CRV)$0.00@1.110 DATADATA Economy... (DATA)0 MANADecentraland (MANA)$0.00@0.65920 DPIDefiPulse In... (DPI)$0.00@168.060 DHTdHedge DAO T... (DHT)$0.00@0.10140 ETH2x-FLI-PETH 2x Flexi... (ETH2x-...)$0.00@7.140 FISHFish (FISH)$0.00@0.2320 FOXFOX (FOX)$0.00@0.08560 FRAXFrax (FRAX)$0.00@0.99440 FRAXFrax (PoS) (FRAX)0 FXSFrax Share (FXS)$0.00@4.020 COMBOFurucombo (COMBO)$0.00@0.00460 GDDYGiddy Token (GDDY)$0.00@0.00130 GRTGraph Token (GRT)$0.00@0.29260 ICEIceToken (ICE)$0.00@0.58070 INSTInstadapp (P... (INST)$0.00@8.650 INSURInsurAce (Po... (INSUR)$0.00@0.02250 IRONIRON Stablec... (IRON)0 JRTJarvis Rewar... (JRT)$0.00@0.00570 KrillKrill (Krill)$0.00@0.00080 KNCKyber Networ... (KNC)$0.00@0.72040 MKRMaker (MKR)$0.00@2,115.325 MEGAMEGA STAKE T... (MEGA)0 MTAMeta (MTA)$0.00@0.03160 MHUNTMetaShooter (MHUNT)$0.00@0.00030 MSUMetaSoccer U... (MSU)$0.00@0.0020 MVIMetaverse In... (MVI)$0.00@46.7667,212,449.2908419 miMATICmiMATIC (miMATI...)$66,904,481.85@0.99540.00000007 WOLFmoonwolf.io (WOLF)$0.00@0.000 PGOVPGOV Token (PGOV)$0.00@0.00082,222.0000019 PolyDogePolyDoge (PolyDo...)$0.00@0.000 GAJPolyGaj Toke... (GAJ)$0.00@0.84920 polyBUNNYPolygon BUNN... (polyBU...)0 POOLPoolTogether (POOL)$0.00@1.110 POPPopcorn (PoS... (POP)$0.00@0.01020 PUSDPUSD (PUSD)$0.00@0.14320 QIQi Dao (QI)$0.00@0.03150 SANDSAND (SAND)$0.00@0.80220 SXSportX (PoS) (SX)$0.00@0.10880 SUSHISushiToken (... (SUSHI)$0.00@2.260 SNXSynthetix Ne... (SNX)$0.00@3.190 BCTToucan Proto... (BCT)$0.00@0.54440 TUSDTrueUSD (TUSD)$0.00@1.0020 UMAUMA Voting T... (UMA)$0.00@3.890 UNIUniswap (PoS... (UNI)$0.00@18.051.501 USDC.eUSD Coin (Po... (USDC.e)$1.50@0.9990 VOXELVOXEL Token (VOXEL)$0.00@0.25160 WSPPWolfSafePoor... (WSPP)$0.00@0.000 WOOWOO (WOO)$0.00@0.30350 wBANWrapped Bana... (wBAN)$0.00@0.00540 WFILWrapped File... (WFIL)$0.00@8.740 ZEDZED RUN (ZED)$0.00@0.013787,223.65594081 POLPolygon Toke... (POL)$56,141.86@0.64370 WETHWrapped Ethe... (WETH)$0.00@3,936.005415,000 WPOL [ POL-MAT.COM ]ERC-20: ! (WPOL [...)15,000 WPOL [ POL-MAT.COM ]ERC-20: ! (WPOL [...)15,000 WPOL [ POL-MAT.COM ] Visit to claim rewardERC-20: ! (WPOL [...)15,000 WPOL [ POL-MAT.COM ] Claim RewardERC-20: ! (WPOL [...)15,000 WPOL [ pol-mat.com ] Visit pol-mat.com to claim reERC-20: ! (WPOL [...)15,000 WPOL [ WWW.POL-MAT.COM ]ERC-20: ! (WPOL [...)15,000 WETH [ 3ETH.NET] Visit to claim rewardERC-20: ! (WETH [...)15,000 WETH [ 3ETH.NET ] Claim RewardERC-20: ! (WETH [...)15,000 WETH [ WWW.3ETH.NET } Visit to claim rewardERC-20: ! (WETH [...)75,000 USD0 [ www.usd.gift ] Claim RewardERC-20: ! (USD0 [...)900,000,000 POL-MAT.COM - Visit to claim RewardERC-20: ! (USD) (POL-MA...)43,767 AAVE [ACCESS AAVE.ASIA]ERC-20: ! AAVE.as... (AAVE [...)9,650 Access Airdrop Link [zksyon.one]ERC-20: ! Airdrop... (Access...)9,000,000,000 pol-mat.com -Visit to claim Reward BonusERC-20: ! POL-MAT... (pol-ma...)5,000ERC20 ***0 ALGBAlgebra$0.00@0.00020.00982266 AMBERC-20: Amberium (AMB)4,000,000 LOKAERC-20: Anillo (LOKA)10 ApeCoin.com.deERC-20: ApeCoin.c... (ApeCoi...)0.003 ARZERC-20: Arzona (ARZ)0 AXERC-20: AthleteX (AX)34.45588025 ATLERC-20: Atlantis ... (ATL)30.54413136 AMETAERC-20: AtlantisM... (AMETA)33.58443735 AMETAERC-20: AtlantisM... (AMETA)30.11359456 AMETAERC-20: AtlantisM... (AMETA)34.74935373 AMETAERC-20: AtlantisM... (AMETA)28.00990731 AMETAERC-20: AtlantisM... (AMETA)28.96654082 AMETAERC-20: AtlantisM... (AMETA)31.07212748 AMETAERC-20: AtlantisM... (AMETA)31.20432855 AMETAERC-20: AtlantisM... (AMETA)30.81625136 AMETAERC-20: AtlantisM... (AMETA)30.91821082 AMETAERC-20: AtlantisM... (AMETA)NFT Tokens (83)GIVEAWAY$100,000,000ERC-1155NFT Airdrop Round1,000 UNIERC-1155NFT Airdrop Round1000 FRAXERC-1155NFT Airdrop1000 UNI NFT VoucherERC-1155NFT Airdrop1300 GHSTERC-1155NFT Airdrop Round200 LINKERC-1155NFT Airdrop200 LINKERC-1155NFT Airdrop200 LINKERC-1155NFT Airdrop200 LINKERC-1155NFT Airdrop200 LINKERC-1155NFT Airdrop Round200 LINKERC-1155NFT Airdrop200 LINKERC-1155NFT Airdrop3500 MANAERC-1155NFT Airdrop3500 MANAERC-1155NFT Airdrop Round3500 MANAERC-1155Vouchers5 stETH EventERC-1155NFTVoucher5000$ CYBERERC-1155Vouchers50M $SHIB VoucherERC-1155NFT Airdrop6000 WOOERC-1155NFT Airdrop Round8,000 CRVERC-1155AAVE-V3-POSAave Positions AirdropERC-1155APE COINAPE NFT TICKETSERC-1155APE COINAPE NFT TICKETSERC-1155APE COINAPE NFT TICKETSERC-1155APE COINAPE NFT TICKETSERC-1155ARBITDROP.INFOARBITDROP.INFO COUPONERC-1155ARBITDROP.INFOARBITDROP.INFO COUPONERC-1155FREESPINBitCase FREESPINERC-1155BitCase.OrgBitCase FreeSpin VouchersERC-1155CaptainzCaptainzERC-721https://t.ly/ethersdeBridge Airdropx3ERC-721https://t.ly/ethersdeBridge AirdropERC-721deBridge Airdrop https://t.ly/ethersdeBridge AirdropERC-721deBridge Airdrop https://t.ly/ethersdeBridge AirdropERC-721https://t.ly/ethersdeBridge Airdropx4ERC-721deBridge Airdrop https://t.ly/ethersdeBridge Airdropx3ERC-721deBridge Airdrop https://t.ly/ethersdeBridge Airdropx3ERC-721deBridge Airdrop https://t.ly/ethersdeBridge Airdrop https://t.ly/ethersx2ERC-721deBridge Airdrop https://t.ly/ethersdeBridge Airdrop https://t.ly/ethersERC-721deBridge Airdrop https://t.ly/ethersdeBridge Airdrop https://t.ly/ethersERC-721deBridge Airdrop https://t.ly/ethersdeBridge Airdrop https://t.ly/ethersERC-721dYdXEvent.comdYdX EventERC-1155dYdX EventdYdX Exchange EventERC-1155dYdX EventdYdX Exchange EventERC-1155UniEvent.PlusEvent by UniswapERC-1155STAXLedger Stax: GiveawayERC-1155STAXLedger Stax: GiveawayERC-1155STAXLedger Stax: GiveawayERC-1155STAXLedger Stax: GiveawayERC-1155STAXLedger Stax: GiveawayERC-1155STAXLedger Stax: GiveawayERC-1155PolyEvent.PlusPolygon EventERC-1155POLYTHRPolygon Token Holder RewardERC-721REVOLUTIONREVOLUTIONERC-1155UniEvent.PlusUNI EVENTERC-1155UNIUNI EVENTERC-1155UniEvent.PlusUni NFT EventERC-1155UniEvent.PlusUniswap NFT EventERC-1155UniEvent.PlusUniswap Summer EventERC-1155UNI-V3-PoSUniswap V3 Positions NFT-V1ERC-1155UNI-V3-PoSUniswap V3 Positions NFT-V1ERC-1155ERC-1155 TOKEN*[Suspicious]ERC-1155 TOKEN*[Suspicious]ERC-1155 TOKEN*[Suspicious]ERC-1155 TOKEN*[Suspicious]ERC-1155 TOKEN*[Suspicious]ERC-1155 TOKEN*[Suspicious]ERC-721 TOKEN*[Spam]ERC-1155 TOKEN*[Spam]ERC-1155 TOKEN*[Spam]ERC-1155 TOKEN*[Spam]ERC-1155 TOKEN*[Spam]ERC-1155 TOKEN*[Spam]ERC-1155 TOKEN*[Spam]ERC-1155 TOKEN*[Spam]
Multichain Info
2 addresses found via- Transactions
- Internal Transactions
- Token Transfers (ERC-20)
- NFT Transfers
- Contract
- Events
- Multichain Portfolio
- Info
Advanced Filter- Filter by Tx Type:
- Tx
- Internal Tx
- ERC-20
- NFTs
Latest 25 from a total of 345,115 transactions
Transaction Hash MethodBlockFromToApprove 65397776 2024-12-12 16:00:41 1 hr ago 1734019241 IN 0 POL$0.00 0.00153139 33.0683513 Approve 65397477 2024-12-12 15:50:03 1 hr ago 1734018603 IN 0 POL$0.00 0.00079186 32.58421235 Approve 65397457 2024-12-12 15:49:21 1 hr ago 1734018561 IN 0 POL$0.00 0.00080099 32.96022576 Approve 65396628 2024-12-12 15:19:49 1 hr ago 1734016789 IN 0 POL$0.00 0.00344736 74 Approve 65395753 2024-12-12 14:48:29 2 hrs ago 1734014909 IN 0 POL$0.00 0.00393329 85 Approve 65395236 2024-12-12 14:30:10 2 hrs ago 1734013810 IN 0 POL$0.00 0.00195661 42 Approve 65392931 2024-12-12 13:08:14 4 hrs ago 1734008894 IN 0 POL$0.00 0.00165056 35.43048576 Approve 65391496 2024-12-12 12:17:21 4 hrs ago 1734005841 IN 0 POL$0.00 0.00080196 32.99999889 Approve 65391489 2024-12-12 12:17:07 4 hrs ago 1734005827 IN 0 POL$0.00 0.00080196 32.99999659 Approve 65391483 2024-12-12 12:16:53 4 hrs ago 1734005813 IN 0 POL$0.00 0.00080196 32.9999973 Approve 65391478 2024-12-12 12:16:43 4 hrs ago 1734005803 IN 0 POL$0.00 0.00080196 33.00000333 Approve 65391476 2024-12-12 12:16:39 4 hrs ago 1734005799 IN 0 POL$0.00 0.00152783 33.00000392 Approve 65391473 2024-12-12 12:16:33 4 hrs ago 1734005793 IN 0 POL$0.00 0.00080196 33.00000458 Approve 65391468 2024-12-12 12:16:21 4 hrs ago 1734005781 IN 0 POL$0.00 0.00080196 33.00000915 Approve 65391463 2024-12-12 12:16:11 4 hrs ago 1734005771 IN 0 POL$0.00 0.00080196 33.00001199 Approve 65391458 2024-12-12 12:16:01 4 hrs ago 1734005761 IN 0 POL$0.00 0.00080196 33.00001053 Approve 65391451 2024-12-12 12:15:45 4 hrs ago 1734005745 IN 0 POL$0.00 0.00080196 33.0000074 Approve 65391446 2024-12-12 12:15:35 4 hrs ago 1734005735 IN 0 POL$0.00 0.00080196 33.00000961 Approve 65391441 2024-12-12 12:15:25 4 hrs ago 1734005725 IN 0 POL$0.00 0.00080196 33.00001014 Approve 65391436 2024-12-12 12:15:13 4 hrs ago 1734005713 IN 0 POL$0.00 0.00080196 33.00000987 Approve 65391430 2024-12-12 12:15:01 4 hrs ago 1734005701 IN 0 POL$0.00 0.00080196 33.00000991 Approve 65391425 2024-12-12 12:14:51 4 hrs ago 1734005691 IN 0 POL$0.00 0.00080196 33.00000778 Approve 65391421 2024-12-12 12:14:41 4 hrs ago 1734005681 IN 0 POL$0.00 0.00080196 33.0000093 Approve 65391416 2024-12-12 12:14:31 4 hrs ago 1734005671 IN 0 POL$0.00 0.00080196 33.00001036 Approve 65391409 2024-12-12 12:14:17 4 hrs ago 1734005657 IN 0 POL$0.00 0.00080196 33.00000581 Latest 25 internal transactions (View All)
Parent Transaction Hash Block From To 65208160 2024-12-07 21:50:03 4 days ago 1733608203 380.55758057 POL$246.12 64368541 2024-11-16 21:04:56 25 days ago 1731791096 2,153.77876574 POL$1,392.91 63889427 2024-11-04 21:50:16 37 days ago 1730757016 47.90546673 POL$30.98 63889343 2024-11-04 21:47:16 37 days ago 1730756836 92.11807018 POL$59.58 63889255 2024-11-04 21:44:10 37 days ago 1730756650 76.16732975 POL$49.26 63889255 2024-11-04 21:44:10 37 days ago 1730756650 89.18976615 POL$57.68 63889185 2024-11-04 21:41:42 37 days ago 1730756502 86.29219065 POL$55.81 63888987 2024-11-04 21:34:08 37 days ago 1730756048 244.85209439 POL$158.35 63888728 2024-11-04 21:24:58 37 days ago 1730755498 249.11526336 POL$161.11 63884483 2024-11-04 18:41:22 37 days ago 1730745682 1 POL$0.65 63881894 2024-11-04 17:05:02 38 days ago 1730739902 53.08625239 POL$34.33 63881716 2024-11-04 16:58:42 38 days ago 1730739522 471.72076875 POL$305.08 63881457 2024-11-04 16:49:30 38 days ago 1730738970 72.4187038 POL$46.84 63880858 2024-11-04 16:27:42 38 days ago 1730737662 84.35334994 POL$54.55 63838508 2024-11-03 15:08:39 39 days ago 1730646519 303.4339145 POL$196.24 63838045 2024-11-03 14:52:15 39 days ago 1730645535 58.1739719 POL$37.62 63837775 2024-11-03 14:42:35 39 days ago 1730644955 75.82428811 POL$49.04 63836873 2024-11-03 14:10:39 39 days ago 1730643039 154.67924169 POL$100.04 63836086 2024-11-03 13:42:47 39 days ago 1730641367 161.40942494 POL$104.39 63835939 2024-11-03 13:37:35 39 days ago 1730641055 50.60186911 POL$32.73 63835329 2024-11-03 13:15:45 39 days ago 1730639745 235.20609124 POL$152.11 63818786 2024-11-03 3:18:45 39 days ago 1730603925 139.84625442 POL$90.44 63818786 2024-11-03 3:18:45 39 days ago 1730603925 830.14329491 POL$536.88 63817637 2024-11-03 2:37:58 39 days ago 1730601478 137.30883471 POL$88.80 63817436 2024-11-03 2:30:46 39 days ago 1730601046 5,386.9297122 POL$3,483.88 Loading...LoadingContract Name:QiStablecoin
Compiler Versionv0.5.5+commit.47a71e8f
Contract Source Code (Solidity)
- contract Context
- - function _msgSender()
- - function _msgData()
- interface IERC20
- - function totalSupply()
- - function balanceOf(address account)
- - function transfer(address recipient, ...
- - function allowance(address owner, add ...
- - function approve(address spender, uin ...
- - function transferFrom(address sender, ...
- contract ERC20 is Context, IERC20
- - function totalSupply()
- - function balanceOf(address account)
- - function transfer(address recipient, ...
- - function allowance(address owner, add ...
- - function approve(address spender, uin ...
- - function transferFrom(address sender, ...
- - function increaseAllowance(address sp ...
- - function decreaseAllowance(address sp ...
- - function _transfer(address sender, ad ...
- - function _mint(address account, uint2 ...
- - function _burn(address account, uint2 ...
- - function _approve(address owner, addr ...
- - function _burnFrom(address account, u ...
- contract ERC20Detailed is IERC20
- - function name()
- - function symbol()
- - function decimals()
- contract Ownable is Context
- - function owner()
- - function isOwner()
- - function renounceOwnership()
- - function transferOwnership(address ne ...
- - function _transferOwnership(address n ...
- contract ReentrancyGuard
- library SafeMath
- - function add(uint256 a, uint256 b)
- - function sub(uint256 a, uint256 b)
- - function sub(uint256 a, uint256 b, st ...
- - function mul(uint256 a, uint256 b)
- - function div(uint256 a, uint256 b)
- - function div(uint256 a, uint256 b, st ...
- - function mod(uint256 a, uint256 b)
- - function mod(uint256 a, uint256 b, st ...
- contract Stablecoin is ERC20, ERC2 ...
- - function getDebtCeiling()
- - function getClosingFee()
- - function getOpeningFee()
- - function getTokenPriceSource()
- - function getEthPriceSource()
- - function calculateCollateralPropertie ...
- - function isValidCollateral(uint256 co ...
- - function createVault()
- - function destroyVault(uint256 vaultID ...
- - function transferVault(uint256 vaultI ...
- - function depositCollateral(uint256 va ...
- - function withdrawCollateral(uint256 v ...
- - function borrowToken(uint256 vaultID, ...
- - function payBackToken(uint256 vaultID ...
- - function buyRiskyVault(uint256 vaultI ...
- interface IMyVault
- - function burn(uint256 tokenId)
- - function mint(address to, uint256 tok ...
- interface PriceSource
- - function latestRoundData()
- contract QiStablecoin is Stablecoi ... *
- - function mint(address account, uint25 ...
- - function burn(address account, uint25 ...
- - function changeEthPriceSource(address ...
- - function setTokenPeg(uint256 _tokenPe ...
- - function setStabilityPool(address _po ...
- - function setDebtCeiling(uint256 amoun ...
- - function setClosingFee(uint256 amount ...
- - function setOpeningFee(uint256 amount ...
- - function setTreasury(uint256 _treasur ...
/** *Submitted for verification at polygonscan.com on 2021-06-13 */ // SPDX-License-Identifier: MIT pragma solidity 0.5.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. */ contract Context { // Empty internal constructor, to prevent people from mistakenly deploying // an instance of this contract, which should be used via inheritance. constructor () internal { } // solhint-disable-previous-line no-empty-blocks function _msgSender() internal view returns (address payable) { return msg.sender; } function _msgData() internal view returns (bytes memory) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } /** * @dev Interface of the ERC20 standard as defined in the EIP. Does not include * the optional functions; to access them see {ERC20Detailed}. */ interface IERC20 { /** * @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 `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, 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 `sender` to `recipient` 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 sender, address recipient, uint256 amount) external returns (bool); /** * @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 Implementation of the {IERC20} interface. * * This implementation is agnostic to the way tokens are created. This means * that a supply mechanism has to be added in a derived contract using {_mint}. * For a generic mechanism see {ERC20Mintable}. * * TIP: For a detailed writeup see our guide * https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How * to implement supply mechanisms]. * * We have followed general OpenZeppelin guidelines: functions revert instead * of returning `false` on failure. This behavior is nonetheless conventional * and does not conflict with the expectations of ERC20 applications. * * Additionally, an {Approval} event is emitted on calls to {transferFrom}. * This allows applications to reconstruct the allowance for all accounts just * by listening to said events. Other implementations of the EIP may not emit * these events, as it isn't required by the specification. * * Finally, the non-standard {decreaseAllowance} and {increaseAllowance} * functions have been added to mitigate the well-known issues around setting * allowances. See {IERC20-approve}. */ contract ERC20 is Context, IERC20 { using SafeMath for uint256; mapping (address => uint256) private _balances; mapping (address => mapping (address => uint256)) private _allowances; uint256 private _totalSupply; /** * @dev See {IERC20-totalSupply}. */ function totalSupply() public view returns (uint256) { return _totalSupply; } /** * @dev See {IERC20-balanceOf}. */ function balanceOf(address account) public view returns (uint256) { return _balances[account]; } /** * @dev See {IERC20-transfer}. * * Requirements: * * - `recipient` cannot be the zero address. * - the caller must have a balance of at least `amount`. */ function transfer(address recipient, uint256 amount) public returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } /** * @dev See {IERC20-allowance}. */ function allowance(address owner, address spender) public view returns (uint256) { return _allowances[owner][spender]; } /** * @dev See {IERC20-approve}. * * Requirements: * * - `spender` cannot be the zero address. */ function approve(address spender, uint256 amount) public returns (bool) { _approve(_msgSender(), spender, amount); return true; } /** * @dev See {IERC20-transferFrom}. * * Emits an {Approval} event indicating the updated allowance. This is not * required by the EIP. See the note at the beginning of {ERC20}; * * Requirements: * - `sender` and `recipient` cannot be the zero address. * - `sender` must have a balance of at least `amount`. * - the caller must have allowance for `sender`'s tokens of at least * `amount`. */ function transferFrom(address sender, address recipient, uint256 amount) public returns (bool) { _transfer(sender, recipient, amount); _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance")); return true; } /** * @dev Atomically increases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. */ function increaseAllowance(address spender, uint256 addedValue) public returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue)); return true; } /** * @dev Atomically decreases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. * - `spender` must have allowance for the caller of at least * `subtractedValue`. */ function decreaseAllowance(address spender, uint256 subtractedValue) public returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero")); return true; } /** * @dev Moves tokens `amount` from `sender` to `recipient`. * * This is internal function is equivalent to {transfer}, and can be used to * e.g. implement automatic token fees, slashing mechanisms, etc. * * Emits a {Transfer} event. * * Requirements: * * - `sender` cannot be the zero address. * - `recipient` cannot be the zero address. * - `sender` must have a balance of at least `amount`. */ function _transfer(address sender, address recipient, uint256 amount) internal { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance"); _balances[recipient] = _balances[recipient].add(amount); emit Transfer(sender, recipient, amount); } /** @dev Creates `amount` tokens and assigns them to `account`, increasing * the total supply. * * Emits a {Transfer} event with `from` set to the zero address. * * Requirements * * - `to` cannot be the zero address. */ function _mint(address account, uint256 amount) internal { require(account != address(0), "ERC20: mint to the zero address"); _totalSupply = _totalSupply.add(amount); _balances[account] = _balances[account].add(amount); emit Transfer(address(0), account, amount); } /** * @dev Destroys `amount` tokens from `account`, reducing the * total supply. * * Emits a {Transfer} event with `to` set to the zero address. * * Requirements * * - `account` cannot be the zero address. * - `account` must have at least `amount` tokens. */ function _burn(address account, uint256 amount) internal { require(account != address(0), "ERC20: burn from the zero address"); _balances[account] = _balances[account].sub(amount, "ERC20: burn amount exceeds balance"); _totalSupply = _totalSupply.sub(amount); emit Transfer(account, address(0), amount); } /** * @dev Sets `amount` as the allowance of `spender` over the `owner`s tokens. * * This is internal function is equivalent to `approve`, and can be used to * e.g. set automatic allowances for certain subsystems, etc. * * Emits an {Approval} event. * * Requirements: * * - `owner` cannot be the zero address. * - `spender` cannot be the zero address. */ function _approve(address owner, address spender, uint256 amount) internal { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } /** * @dev Destroys `amount` tokens from `account`.`amount` is then deducted * from the caller's allowance. * * See {_burn} and {_approve}. */ function _burnFrom(address account, uint256 amount) internal { _burn(account, amount); _approve(account, _msgSender(), _allowances[account][_msgSender()].sub(amount, "ERC20: burn amount exceeds allowance")); } } /** * @dev Optional functions from the ERC20 standard. */ contract ERC20Detailed is IERC20 { string private _name; string private _symbol; uint8 private _decimals; /** * @dev Sets the values for `name`, `symbol`, and `decimals`. All three of * these values are immutable: they can only be set once during * construction. */ constructor (string memory name, string memory symbol, uint8 decimals) public { _name = name; _symbol = symbol; _decimals = decimals; } /** * @dev Returns the name of the token. */ function name() public view returns (string memory) { return _name; } /** * @dev Returns the symbol of the token, usually a shorter version of the * name. */ function symbol() public view returns (string memory) { return _symbol; } /** * @dev Returns the number of decimals used to get its user representation. * For example, if `decimals` equals `2`, a balance of `505` tokens should * be displayed to a user as `5,05` (`505 / 10 ** 2`). * * Tokens usually opt for a value of 18, imitating the relationship between * Ether and Wei. * * NOTE: This information is only used for _display_ purposes: it in * no way affects any of the arithmetic of the contract, including * {IERC20-balanceOf} and {IERC20-transfer}. */ function decimals() public view returns (uint8) { return _decimals; } } 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 returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(isOwner(), "Ownable: caller is not the owner"); _; } /** * @dev Returns true if the caller is the current owner. */ function isOwner() public view returns (bool) { return _msgSender() == _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 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 onlyOwner { _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). */ function _transferOwnership(address newOwner) internal { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } /** * @dev Contract module that helps prevent reentrant calls to a function. * * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier * available, which can be applied to functions to make sure there are no nested * (reentrant) calls to them. * * Note that because there is a single `nonReentrant` guard, functions marked as * `nonReentrant` may not call one another. This can be worked around by making * those functions `private`, and then adding `external` `nonReentrant` entry * points to them. * * TIP: If you would like to learn more about reentrancy and alternative ways * to protect against it, check out our blog post * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul]. * * _Since v2.5.0:_ this module is now much more gas efficient, given net gas * metering changes introduced in the Istanbul hardfork. */ contract ReentrancyGuard { bool private _notEntered; constructor () internal { // Storing an initial non-zero value makes deployment a bit more // expensive, but in exchange the refund on every call to nonReentrant // will be lower in amount. Since refunds are capped to a percetange of // the total transaction's gas, it is best to keep them low in cases // like this one, to increase the likelihood of the full refund coming // into effect. _notEntered = true; } /** * @dev Prevents a contract from calling itself, directly or indirectly. * Calling a `nonReentrant` function from another `nonReentrant` * function is not supported. It is possible to prevent this from happening * by making the `nonReentrant` function external, and make it call a * `private` function that does the actual work. */ modifier nonReentrant() { // On the first call to nonReentrant, _notEntered will be true require(_notEntered, "ReentrancyGuard: reentrant call"); // Any calls to nonReentrant after this point will fail _notEntered = false; _; // By storing the original value once again, a refund is triggered (see // https://eips.ethereum.org/EIPS/eip-2200) _notEntered = true; } } /** * @dev Wrappers over Solidity's arithmetic operations with added overflow * checks. * * Arithmetic operations in Solidity wrap on overflow. This can easily result * in bugs, because programmers usually assume that an overflow raises an * error, which is the standard behavior in high level programming languages. * `SafeMath` restores this intuition by reverting the transaction when an * operation overflows. * * Using this library instead of the unchecked operations eliminates an entire * class of bugs, so it's recommended to use it always. */ library SafeMath { /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * - Subtraction cannot overflow. * * _Available since v2.4.0._ */ function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } /** * @dev Returns the integer division of two unsigned integers. Reverts on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } /** * @dev Returns the integer division of two unsigned integers. Reverts with custom message on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * - The divisor cannot be zero. * * _Available since v2.4.0._ */ function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { // Solidity only automatically asserts when dividing by 0 require(b > 0, errorMessage); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts with custom message when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * - The divisor cannot be zero. * * _Available since v2.4.0._ */ function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } } contract Stablecoin is ERC20, ERC20Detailed, ReentrancyGuard { PriceSource public ethPriceSource; using SafeMath for uint256; uint256 private _minimumCollateralPercentage; IMyVault public erc721; uint256 public vaultCount; uint256 public debtCeiling; uint256 public closingFee; uint256 public openingFee; uint256 public treasury; uint256 public tokenPeg; mapping(uint256 => bool) public vaultExistence; mapping(uint256 => address) public vaultOwner; mapping(uint256 => uint256) public vaultCollateral; mapping(uint256 => uint256) public vaultDebt; address public stabilityPool; event CreateVault(uint256 vaultID, address creator); event DestroyVault(uint256 vaultID); event TransferVault(uint256 vaultID, address from, address to); event DepositCollateral(uint256 vaultID, uint256 amount); event WithdrawCollateral(uint256 vaultID, uint256 amount); event BorrowToken(uint256 vaultID, uint256 amount); event PayBackToken(uint256 vaultID, uint256 amount, uint256 closingFee); event BuyRiskyVault(uint256 vaultID, address owner, address buyer, uint256 amountPaid); constructor( address ethPriceSourceAddress, uint256 minimumCollateralPercentage, string memory name, string memory symbol, address vaultAddress ) ERC20Detailed(name, symbol, 18) public { assert(ethPriceSourceAddress != address(0)); assert(minimumCollateralPercentage != 0); // | decimals start here debtCeiling=10000000000000000000;// 10 dollas closingFee=50; // 0.5% openingFee=0; // 0.0% ethPriceSource = PriceSource(ethPriceSourceAddress); stabilityPool=address(0); tokenPeg = 100000000; // $1 erc721 = IMyVault(vaultAddress); _minimumCollateralPercentage = minimumCollateralPercentage; } modifier onlyVaultOwner(uint256 vaultID) { require(vaultExistence[vaultID], "Vault does not exist"); require(vaultOwner[vaultID] == msg.sender, "Vault is not owned by you"); _; } function getDebtCeiling() external view returns (uint256){ return debtCeiling; } function getClosingFee() external view returns (uint256){ return closingFee; } function getOpeningFee() external view returns (uint256){ return openingFee; } function getTokenPriceSource() public view returns (uint256){ return tokenPeg; } function getEthPriceSource() public view returns (uint256){ (,int price,,,) = ethPriceSource.latestRoundData(); return uint256(price); } function calculateCollateralProperties(uint256 collateral, uint256 debt) private view returns (uint256, uint256) { assert(getEthPriceSource() != 0); assert(getTokenPriceSource() != 0); uint256 collateralValue = collateral.mul(getEthPriceSource() ); assert(collateralValue >= collateral); uint256 debtValue = debt.mul(getTokenPriceSource()); assert(debtValue >= debt); uint256 collateralValueTimes100 = collateralValue.mul(100); assert(collateralValueTimes100 > collateralValue); return (collateralValueTimes100, debtValue); } function isValidCollateral(uint256 collateral, uint256 debt) private view returns (bool) { (uint256 collateralValueTimes100, uint256 debtValue) = calculateCollateralProperties(collateral, debt); uint256 collateralPercentage = collateralValueTimes100.div(debtValue); return collateralPercentage >= _minimumCollateralPercentage; } function createVault() external returns (uint256) { uint256 id = vaultCount; vaultCount = vaultCount.add(1); assert(vaultCount >= id); vaultExistence[id] = true; vaultOwner[id] = msg.sender; emit CreateVault(id, msg.sender); // mint erc721 (vaultId) erc721.mint(msg.sender,id); return id; } function destroyVault(uint256 vaultID) external onlyVaultOwner(vaultID) nonReentrant { require(vaultDebt[vaultID] == 0, "Vault has outstanding debt"); if(vaultCollateral[vaultID]!=0) { msg.sender.transfer(vaultCollateral[vaultID]); } // burn erc721 (vaultId) erc721.burn(vaultID); delete vaultExistence[vaultID]; delete vaultOwner[vaultID]; delete vaultCollateral[vaultID]; delete vaultDebt[vaultID]; emit DestroyVault(vaultID); } function transferVault(uint256 vaultID, address to) external onlyVaultOwner(vaultID) { vaultOwner[vaultID] = to; // burn erc721 (vaultId) erc721.burn(vaultID); // mint erc721 (vaultId) erc721.mint(to,vaultID); emit TransferVault(vaultID, msg.sender, to); } function depositCollateral(uint256 vaultID) external payable onlyVaultOwner(vaultID) { uint256 newCollateral = vaultCollateral[vaultID].add(msg.value); assert(newCollateral >= vaultCollateral[vaultID]); vaultCollateral[vaultID] = newCollateral; emit DepositCollateral(vaultID, msg.value); } function withdrawCollateral(uint256 vaultID, uint256 amount) external onlyVaultOwner(vaultID) nonReentrant { require(vaultCollateral[vaultID] >= amount, "Vault does not have enough collateral"); uint256 newCollateral = vaultCollateral[vaultID].sub(amount); if(vaultDebt[vaultID] != 0) { require(isValidCollateral(newCollateral, vaultDebt[vaultID]), "Withdrawal would put vault below minimum collateral percentage"); } vaultCollateral[vaultID] = newCollateral; msg.sender.transfer(amount); emit WithdrawCollateral(vaultID, amount); } function borrowToken(uint256 vaultID, uint256 amount) external onlyVaultOwner(vaultID) { require(amount > 0, "Must borrow non-zero amount"); require(totalSupply().add(amount) <= debtCeiling, "borrowToken: Cannot mint over totalSupply."); uint256 newDebt = vaultDebt[vaultID].add(amount); assert(newDebt > vaultDebt[vaultID]); require(isValidCollateral(vaultCollateral[vaultID], newDebt), "Borrow would put vault below minimum collateral percentage"); vaultDebt[vaultID] = newDebt; _mint(msg.sender, amount); emit BorrowToken(vaultID, amount); } function payBackToken(uint256 vaultID, uint256 amount) external onlyVaultOwner(vaultID) { require(balanceOf(msg.sender) >= amount, "Token balance too low"); require(vaultDebt[vaultID] >= amount, "Vault debt less than amount to pay back"); uint256 _closingFee = (amount.mul(closingFee).mul(getTokenPriceSource())).div(getEthPriceSource().mul(10000)); vaultDebt[vaultID] = vaultDebt[vaultID].sub(amount); vaultCollateral[vaultID]=vaultCollateral[vaultID].sub(_closingFee); vaultCollateral[treasury]=vaultCollateral[treasury].add(_closingFee); _burn(msg.sender, amount); emit PayBackToken(vaultID, amount, _closingFee); } function buyRiskyVault(uint256 vaultID) external { require(vaultExistence[vaultID], "Vault does not exist"); require(stabilityPool==address(0) || msg.sender == stabilityPool, "buyRiskyVault disabled for public"); (uint256 collateralValueTimes100, uint256 debtValue) = calculateCollateralProperties(vaultCollateral[vaultID], vaultDebt[vaultID]); uint256 collateralPercentage = collateralValueTimes100.div(debtValue); require(collateralPercentage < _minimumCollateralPercentage, "Vault is not below minimum collateral percentage"); uint256 maximumDebtValue = collateralValueTimes100.div(_minimumCollateralPercentage); uint256 maximumDebt = maximumDebtValue.div(getTokenPriceSource() ); uint256 debtDifference = vaultDebt[vaultID].sub(maximumDebt); require(balanceOf(msg.sender) >= debtDifference, "Token balance too low to pay off outstanding debt"); address previousOwner = vaultOwner[vaultID]; vaultOwner[vaultID] = msg.sender; vaultDebt[vaultID] = maximumDebt; uint256 _closingFee = (debtDifference.mul(closingFee).mul(getTokenPriceSource()) ).div(getEthPriceSource().mul(10000)); vaultCollateral[vaultID]=vaultCollateral[vaultID].sub(_closingFee); vaultCollateral[treasury]=vaultCollateral[treasury].add(_closingFee); _burn(msg.sender, debtDifference); // burn erc721 (vaultId) erc721.burn(vaultID); // mint erc721 (vaultId) erc721.mint(msg.sender,vaultID); emit BuyRiskyVault(vaultID, previousOwner, msg.sender, debtDifference); } } interface IMyVault { function burn(uint256 tokenId) external; function mint(address to, uint256 tokenId) external; } interface PriceSource { function latestRoundData() external view returns (uint80 roundId, int256 answer, uint256 startedAt, uint256 updatedAt, uint80 answeredInRound); } contract QiStablecoin is Stablecoin, Ownable { constructor( address ethPriceSourceAddress, uint256 minimumCollateralPercentage, string memory name, string memory symbol, address vaultAddress ) Stablecoin( ethPriceSourceAddress, minimumCollateralPercentage, name, symbol, vaultAddress ) public { treasury=0; } function mint(address account, uint256 amount) external onlyOwner() { _mint(account, amount); } function burn(address account, uint256 amount) external onlyOwner() { _burn(account, amount); } function changeEthPriceSource(address ethPriceSourceAddress) external onlyOwner() { ethPriceSource = PriceSource(ethPriceSourceAddress); } function setTokenPeg(uint256 _tokenPeg) external onlyOwner() { tokenPeg = _tokenPeg; } function setStabilityPool(address _pool) external onlyOwner() { stabilityPool = _pool; } function setDebtCeiling(uint256 amount) external onlyOwner() { require(totalSupply()<=amount, "setCeiling: Must be over the amount of outstanding debt."); debtCeiling = amount; } function setClosingFee(uint256 amount) external onlyOwner() { closingFee = amount; } function setOpeningFee(uint256 amount) external onlyOwner() { openingFee = amount; } function setTreasury(uint256 _treasury) external onlyOwner() { require(vaultExistence[_treasury], "Vault does not exist"); treasury = _treasury; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
[{"constant":false,"inputs":[{"name":"_tokenPeg","type":"uint256"}],"name":"setTokenPeg","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"stabilityPool","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"ethPriceSourceAddress","type":"address"}],"name":"changeEthPriceSource","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"vaultID","type":"uint256"},{"name":"amount","type":"uint256"}],"name":"borrowToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"spender","type":"address"},{"name":"amount","type":"uint256"}],"name":"approve","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"closingFee","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"sender","type":"address"},{"name":"recipient","type":"address"},{"name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"spender","type":"address"},{"name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"vaultOwner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"amount","type":"uint256"}],"name":"setClosingFee","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"vaultID","type":"uint256"},{"name":"to","type":"address"}],"name":"transferVault","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"account","type":"address"},{"name":"amount","type":"uint256"}],"name":"mint","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"ethPriceSource","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"createVault","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"treasury","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"account","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_treasury","type":"uint256"}],"name":"setTreasury","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"renounceOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"openingFee","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"vaultID","type":"uint256"},{"name":"amount","type":"uint256"}],"name":"withdrawCollateral","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"vaultID","type":"uint256"},{"name":"amount","type":"uint256"}],"name":"payBackToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"vaultID","type":"uint256"}],"name":"destroyVault","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"amount","type":"uint256"}],"name":"setOpeningFee","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"isOwner","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getDebtCeiling","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getEthPriceSource","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_pool","type":"address"}],"name":"setStabilityPool","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"account","type":"address"},{"name":"amount","type":"uint256"}],"name":"burn","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"spender","type":"address"},{"name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"vaultExistence","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getClosingFee","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"vaultCount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"recipient","type":"address"},{"name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getOpeningFee","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"amount","type":"uint256"}],"name":"setDebtCeiling","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"vaultID","type":"uint256"}],"name":"depositCollateral","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"erc721","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getTokenPriceSource","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"tokenPeg","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"vaultID","type":"uint256"}],"name":"buyRiskyVault","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"vaultDebt","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"vaultCollateral","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"owner","type":"address"},{"name":"spender","type":"address"}],"name":"allowance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"debtCeiling","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"ethPriceSourceAddress","type":"address"},{"name":"minimumCollateralPercentage","type":"uint256"},{"name":"name","type":"string"},{"name":"symbol","type":"string"},{"name":"vaultAddress","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"vaultID","type":"uint256"},{"indexed":false,"name":"creator","type":"address"}],"name":"CreateVault","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"vaultID","type":"uint256"}],"name":"DestroyVault","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"vaultID","type":"uint256"},{"indexed":false,"name":"from","type":"address"},{"indexed":false,"name":"to","type":"address"}],"name":"TransferVault","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"vaultID","type":"uint256"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"DepositCollateral","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"vaultID","type":"uint256"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"WithdrawCollateral","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"vaultID","type":"uint256"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"BorrowToken","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"vaultID","type":"uint256"},{"indexed":false,"name":"amount","type":"uint256"},{"indexed":false,"name":"closingFee","type":"uint256"}],"name":"PayBackToken","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"vaultID","type":"uint256"},{"indexed":false,"name":"owner","type":"address"},{"indexed":false,"name":"buyer","type":"address"},{"indexed":false,"name":"amountPaid","type":"uint256"}],"name":"BuyRiskyVault","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"spender","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Approval","type":"event"}]
Contract Creation Code
60806040523480156200001157600080fd5b506040516200365638038062003656833981018060405260a08110156200003757600080fd5b81516020830151604084018051929491938201926401000000008111156200005e57600080fd5b820160208101848111156200007257600080fd5b81516401000000008111828201871017156200008d57600080fd5b50509291906020018051640100000000811115620000aa57600080fd5b82016020810184811115620000be57600080fd5b8151640100000000811182820187101715620000d957600080fd5b50506020918201518551919450925086918691869186918691849184916012916200010b916003919086019062000241565b5081516200012190600490602085019062000241565b506005805461ff001960ff90931660ff19909116179190911661010017905550506001600160a01b03851615156200015557fe5b8315156200015f57fe5b678ac7230489e800006009556032600a556000600b8190556005805462010000600160b01b031916620100006001600160a01b0398891602179055601280546001600160a01b03199081169091556305f5e100600d556007805490911692909616919091179094555050600655620001dd6200023c602090811b901c565b601380546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350506000600c5550620002e392505050565b335b90565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200028457805160ff1916838001178555620002b4565b82800160010185558215620002b4579182015b82811115620002b457825182559160200191906001019062000297565b50620002c2929150620002c6565b5090565b6200023e91905b80821115620002c25760008155600101620002cd565b61336380620002f36000396000f3fe6080604052600436106103295760003560e01c806386375994116101a5578063a9059cbb116100ec578063cdfedd6311610095578063d4a9b2c51161006f578063d4a9b2c514610a72578063dd62ed3e14610a9c578063e1c84ea414610ad7578063f2fde38b14610aec57610329565b8063cdfedd6314610a09578063ce77f24314610a1e578063d310f49b14610a4857610329565b8063bad4a01f116100c6578063bad4a01f146109c2578063bca6ce64146109df578063cd44db1b146109f457610329565b8063a9059cbb1461094a578063ab806f1514610983578063b1511cc91461099857610329565b806398d721e01161014e578063a525323d11610128578063a525323d146108f6578063a5e9883714610920578063a7c6a1001461093557610329565b806398d721e0146108515780639dc29fac14610884578063a457c2d7146108bd57610329565b806394cd4ba71161017f57806394cd4ba71461081257806395d89b411461082757806398c3f2db1461083c57610329565b806386375994146107be5780638da5cb5b146107e85780638f32d59b146107fd57610329565b80633db991771161027457806370a082311161021d578063728bbbb5116101f7578063728bbbb51461071f578063767a7b051461073457806385af3c161461076457806385e290a31461079457610329565b806370a08231146106ad5780637139c929146106e0578063715018a61461070a57610329565b806342f371c61161024e57806342f371c61461066e5780635d12928b1461068357806361d027b31461069857610329565b80633db99177146105d25780633e61facd146105fc57806340c10f191461063557610329565b806318160ddd116102d6578063313ce567116102b0578063313ce56714610544578063395093511461056f5780633c2ecfe5146105a857610329565b806318160ddd146104c55780631c883e7b146104ec57806323b872dd1461050157610329565b80630796053211610307578063079605321461041557806308ec592714610448578063095ea7b31461047857610329565b806301e49d0a1461032e578063048c661d1461035a57806306fdde031461038b575b600080fd5b34801561033a57600080fd5b506103586004803603602081101561035157600080fd5b5035610b1f565b005b34801561036657600080fd5b5061036f610b70565b604080516001600160a01b039092168252519081900360200190f35b34801561039757600080fd5b506103a0610b7f565b6040805160208082528351818301528351919283929083019185019080838360005b838110156103da5781810151838201526020016103c2565b50505050905090810190601f1680156104075780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561042157600080fd5b506103586004803603602081101561043857600080fd5b50356001600160a01b0316610c15565b34801561045457600080fd5b506103586004803603604081101561046b57600080fd5b5080359060200135610ca1565b34801561048457600080fd5b506104b16004803603604081101561049b57600080fd5b506001600160a01b038135169060200135610f19565b604080519115158252519081900360200190f35b3480156104d157600080fd5b506104da610f37565b60408051918252519081900360200190f35b3480156104f857600080fd5b506104da610f3d565b34801561050d57600080fd5b506104b16004803603606081101561052457600080fd5b506001600160a01b03813581169160208101359091169060400135610f43565b34801561055057600080fd5b50610559610fd0565b6040805160ff9092168252519081900360200190f35b34801561057b57600080fd5b506104b16004803603604081101561059257600080fd5b506001600160a01b038135169060200135610fd9565b3480156105b457600080fd5b5061036f600480360360208110156105cb57600080fd5b503561102d565b3480156105de57600080fd5b50610358600480360360208110156105f557600080fd5b5035611048565b34801561060857600080fd5b506103586004803603604081101561061f57600080fd5b50803590602001356001600160a01b0316611099565b34801561064157600080fd5b506103586004803603604081101561065857600080fd5b506001600160a01b0381351690602001356112df565b34801561067a57600080fd5b5061036f611339565b34801561068f57600080fd5b506104da61134e565b3480156106a457600080fd5b506104da61146a565b3480156106b957600080fd5b506104da600480360360208110156106d057600080fd5b50356001600160a01b0316611470565b3480156106ec57600080fd5b506103586004803603602081101561070357600080fd5b503561148b565b34801561071657600080fd5b50610358611544565b34801561072b57600080fd5b506104da6115da565b34801561074057600080fd5b506103586004803603604081101561075757600080fd5b50803590602001356115e0565b34801561077057600080fd5b506103586004803603604081101561078757600080fd5b5080359060200135611890565b3480156107a057600080fd5b50610358600480360360208110156107b757600080fd5b5035611b3b565b3480156107ca57600080fd5b50610358600480360360208110156107e157600080fd5b5035611e37565b3480156107f457600080fd5b5061036f611e88565b34801561080957600080fd5b506104b1611e97565b34801561081e57600080fd5b506104da611ebd565b34801561083357600080fd5b506103a0611ec3565b34801561084857600080fd5b506104da611f24565b34801561085d57600080fd5b506103586004803603602081101561087457600080fd5b50356001600160a01b0316611faa565b34801561089057600080fd5b50610358600480360360408110156108a757600080fd5b506001600160a01b038135169060200135612018565b3480156108c957600080fd5b506104b1600480360360408110156108e057600080fd5b506001600160a01b03813516906020013561206e565b34801561090257600080fd5b506104b16004803603602081101561091957600080fd5b50356120dc565b34801561092c57600080fd5b506104da6120f1565b34801561094157600080fd5b506104da6120f7565b34801561095657600080fd5b506104b16004803603604081101561096d57600080fd5b506001600160a01b0381351690602001356120fd565b34801561098f57600080fd5b506104da612111565b3480156109a457600080fd5b50610358600480360360208110156109bb57600080fd5b5035612117565b610358600480360360208110156109d857600080fd5b50356121b1565b3480156109eb57600080fd5b5061036f612317565b348015610a0057600080fd5b506104da612326565b348015610a1557600080fd5b506104da61232c565b348015610a2a57600080fd5b5061035860048036036020811015610a4157600080fd5b5035612332565b348015610a5457600080fd5b506104da60048036036020811015610a6b57600080fd5b503561272c565b348015610a7e57600080fd5b506104da60048036036020811015610a9557600080fd5b503561273e565b348015610aa857600080fd5b506104da60048036036040811015610abf57600080fd5b506001600160a01b0381358116916020013516612750565b348015610ae357600080fd5b506104da61277b565b348015610af857600080fd5b5061035860048036036020811015610b0f57600080fd5b50356001600160a01b0316612781565b610b27611e97565b1515610b6b5760408051600160e51b62461bcd02815260206004820181905260248201526000805160206131f5833981519152604482015290519081900360640190fd5b600d55565b6012546001600160a01b031681565b60038054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610c0b5780601f10610be057610100808354040283529160200191610c0b565b820191906000526020600020905b815481529060010190602001808311610bee57829003601f168201915b5050505050905090565b610c1d611e97565b1515610c615760408051600160e51b62461bcd02815260206004820181905260248201526000805160206131f5833981519152604482015290519081900360640190fd5b600580546001600160a01b0390921662010000027fffffffffffffffffffff0000000000000000000000000000000000000000ffff909216919091179055565b6000828152600e6020526040902054829060ff161515610d0b5760408051600160e51b62461bcd02815260206004820152601460248201527f5661756c7420646f6573206e6f74206578697374000000000000000000000000604482015290519081900360640190fd5b6000818152600f60205260409020546001600160a01b03163314610d795760408051600160e51b62461bcd02815260206004820152601960248201527f5661756c74206973206e6f74206f776e656420627920796f7500000000000000604482015290519081900360640190fd5b811515610dd05760408051600160e51b62461bcd02815260206004820152601b60248201527f4d75737420626f72726f77206e6f6e2d7a65726f20616d6f756e740000000000604482015290519081900360640190fd5b600954610deb83610ddf610f37565b9063ffffffff6127d916565b1115610e2b57604051600160e51b62461bcd02815260040180806020018281038252602a81526020018061330e602a913960400191505060405180910390fd5b600083815260116020526040812054610e4a908463ffffffff6127d916565b6000858152601160205260409020549091508111610e6457fe5b600084815260106020526040902054610e7d908261283d565b1515610ebd57604051600160e51b62461bcd02815260040180806020018281038252603a815260200180613236603a913960400191505060405180910390fd5b6000848152601160205260409020819055610ed83384612872565b604080518581526020810185905281517f3e08df88d8e28f37df9bf227d3142ac506a364403445661a60891a49ed6792ca929181900390910190a150505050565b6000610f2d610f26612967565b848461296b565b5060015b92915050565b60025490565b600a5481565b6000610f50848484612a61565b610fc684610f5c612967565b610fc1856040518060600160405280602881526020016131cd602891396001600160a01b038a16600090815260016020526040812090610f9a612967565b6001600160a01b03168152602081019190915260400160002054919063ffffffff612bc716565b61296b565b5060019392505050565b60055460ff1690565b6000610f2d610fe6612967565b84610fc18560016000610ff7612967565b6001600160a01b03908116825260208083019390935260409182016000908120918c16815292529020549063ffffffff6127d916565b600f602052600090815260409020546001600160a01b031681565b611050611e97565b15156110945760408051600160e51b62461bcd02815260206004820181905260248201526000805160206131f5833981519152604482015290519081900360640190fd5b600a55565b6000828152600e6020526040902054829060ff1615156111035760408051600160e51b62461bcd02815260206004820152601460248201527f5661756c7420646f6573206e6f74206578697374000000000000000000000000604482015290519081900360640190fd5b6000818152600f60205260409020546001600160a01b031633146111715760408051600160e51b62461bcd02815260206004820152601960248201527f5661756c74206973206e6f74206f776e656420627920796f7500000000000000604482015290519081900360640190fd5b6000838152600f602052604080822080546001600160a01b0319166001600160a01b038681169190911790915560075482517f42966c680000000000000000000000000000000000000000000000000000000081526004810188905292519116926342966c68926024808201939182900301818387803b1580156111f457600080fd5b505af1158015611208573d6000803e3d6000fd5b5050600754604080517f40c10f190000000000000000000000000000000000000000000000000000000081526001600160a01b0387811660048301526024820189905291519190921693506340c10f199250604480830192600092919082900301818387803b15801561127a57600080fd5b505af115801561128e573d6000803e3d6000fd5b5050604080518681523360208201526001600160a01b0386168183015290517fa8159d062909288cfe1bc71a9cb71a800664f2658fc2588d52676a844f1b0f139350908190036060019150a1505050565b6112e7611e97565b151561132b5760408051600160e51b62461bcd02815260206004820181905260248201526000805160206131f5833981519152604482015290519081900360640190fd5b6113358282612872565b5050565b6005546201000090046001600160a01b031681565b60085460009061136581600163ffffffff6127d916565b600881905581111561137357fe5b6000818152600e60209081526040808320805460ff19166001179055600f82529182902080546001600160a01b0319163390811790915582518481529182015281517f8b6c1d05c678fa59695e26465a85918ce0fc63a88f74af53d1daef8f0a9c7804929181900390910190a1600754604080517f40c10f190000000000000000000000000000000000000000000000000000000081523360048201526024810184905290516001600160a01b03909216916340c10f199160448082019260009290919082900301818387803b15801561144c57600080fd5b505af1158015611460573d6000803e3d6000fd5b5092935050505090565b600c5481565b6001600160a01b031660009081526020819052604090205490565b611493611e97565b15156114d75760408051600160e51b62461bcd02815260206004820181905260248201526000805160206131f5833981519152604482015290519081900360640190fd5b6000818152600e602052604090205460ff16151561153f5760408051600160e51b62461bcd02815260206004820152601460248201527f5661756c7420646f6573206e6f74206578697374000000000000000000000000604482015290519081900360640190fd5b600c55565b61154c611e97565b15156115905760408051600160e51b62461bcd02815260206004820181905260248201526000805160206131f5833981519152604482015290519081900360640190fd5b6013546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3601380546001600160a01b0319169055565b600b5481565b6000828152600e6020526040902054829060ff16151561164a5760408051600160e51b62461bcd02815260206004820152601460248201527f5661756c7420646f6573206e6f74206578697374000000000000000000000000604482015290519081900360640190fd5b6000818152600f60205260409020546001600160a01b031633146116b85760408051600160e51b62461bcd02815260206004820152601960248201527f5661756c74206973206e6f74206f776e656420627920796f7500000000000000604482015290519081900360640190fd5b600554610100900460ff1615156117195760408051600160e51b62461bcd02815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b6005805461ff001916905560008381526010602052604090205482111561177457604051600160e51b62461bcd0281526004018080602001828103825260258152602001806130b96025913960400191505060405180910390fd5b600083815260106020526040812054611793908463ffffffff612c6116565b60008581526011602052604090205490915015611804576000848152601160205260409020546117c490829061283d565b151561180457604051600160e51b62461bcd02815260040180806020018281038252603e81526020018061316e603e913960400191505060405180910390fd5b60008481526010602052604080822083905551339185156108fc02918691818181858888f1935050505015801561183f573d6000803e3d6000fd5b50604080518581526020810185905281517f6c0ea3bea9dd66afa8f9d39d6eb93d833466190330813b42835efc650dca4cb9929181900390910190a150506005805461ff0019166101001790555050565b6000828152600e6020526040902054829060ff1615156118fa5760408051600160e51b62461bcd02815260206004820152601460248201527f5661756c7420646f6573206e6f74206578697374000000000000000000000000604482015290519081900360640190fd5b6000818152600f60205260409020546001600160a01b031633146119685760408051600160e51b62461bcd02815260206004820152601960248201527f5661756c74206973206e6f74206f776e656420627920796f7500000000000000604482015290519081900360640190fd5b8161197233611470565b10156119c85760408051600160e51b62461bcd02815260206004820152601560248201527f546f6b656e2062616c616e636520746f6f206c6f770000000000000000000000604482015290519081900360640190fd5b600083815260116020526040902054821115611a1857604051600160e51b62461bcd0281526004018080602001828103825260278152602001806131476027913960400191505060405180910390fd5b6000611a62611a37612710611a2b611f24565b9063ffffffff612ca316565b611a56611a42612326565b600a54611a2b90889063ffffffff612ca316565b9063ffffffff612d0316565b600085815260116020526040902054909150611a84908463ffffffff612c6116565b600085815260116020908152604080832093909355601090522054611aaf908263ffffffff612c6116565b60008581526010602052604080822092909255600c5481522054611ad9908263ffffffff6127d916565b600c54600090815260106020526040902055611af53384612d45565b604080518581526020810185905280820183905290517f31f96762af4051f367185773cc2f55bfb112a6c114b3407ded1f321a9eb199ac9181900360600190a150505050565b6000818152600e6020526040902054819060ff161515611ba55760408051600160e51b62461bcd02815260206004820152601460248201527f5661756c7420646f6573206e6f74206578697374000000000000000000000000604482015290519081900360640190fd5b6000818152600f60205260409020546001600160a01b03163314611c135760408051600160e51b62461bcd02815260206004820152601960248201527f5661756c74206973206e6f74206f776e656420627920796f7500000000000000604482015290519081900360640190fd5b600554610100900460ff161515611c745760408051600160e51b62461bcd02815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b6005805461ff001916905560008281526011602052604090205415611ce35760408051600160e51b62461bcd02815260206004820152601a60248201527f5661756c7420686173206f75747374616e64696e672064656274000000000000604482015290519081900360640190fd5b60008281526010602052604090205415611d3357600082815260106020526040808220549051339282156108fc02929190818181858888f19350505050158015611d31573d6000803e3d6000fd5b505b600754604080517f42966c680000000000000000000000000000000000000000000000000000000081526004810185905290516001600160a01b03909216916342966c689160248082019260009290919082900301818387803b158015611d9957600080fd5b505af1158015611dad573d6000803e3d6000fd5b5050506000838152600e60209081526040808320805460ff19169055600f825280832080546001600160a01b0319169055601082528083208390556011825280832092909255815185815291517f4fe08624ee65b341c38ab9693d216b909d4ddee1bc8d3fe0fea14026c361b4659350918290030190a150506005805461ff001916610100179055565b611e3f611e97565b1515611e835760408051600160e51b62461bcd02815260206004820181905260248201526000805160206131f5833981519152604482015290519081900360640190fd5b600b55565b6013546001600160a01b031690565b6013546000906001600160a01b0316611eae612967565b6001600160a01b031614905090565b60095490565b60048054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610c0b5780601f10610be057610100808354040283529160200191610c0b565b600080600560029054906101000a90046001600160a01b03166001600160a01b031663feaf968c6040518163ffffffff1660e01b815260040160a06040518083038186803b158015611f7557600080fd5b505afa158015611f89573d6000803e3d6000fd5b505050506040513d60a0811015611f9f57600080fd5b506020015191505090565b611fb2611e97565b1515611ff65760408051600160e51b62461bcd02815260206004820181905260248201526000805160206131f5833981519152604482015290519081900360640190fd5b601280546001600160a01b0319166001600160a01b0392909216919091179055565b612020611e97565b15156120645760408051600160e51b62461bcd02815260206004820181905260248201526000805160206131f5833981519152604482015290519081900360640190fd5b6113358282612d45565b6000610f2d61207b612967565b84610fc1856040518060600160405280602581526020016132e960259139600160006120a5612967565b6001600160a01b03908116825260208083019390935260409182016000908120918d1681529252902054919063ffffffff612bc716565b600e6020526000908152604090205460ff1681565b600a5490565b60085481565b6000610f2d61210a612967565b8484612a61565b600b5490565b61211f611e97565b15156121635760408051600160e51b62461bcd02815260206004820181905260248201526000805160206131f5833981519152604482015290519081900360640190fd5b8061216c610f37565b11156121ac57604051600160e51b62461bcd0281526004018080602001828103825260388152602001806130de6038913960400191505060405180910390fd5b600955565b6000818152600e6020526040902054819060ff16151561221b5760408051600160e51b62461bcd02815260206004820152601460248201527f5661756c7420646f6573206e6f74206578697374000000000000000000000000604482015290519081900360640190fd5b6000818152600f60205260409020546001600160a01b031633146122895760408051600160e51b62461bcd02815260206004820152601960248201527f5661756c74206973206e6f74206f776e656420627920796f7500000000000000604482015290519081900360640190fd5b6000828152601060205260408120546122a8903463ffffffff6127d916565b6000848152601060205260409020549091508110156122c357fe5b6000838152601060209081526040918290208390558151858152349181019190915281517f52c4e7127ec34e8fc95f09ce2d06b4f00acca12ccbcdfb246ef67ee6aefe068d929181900390910190a1505050565b6007546001600160a01b031681565b600d5490565b600d5481565b6000818152600e602052604090205460ff16151561239a5760408051600160e51b62461bcd02815260206004820152601460248201527f5661756c7420646f6573206e6f74206578697374000000000000000000000000604482015290519081900360640190fd5b6012546001600160a01b031615806123bc57506012546001600160a01b031633145b15156123fc57604051600160e51b62461bcd0281526004018080602001828103825260218152602001806130726021913960400191505060405180910390fd5b6000818152601060209081526040808320546011909252822054829161242191612e46565b90925090506000612438838363ffffffff612d0316565b600654909150811061247e57604051600160e51b62461bcd0281526004018080602001828103825260308152602001806132956030913960400191505060405180910390fd5b600061249560065485612d0390919063ffffffff16565b905060006124b16124a4612326565b839063ffffffff612d0316565b600087815260116020526040812054919250906124d4908363ffffffff612c6116565b9050806124e033611470565b101561252057604051600160e51b62461bcd0281526004018080602001828103825260318152602001806131166031913960400191505060405180910390fd5b6000878152600f6020908152604080832080546001600160a01b031981163317909155601190925282208490556001600160a01b031690612568611a37612710611a2b611f24565b60008a81526010602052604090205490915061258a908263ffffffff612c6116565b60008a81526010602052604080822092909255600c54815220546125b4908263ffffffff6127d916565b600c546000908152601060205260409020556125d03384612d45565b600754604080517f42966c68000000000000000000000000000000000000000000000000000000008152600481018c905290516001600160a01b03909216916342966c689160248082019260009290919082900301818387803b15801561263657600080fd5b505af115801561264a573d6000803e3d6000fd5b5050600754604080517f40c10f19000000000000000000000000000000000000000000000000000000008152336004820152602481018e905290516001600160a01b0390921693506340c10f19925060448082019260009290919082900301818387803b1580156126ba57600080fd5b505af11580156126ce573d6000803e3d6000fd5b5050604080518c81526001600160a01b038616602082015233818301526060810187905290517fd5f2917d6c1a1057183be88f3f1c867cf597030f2cd1197a2fdfe1f51376d0cb9350908190036080019150a1505050505050505050565b60116020526000908152604090205481565b60106020526000908152604090205481565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b60095481565b612789611e97565b15156127cd5760408051600160e51b62461bcd02815260206004820181905260248201526000805160206131f5833981519152604482015290519081900360640190fd5b6127d681612ed1565b50565b6000828201838110156128365760408051600160e51b62461bcd02815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b600080600061284c8585612e46565b90925090506000612863838363ffffffff612d0316565b60065411159695505050505050565b6001600160a01b03821615156128d25760408051600160e51b62461bcd02815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b6002546128e5908263ffffffff6127d916565b6002556001600160a01b038216600090815260208190526040902054612911908263ffffffff6127d916565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b3390565b6001600160a01b03831615156129b557604051600160e51b62461bcd0281526004018080602001828103825260248152602001806132c56024913960400191505060405180910390fd5b6001600160a01b03821615156129ff57604051600160e51b62461bcd0281526004018080602001828103825260228152602001806130506022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b0383161515612aab57604051600160e51b62461bcd0281526004018080602001828103825260258152602001806132706025913960400191505060405180910390fd5b6001600160a01b0382161515612af557604051600160e51b62461bcd028152600401808060200182810382526023815260200180612fe56023913960400191505060405180910390fd5b612b3881604051806060016040528060268152602001613093602691396001600160a01b038616600090815260208190526040902054919063ffffffff612bc716565b6001600160a01b038085166000908152602081905260408082209390935590841681522054612b6d908263ffffffff6127d916565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b60008184841115612c5957604051600160e51b62461bcd0281526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612c1e578181015183820152602001612c06565b50505050905090810190601f168015612c4b5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600061283683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612bc7565b6000821515612cb457506000610f31565b828202828482811515612cc357fe5b041461283657604051600160e51b62461bcd0281526004018080602001828103825260218152602001806131ac6021913960400191505060405180910390fd5b600061283683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612f77565b6001600160a01b0382161515612d8f57604051600160e51b62461bcd0281526004018080602001828103825260218152602001806132156021913960400191505060405180910390fd5b612dd281604051806060016040528060228152602001613008602291396001600160a01b038516600090815260208190526040902054919063ffffffff612bc716565b6001600160a01b038316600090815260208190526040902055600254612dfe908263ffffffff612c6116565b6002556040805182815290516000916001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b600080612e51611f24565b1515612e5957fe5b612e61612326565b1515612e6957fe5b6000612e83612e76611f24565b869063ffffffff612ca316565b905084811015612e8f57fe5b6000612e9c612e76612326565b905084811015612ea857fe5b6000612ebb83606463ffffffff612ca316565b9050828111612ec657fe5b969095509350505050565b6001600160a01b0381161515612f1b57604051600160e51b62461bcd02815260040180806020018281038252602681526020018061302a6026913960400191505060405180910390fd5b6013546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3601380546001600160a01b0319166001600160a01b0392909216919091179055565b600081831515612fcc57604051600160e51b62461bcd02815260040180806020018281038252838181518152602001915080519060200190808383600083811015612c1e578181015183820152602001612c06565b5060008385811515612fda57fe5b049594505050505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e63654f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f20616464726573736275795269736b795661756c742064697361626c656420666f72207075626c696345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e63655661756c7420646f6573206e6f74206861766520656e6f75676820636f6c6c61746572616c7365744365696c696e673a204d757374206265206f7665722074686520616d6f756e74206f66206f75747374616e64696e6720646562742e546f6b656e2062616c616e636520746f6f206c6f7720746f20706179206f6666206f75747374616e64696e6720646562745661756c742064656274206c657373207468616e20616d6f756e7420746f20706179206261636b5769746864726177616c20776f756c6420707574207661756c742062656c6f77206d696e696d756d20636f6c6c61746572616c2070657263656e74616765536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63654f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657245524332303a206275726e2066726f6d20746865207a65726f2061646472657373426f72726f7720776f756c6420707574207661756c742062656c6f77206d696e696d756d20636f6c6c61746572616c2070657263656e7461676545524332303a207472616e736665722066726f6d20746865207a65726f20616464726573735661756c74206973206e6f742062656c6f77206d696e696d756d20636f6c6c61746572616c2070657263656e7461676545524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f626f72726f77546f6b656e3a2043616e6e6f74206d696e74206f76657220746f74616c537570706c792ea165627a7a7230582005d207fc2c8f9df9374ed18425b95a9d516d5797c70807383300e96291122c040029000000000000000000000000ab594600376ec9fd91f8e885dadf0ce036862de0000000000000000000000000000000000000000000000000000000000000009600000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000006af1d9376a7060488558cfb443939ed67bb9b48d00000000000000000000000000000000000000000000000000000000000000076d694d415449430000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000076d694d4154494300000000000000000000000000000000000000000000000000Deployed Bytecode
0x6080604052600436106103295760003560e01c806386375994116101a5578063a9059cbb116100ec578063cdfedd6311610095578063d4a9b2c51161006f578063d4a9b2c514610a72578063dd62ed3e14610a9c578063e1c84ea414610ad7578063f2fde38b14610aec57610329565b8063cdfedd6314610a09578063ce77f24314610a1e578063d310f49b14610a4857610329565b8063bad4a01f116100c6578063bad4a01f146109c2578063bca6ce64146109df578063cd44db1b146109f457610329565b8063a9059cbb1461094a578063ab806f1514610983578063b1511cc91461099857610329565b806398d721e01161014e578063a525323d11610128578063a525323d146108f6578063a5e9883714610920578063a7c6a1001461093557610329565b806398d721e0146108515780639dc29fac14610884578063a457c2d7146108bd57610329565b806394cd4ba71161017f57806394cd4ba71461081257806395d89b411461082757806398c3f2db1461083c57610329565b806386375994146107be5780638da5cb5b146107e85780638f32d59b146107fd57610329565b80633db991771161027457806370a082311161021d578063728bbbb5116101f7578063728bbbb51461071f578063767a7b051461073457806385af3c161461076457806385e290a31461079457610329565b806370a08231146106ad5780637139c929146106e0578063715018a61461070a57610329565b806342f371c61161024e57806342f371c61461066e5780635d12928b1461068357806361d027b31461069857610329565b80633db99177146105d25780633e61facd146105fc57806340c10f191461063557610329565b806318160ddd116102d6578063313ce567116102b0578063313ce56714610544578063395093511461056f5780633c2ecfe5146105a857610329565b806318160ddd146104c55780631c883e7b146104ec57806323b872dd1461050157610329565b80630796053211610307578063079605321461041557806308ec592714610448578063095ea7b31461047857610329565b806301e49d0a1461032e578063048c661d1461035a57806306fdde031461038b575b600080fd5b34801561033a57600080fd5b506103586004803603602081101561035157600080fd5b5035610b1f565b005b34801561036657600080fd5b5061036f610b70565b604080516001600160a01b039092168252519081900360200190f35b34801561039757600080fd5b506103a0610b7f565b6040805160208082528351818301528351919283929083019185019080838360005b838110156103da5781810151838201526020016103c2565b50505050905090810190601f1680156104075780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561042157600080fd5b506103586004803603602081101561043857600080fd5b50356001600160a01b0316610c15565b34801561045457600080fd5b506103586004803603604081101561046b57600080fd5b5080359060200135610ca1565b34801561048457600080fd5b506104b16004803603604081101561049b57600080fd5b506001600160a01b038135169060200135610f19565b604080519115158252519081900360200190f35b3480156104d157600080fd5b506104da610f37565b60408051918252519081900360200190f35b3480156104f857600080fd5b506104da610f3d565b34801561050d57600080fd5b506104b16004803603606081101561052457600080fd5b506001600160a01b03813581169160208101359091169060400135610f43565b34801561055057600080fd5b50610559610fd0565b6040805160ff9092168252519081900360200190f35b34801561057b57600080fd5b506104b16004803603604081101561059257600080fd5b506001600160a01b038135169060200135610fd9565b3480156105b457600080fd5b5061036f600480360360208110156105cb57600080fd5b503561102d565b3480156105de57600080fd5b50610358600480360360208110156105f557600080fd5b5035611048565b34801561060857600080fd5b506103586004803603604081101561061f57600080fd5b50803590602001356001600160a01b0316611099565b34801561064157600080fd5b506103586004803603604081101561065857600080fd5b506001600160a01b0381351690602001356112df565b34801561067a57600080fd5b5061036f611339565b34801561068f57600080fd5b506104da61134e565b3480156106a457600080fd5b506104da61146a565b3480156106b957600080fd5b506104da600480360360208110156106d057600080fd5b50356001600160a01b0316611470565b3480156106ec57600080fd5b506103586004803603602081101561070357600080fd5b503561148b565b34801561071657600080fd5b50610358611544565b34801561072b57600080fd5b506104da6115da565b34801561074057600080fd5b506103586004803603604081101561075757600080fd5b50803590602001356115e0565b34801561077057600080fd5b506103586004803603604081101561078757600080fd5b5080359060200135611890565b3480156107a057600080fd5b50610358600480360360208110156107b757600080fd5b5035611b3b565b3480156107ca57600080fd5b50610358600480360360208110156107e157600080fd5b5035611e37565b3480156107f457600080fd5b5061036f611e88565b34801561080957600080fd5b506104b1611e97565b34801561081e57600080fd5b506104da611ebd565b34801561083357600080fd5b506103a0611ec3565b34801561084857600080fd5b506104da611f24565b34801561085d57600080fd5b506103586004803603602081101561087457600080fd5b50356001600160a01b0316611faa565b34801561089057600080fd5b50610358600480360360408110156108a757600080fd5b506001600160a01b038135169060200135612018565b3480156108c957600080fd5b506104b1600480360360408110156108e057600080fd5b506001600160a01b03813516906020013561206e565b34801561090257600080fd5b506104b16004803603602081101561091957600080fd5b50356120dc565b34801561092c57600080fd5b506104da6120f1565b34801561094157600080fd5b506104da6120f7565b34801561095657600080fd5b506104b16004803603604081101561096d57600080fd5b506001600160a01b0381351690602001356120fd565b34801561098f57600080fd5b506104da612111565b3480156109a457600080fd5b50610358600480360360208110156109bb57600080fd5b5035612117565b610358600480360360208110156109d857600080fd5b50356121b1565b3480156109eb57600080fd5b5061036f612317565b348015610a0057600080fd5b506104da612326565b348015610a1557600080fd5b506104da61232c565b348015610a2a57600080fd5b5061035860048036036020811015610a4157600080fd5b5035612332565b348015610a5457600080fd5b506104da60048036036020811015610a6b57600080fd5b503561272c565b348015610a7e57600080fd5b506104da60048036036020811015610a9557600080fd5b503561273e565b348015610aa857600080fd5b506104da60048036036040811015610abf57600080fd5b506001600160a01b0381358116916020013516612750565b348015610ae357600080fd5b506104da61277b565b348015610af857600080fd5b5061035860048036036020811015610b0f57600080fd5b50356001600160a01b0316612781565b610b27611e97565b1515610b6b5760408051600160e51b62461bcd02815260206004820181905260248201526000805160206131f5833981519152604482015290519081900360640190fd5b600d55565b6012546001600160a01b031681565b60038054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610c0b5780601f10610be057610100808354040283529160200191610c0b565b820191906000526020600020905b815481529060010190602001808311610bee57829003601f168201915b5050505050905090565b610c1d611e97565b1515610c615760408051600160e51b62461bcd02815260206004820181905260248201526000805160206131f5833981519152604482015290519081900360640190fd5b600580546001600160a01b0390921662010000027fffffffffffffffffffff0000000000000000000000000000000000000000ffff909216919091179055565b6000828152600e6020526040902054829060ff161515610d0b5760408051600160e51b62461bcd02815260206004820152601460248201527f5661756c7420646f6573206e6f74206578697374000000000000000000000000604482015290519081900360640190fd5b6000818152600f60205260409020546001600160a01b03163314610d795760408051600160e51b62461bcd02815260206004820152601960248201527f5661756c74206973206e6f74206f776e656420627920796f7500000000000000604482015290519081900360640190fd5b811515610dd05760408051600160e51b62461bcd02815260206004820152601b60248201527f4d75737420626f72726f77206e6f6e2d7a65726f20616d6f756e740000000000604482015290519081900360640190fd5b600954610deb83610ddf610f37565b9063ffffffff6127d916565b1115610e2b57604051600160e51b62461bcd02815260040180806020018281038252602a81526020018061330e602a913960400191505060405180910390fd5b600083815260116020526040812054610e4a908463ffffffff6127d916565b6000858152601160205260409020549091508111610e6457fe5b600084815260106020526040902054610e7d908261283d565b1515610ebd57604051600160e51b62461bcd02815260040180806020018281038252603a815260200180613236603a913960400191505060405180910390fd5b6000848152601160205260409020819055610ed83384612872565b604080518581526020810185905281517f3e08df88d8e28f37df9bf227d3142ac506a364403445661a60891a49ed6792ca929181900390910190a150505050565b6000610f2d610f26612967565b848461296b565b5060015b92915050565b60025490565b600a5481565b6000610f50848484612a61565b610fc684610f5c612967565b610fc1856040518060600160405280602881526020016131cd602891396001600160a01b038a16600090815260016020526040812090610f9a612967565b6001600160a01b03168152602081019190915260400160002054919063ffffffff612bc716565b61296b565b5060019392505050565b60055460ff1690565b6000610f2d610fe6612967565b84610fc18560016000610ff7612967565b6001600160a01b03908116825260208083019390935260409182016000908120918c16815292529020549063ffffffff6127d916565b600f602052600090815260409020546001600160a01b031681565b611050611e97565b15156110945760408051600160e51b62461bcd02815260206004820181905260248201526000805160206131f5833981519152604482015290519081900360640190fd5b600a55565b6000828152600e6020526040902054829060ff1615156111035760408051600160e51b62461bcd02815260206004820152601460248201527f5661756c7420646f6573206e6f74206578697374000000000000000000000000604482015290519081900360640190fd5b6000818152600f60205260409020546001600160a01b031633146111715760408051600160e51b62461bcd02815260206004820152601960248201527f5661756c74206973206e6f74206f776e656420627920796f7500000000000000604482015290519081900360640190fd5b6000838152600f602052604080822080546001600160a01b0319166001600160a01b038681169190911790915560075482517f42966c680000000000000000000000000000000000000000000000000000000081526004810188905292519116926342966c68926024808201939182900301818387803b1580156111f457600080fd5b505af1158015611208573d6000803e3d6000fd5b5050600754604080517f40c10f190000000000000000000000000000000000000000000000000000000081526001600160a01b0387811660048301526024820189905291519190921693506340c10f199250604480830192600092919082900301818387803b15801561127a57600080fd5b505af115801561128e573d6000803e3d6000fd5b5050604080518681523360208201526001600160a01b0386168183015290517fa8159d062909288cfe1bc71a9cb71a800664f2658fc2588d52676a844f1b0f139350908190036060019150a1505050565b6112e7611e97565b151561132b5760408051600160e51b62461bcd02815260206004820181905260248201526000805160206131f5833981519152604482015290519081900360640190fd5b6113358282612872565b5050565b6005546201000090046001600160a01b031681565b60085460009061136581600163ffffffff6127d916565b600881905581111561137357fe5b6000818152600e60209081526040808320805460ff19166001179055600f82529182902080546001600160a01b0319163390811790915582518481529182015281517f8b6c1d05c678fa59695e26465a85918ce0fc63a88f74af53d1daef8f0a9c7804929181900390910190a1600754604080517f40c10f190000000000000000000000000000000000000000000000000000000081523360048201526024810184905290516001600160a01b03909216916340c10f199160448082019260009290919082900301818387803b15801561144c57600080fd5b505af1158015611460573d6000803e3d6000fd5b5092935050505090565b600c5481565b6001600160a01b031660009081526020819052604090205490565b611493611e97565b15156114d75760408051600160e51b62461bcd02815260206004820181905260248201526000805160206131f5833981519152604482015290519081900360640190fd5b6000818152600e602052604090205460ff16151561153f5760408051600160e51b62461bcd02815260206004820152601460248201527f5661756c7420646f6573206e6f74206578697374000000000000000000000000604482015290519081900360640190fd5b600c55565b61154c611e97565b15156115905760408051600160e51b62461bcd02815260206004820181905260248201526000805160206131f5833981519152604482015290519081900360640190fd5b6013546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3601380546001600160a01b0319169055565b600b5481565b6000828152600e6020526040902054829060ff16151561164a5760408051600160e51b62461bcd02815260206004820152601460248201527f5661756c7420646f6573206e6f74206578697374000000000000000000000000604482015290519081900360640190fd5b6000818152600f60205260409020546001600160a01b031633146116b85760408051600160e51b62461bcd02815260206004820152601960248201527f5661756c74206973206e6f74206f776e656420627920796f7500000000000000604482015290519081900360640190fd5b600554610100900460ff1615156117195760408051600160e51b62461bcd02815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b6005805461ff001916905560008381526010602052604090205482111561177457604051600160e51b62461bcd0281526004018080602001828103825260258152602001806130b96025913960400191505060405180910390fd5b600083815260106020526040812054611793908463ffffffff612c6116565b60008581526011602052604090205490915015611804576000848152601160205260409020546117c490829061283d565b151561180457604051600160e51b62461bcd02815260040180806020018281038252603e81526020018061316e603e913960400191505060405180910390fd5b60008481526010602052604080822083905551339185156108fc02918691818181858888f1935050505015801561183f573d6000803e3d6000fd5b50604080518581526020810185905281517f6c0ea3bea9dd66afa8f9d39d6eb93d833466190330813b42835efc650dca4cb9929181900390910190a150506005805461ff0019166101001790555050565b6000828152600e6020526040902054829060ff1615156118fa5760408051600160e51b62461bcd02815260206004820152601460248201527f5661756c7420646f6573206e6f74206578697374000000000000000000000000604482015290519081900360640190fd5b6000818152600f60205260409020546001600160a01b031633146119685760408051600160e51b62461bcd02815260206004820152601960248201527f5661756c74206973206e6f74206f776e656420627920796f7500000000000000604482015290519081900360640190fd5b8161197233611470565b10156119c85760408051600160e51b62461bcd02815260206004820152601560248201527f546f6b656e2062616c616e636520746f6f206c6f770000000000000000000000604482015290519081900360640190fd5b600083815260116020526040902054821115611a1857604051600160e51b62461bcd0281526004018080602001828103825260278152602001806131476027913960400191505060405180910390fd5b6000611a62611a37612710611a2b611f24565b9063ffffffff612ca316565b611a56611a42612326565b600a54611a2b90889063ffffffff612ca316565b9063ffffffff612d0316565b600085815260116020526040902054909150611a84908463ffffffff612c6116565b600085815260116020908152604080832093909355601090522054611aaf908263ffffffff612c6116565b60008581526010602052604080822092909255600c5481522054611ad9908263ffffffff6127d916565b600c54600090815260106020526040902055611af53384612d45565b604080518581526020810185905280820183905290517f31f96762af4051f367185773cc2f55bfb112a6c114b3407ded1f321a9eb199ac9181900360600190a150505050565b6000818152600e6020526040902054819060ff161515611ba55760408051600160e51b62461bcd02815260206004820152601460248201527f5661756c7420646f6573206e6f74206578697374000000000000000000000000604482015290519081900360640190fd5b6000818152600f60205260409020546001600160a01b03163314611c135760408051600160e51b62461bcd02815260206004820152601960248201527f5661756c74206973206e6f74206f776e656420627920796f7500000000000000604482015290519081900360640190fd5b600554610100900460ff161515611c745760408051600160e51b62461bcd02815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b6005805461ff001916905560008281526011602052604090205415611ce35760408051600160e51b62461bcd02815260206004820152601a60248201527f5661756c7420686173206f75747374616e64696e672064656274000000000000604482015290519081900360640190fd5b60008281526010602052604090205415611d3357600082815260106020526040808220549051339282156108fc02929190818181858888f19350505050158015611d31573d6000803e3d6000fd5b505b600754604080517f42966c680000000000000000000000000000000000000000000000000000000081526004810185905290516001600160a01b03909216916342966c689160248082019260009290919082900301818387803b158015611d9957600080fd5b505af1158015611dad573d6000803e3d6000fd5b5050506000838152600e60209081526040808320805460ff19169055600f825280832080546001600160a01b0319169055601082528083208390556011825280832092909255815185815291517f4fe08624ee65b341c38ab9693d216b909d4ddee1bc8d3fe0fea14026c361b4659350918290030190a150506005805461ff001916610100179055565b611e3f611e97565b1515611e835760408051600160e51b62461bcd02815260206004820181905260248201526000805160206131f5833981519152604482015290519081900360640190fd5b600b55565b6013546001600160a01b031690565b6013546000906001600160a01b0316611eae612967565b6001600160a01b031614905090565b60095490565b60048054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610c0b5780601f10610be057610100808354040283529160200191610c0b565b600080600560029054906101000a90046001600160a01b03166001600160a01b031663feaf968c6040518163ffffffff1660e01b815260040160a06040518083038186803b158015611f7557600080fd5b505afa158015611f89573d6000803e3d6000fd5b505050506040513d60a0811015611f9f57600080fd5b506020015191505090565b611fb2611e97565b1515611ff65760408051600160e51b62461bcd02815260206004820181905260248201526000805160206131f5833981519152604482015290519081900360640190fd5b601280546001600160a01b0319166001600160a01b0392909216919091179055565b612020611e97565b15156120645760408051600160e51b62461bcd02815260206004820181905260248201526000805160206131f5833981519152604482015290519081900360640190fd5b6113358282612d45565b6000610f2d61207b612967565b84610fc1856040518060600160405280602581526020016132e960259139600160006120a5612967565b6001600160a01b03908116825260208083019390935260409182016000908120918d1681529252902054919063ffffffff612bc716565b600e6020526000908152604090205460ff1681565b600a5490565b60085481565b6000610f2d61210a612967565b8484612a61565b600b5490565b61211f611e97565b15156121635760408051600160e51b62461bcd02815260206004820181905260248201526000805160206131f5833981519152604482015290519081900360640190fd5b8061216c610f37565b11156121ac57604051600160e51b62461bcd0281526004018080602001828103825260388152602001806130de6038913960400191505060405180910390fd5b600955565b6000818152600e6020526040902054819060ff16151561221b5760408051600160e51b62461bcd02815260206004820152601460248201527f5661756c7420646f6573206e6f74206578697374000000000000000000000000604482015290519081900360640190fd5b6000818152600f60205260409020546001600160a01b031633146122895760408051600160e51b62461bcd02815260206004820152601960248201527f5661756c74206973206e6f74206f776e656420627920796f7500000000000000604482015290519081900360640190fd5b6000828152601060205260408120546122a8903463ffffffff6127d916565b6000848152601060205260409020549091508110156122c357fe5b6000838152601060209081526040918290208390558151858152349181019190915281517f52c4e7127ec34e8fc95f09ce2d06b4f00acca12ccbcdfb246ef67ee6aefe068d929181900390910190a1505050565b6007546001600160a01b031681565b600d5490565b600d5481565b6000818152600e602052604090205460ff16151561239a5760408051600160e51b62461bcd02815260206004820152601460248201527f5661756c7420646f6573206e6f74206578697374000000000000000000000000604482015290519081900360640190fd5b6012546001600160a01b031615806123bc57506012546001600160a01b031633145b15156123fc57604051600160e51b62461bcd0281526004018080602001828103825260218152602001806130726021913960400191505060405180910390fd5b6000818152601060209081526040808320546011909252822054829161242191612e46565b90925090506000612438838363ffffffff612d0316565b600654909150811061247e57604051600160e51b62461bcd0281526004018080602001828103825260308152602001806132956030913960400191505060405180910390fd5b600061249560065485612d0390919063ffffffff16565b905060006124b16124a4612326565b839063ffffffff612d0316565b600087815260116020526040812054919250906124d4908363ffffffff612c6116565b9050806124e033611470565b101561252057604051600160e51b62461bcd0281526004018080602001828103825260318152602001806131166031913960400191505060405180910390fd5b6000878152600f6020908152604080832080546001600160a01b031981163317909155601190925282208490556001600160a01b031690612568611a37612710611a2b611f24565b60008a81526010602052604090205490915061258a908263ffffffff612c6116565b60008a81526010602052604080822092909255600c54815220546125b4908263ffffffff6127d916565b600c546000908152601060205260409020556125d03384612d45565b600754604080517f42966c68000000000000000000000000000000000000000000000000000000008152600481018c905290516001600160a01b03909216916342966c689160248082019260009290919082900301818387803b15801561263657600080fd5b505af115801561264a573d6000803e3d6000fd5b5050600754604080517f40c10f19000000000000000000000000000000000000000000000000000000008152336004820152602481018e905290516001600160a01b0390921693506340c10f19925060448082019260009290919082900301818387803b1580156126ba57600080fd5b505af11580156126ce573d6000803e3d6000fd5b5050604080518c81526001600160a01b038616602082015233818301526060810187905290517fd5f2917d6c1a1057183be88f3f1c867cf597030f2cd1197a2fdfe1f51376d0cb9350908190036080019150a1505050505050505050565b60116020526000908152604090205481565b60106020526000908152604090205481565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b60095481565b612789611e97565b15156127cd5760408051600160e51b62461bcd02815260206004820181905260248201526000805160206131f5833981519152604482015290519081900360640190fd5b6127d681612ed1565b50565b6000828201838110156128365760408051600160e51b62461bcd02815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b600080600061284c8585612e46565b90925090506000612863838363ffffffff612d0316565b60065411159695505050505050565b6001600160a01b03821615156128d25760408051600160e51b62461bcd02815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b6002546128e5908263ffffffff6127d916565b6002556001600160a01b038216600090815260208190526040902054612911908263ffffffff6127d916565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b3390565b6001600160a01b03831615156129b557604051600160e51b62461bcd0281526004018080602001828103825260248152602001806132c56024913960400191505060405180910390fd5b6001600160a01b03821615156129ff57604051600160e51b62461bcd0281526004018080602001828103825260228152602001806130506022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b0383161515612aab57604051600160e51b62461bcd0281526004018080602001828103825260258152602001806132706025913960400191505060405180910390fd5b6001600160a01b0382161515612af557604051600160e51b62461bcd028152600401808060200182810382526023815260200180612fe56023913960400191505060405180910390fd5b612b3881604051806060016040528060268152602001613093602691396001600160a01b038616600090815260208190526040902054919063ffffffff612bc716565b6001600160a01b038085166000908152602081905260408082209390935590841681522054612b6d908263ffffffff6127d916565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b60008184841115612c5957604051600160e51b62461bcd0281526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612c1e578181015183820152602001612c06565b50505050905090810190601f168015612c4b5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600061283683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612bc7565b6000821515612cb457506000610f31565b828202828482811515612cc357fe5b041461283657604051600160e51b62461bcd0281526004018080602001828103825260218152602001806131ac6021913960400191505060405180910390fd5b600061283683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612f77565b6001600160a01b0382161515612d8f57604051600160e51b62461bcd0281526004018080602001828103825260218152602001806132156021913960400191505060405180910390fd5b612dd281604051806060016040528060228152602001613008602291396001600160a01b038516600090815260208190526040902054919063ffffffff612bc716565b6001600160a01b038316600090815260208190526040902055600254612dfe908263ffffffff612c6116565b6002556040805182815290516000916001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b600080612e51611f24565b1515612e5957fe5b612e61612326565b1515612e6957fe5b6000612e83612e76611f24565b869063ffffffff612ca316565b905084811015612e8f57fe5b6000612e9c612e76612326565b905084811015612ea857fe5b6000612ebb83606463ffffffff612ca316565b9050828111612ec657fe5b969095509350505050565b6001600160a01b0381161515612f1b57604051600160e51b62461bcd02815260040180806020018281038252602681526020018061302a6026913960400191505060405180910390fd5b6013546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3601380546001600160a01b0319166001600160a01b0392909216919091179055565b600081831515612fcc57604051600160e51b62461bcd02815260040180806020018281038252838181518152602001915080519060200190808383600083811015612c1e578181015183820152602001612c06565b5060008385811515612fda57fe5b049594505050505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e63654f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f20616464726573736275795269736b795661756c742064697361626c656420666f72207075626c696345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e63655661756c7420646f6573206e6f74206861766520656e6f75676820636f6c6c61746572616c7365744365696c696e673a204d757374206265206f7665722074686520616d6f756e74206f66206f75747374616e64696e6720646562742e546f6b656e2062616c616e636520746f6f206c6f7720746f20706179206f6666206f75747374616e64696e6720646562745661756c742064656274206c657373207468616e20616d6f756e7420746f20706179206261636b5769746864726177616c20776f756c6420707574207661756c742062656c6f77206d696e696d756d20636f6c6c61746572616c2070657263656e74616765536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63654f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657245524332303a206275726e2066726f6d20746865207a65726f2061646472657373426f72726f7720776f756c6420707574207661756c742062656c6f77206d696e696d756d20636f6c6c61746572616c2070657263656e7461676545524332303a207472616e736665722066726f6d20746865207a65726f20616464726573735661756c74206973206e6f742062656c6f77206d696e696d756d20636f6c6c61746572616c2070657263656e7461676545524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f626f72726f77546f6b656e3a2043616e6e6f74206d696e74206f76657220746f74616c537570706c792ea165627a7a7230582005d207fc2c8f9df9374ed18425b95a9d516d5797c70807383300e96291122c040029
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000ab594600376ec9fd91f8e885dadf0ce036862de0000000000000000000000000000000000000000000000000000000000000009600000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000006af1d9376a7060488558cfb443939ed67bb9b48d00000000000000000000000000000000000000000000000000000000000000076d694d415449430000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000076d694d4154494300000000000000000000000000000000000000000000000000
-----Decoded View---------------
Arg [0] : ethPriceSourceAddress (address): 0xAB594600376Ec9fD91F8e885dADF0CE036862dE0
Arg [1] : minimumCollateralPercentage (uint256): 150
Arg [2] : name (string): miMATIC
Arg [3] : symbol (string): miMATIC
Arg [4] : vaultAddress (address): 0x6AF1d9376a7060488558cfB443939eD67Bb9b48d
-----Encoded View---------------
9 Constructor Arguments found :
Arg [0] : 000000000000000000000000ab594600376ec9fd91f8e885dadf0ce036862de0
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000096
Arg [2] : 00000000000000000000000000000000000000000000000000000000000000a0
Arg [3] : 00000000000000000000000000000000000000000000000000000000000000e0
Arg [4] : 0000000000000000000000006af1d9376a7060488558cfb443939ed67bb9b48d
Arg [5] : 0000000000000000000000000000000000000000000000000000000000000007
Arg [6] : 6d694d4154494300000000000000000000000000000000000000000000000000
Arg [7] : 0000000000000000000000000000000000000000000000000000000000000007
Arg [8] : 6d694d4154494300000000000000000000000000000000000000000000000000Deployed Bytecode Sourcemap
32861:1640:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33690:100;;8:9:-1;5:2;;;30:1;27;20:12;5:2;33690:100:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;33690:100:0;;:::i;:::-;;24150:28;;8:9:-1;5:2;;;30:1;27;20:12;5:2;24150:28:0;;;:::i;:::-;;;;-1:-1:-1;;;;;24150:28:0;;;;;;;;;;;;;;12792:83;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12792:83:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;12792:83:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33530:152;;8:9:-1;5:2;;;30:1;27;20:12;5:2;33530:152:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;33530:152:0;-1:-1:-1;;;;;33530:152:0;;:::i;29532:629::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;29532:629:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;29532:629:0;;;;;;;:::i;6431:152::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6431:152:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;6431:152:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;5452:91;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5452:91:0;;;:::i;:::-;;;;;;;;;;;;;;;;23807:25;;8:9:-1;5:2;;;30:1;27;20:12;5:2;23807:25:0;;;:::i;7055:304::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7055:304:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;7055:304:0;;;;;;;;;;;;;;;;;:::i;13644:83::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13644:83:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;7768:210;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7768:210:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;7768:210:0;;;;;;;;:::i;23988:45::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;23988:45:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;23988:45:0;;:::i;34117:98::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;34117:98:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;34117:98:0;;:::i;28231:319::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;28231:319:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;28231:319:0;;;;;;-1:-1:-1;;;;;28231:319:0;;:::i;33296:109::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;33296:109:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;33296:109:0;;;;;;;;:::i;23577:33::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;23577:33:0;;;:::i;27279:388::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;27279:388:0;;;:::i;23873:23::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;23873:23:0;;;:::i;5606:110::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5606:110:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5606:110:0;-1:-1:-1;;;;;5606:110:0;;:::i;34329:169::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;34329:169:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;34329:169:0;;:::i;15046:140::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15046:140:0;;;:::i;23839:25::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;23839:25:0;;;:::i;28903:621::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;28903:621:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;28903:621:0;;;;;;;:::i;30169:703::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;30169:703:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;30169:703:0;;;;;;;:::i;27675:548::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;27675:548:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;27675:548:0;;:::i;34223:98::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;34223:98:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;34223:98:0;;:::i;14235:79::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14235:79:0;;;:::i;14601:94::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14601:94:0;;;:::i;25703:::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;25703:94:0;;;:::i;12994:87::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12994:87:0;;;:::i;26107:159::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;26107:159:0;;;:::i;33798:102::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;33798:102:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;33798:102:0;-1:-1:-1;;;;;33798:102:0;;:::i;33413:109::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;33413:109:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;33413:109:0;;;;;;;;:::i;8481:261::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8481:261:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;8481:261:0;;;;;;;;:::i;23935:46::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;23935:46:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;23935:46:0;;:::i;25805:92::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;25805:92:0;;;:::i;23742:25::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;23742:25:0;;;:::i;5929:158::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5929:158:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;5929:158:0;;;;;;;;:::i;25903:92::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;25903:92:0;;;:::i;33908:201::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;33908:201:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;33908:201:0;;:::i;28558:337::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;28558:337:0;;:::i;23711:22::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;23711:22:0;;;:::i;26003:94::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;26003:94:0;;;:::i;23903:23::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;23903:23:0;;;:::i;30880:1662::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;30880:1662:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;30880:1662:0;;:::i;24097:44::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;24097:44:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;24097:44:0;;:::i;24040:50::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;24040:50:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;24040:50:0;;:::i;6150:134::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6150:134:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;6150:134:0;;;;;;;;;;:::i;23774:26::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;23774:26:0;;;:::i;15341:109::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15341:109:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;15341:109:0;-1:-1:-1;;;;;15341:109:0;;:::i;33690:100::-;14447:9;:7;:9::i;:::-;14439:54;;;;;;;-1:-1:-1;;;;;14439:54:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;14439:54:0;;;;;;;;;;;;;;;33762:8;:20;33690:100::o;24150:28::-;;;-1:-1:-1;;;;;24150:28:0;;:::o;12792:83::-;12862:5;12855:12;;;;;;;;-1:-1:-1;;12855:12:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12829:13;;12855:12;;12862:5;;12855:12;;12862:5;12855:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12792:83;:::o;33530:152::-;14447:9;:7;:9::i;:::-;14439:54;;;;;;;-1:-1:-1;;;;;14439:54:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;14439:54:0;;;;;;;;;;;;;;;33623:14;:51;;-1:-1:-1;;;;;33623:51:0;;;;;;;;;;;;;;;33530:152::o;29532:629::-;25545:23;;;;:14;:23;;;;;;29610:7;;25545:23;;25537:56;;;;;;;-1:-1:-1;;;;;25537:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;25612:19;;;;:10;:19;;;;;;-1:-1:-1;;;;;25612:19:0;25635:10;25612:33;25604:71;;;;;-1:-1:-1;;;;;25604:71:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;29638:10;;;29630:50;;;;;-1:-1:-1;;;;;29630:50:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;29728:11;;29699:25;29717:6;29699:13;:11;:13::i;:::-;:17;:25;:17;:25;:::i;:::-;:40;;29691:95;;;;-1:-1:-1;;;;;29691:95:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29799:15;29817:18;;;:9;:18;;;;;;:30;;29840:6;29817:30;:22;:30;:::i;:::-;29877:18;;;;:9;:18;;;;;;29799:48;;-1:-1:-1;29867:28:0;;29860:36;;;;29935:24;;;;:15;:24;;;;;;29917:52;;29961:7;29917:17;:52::i;:::-;29909:123;;;;;;-1:-1:-1;;;;;29909:123:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30045:18;;;;:9;:18;;;;;:28;;;30084:25;30090:10;30102:6;30084:5;:25::i;:::-;30125:28;;;;;;;;;;;;;;;;;;;;;;;;;25686:1;29532:629;;;:::o;6431:152::-;6497:4;6514:39;6523:12;:10;:12::i;:::-;6537:7;6546:6;6514:8;:39::i;:::-;-1:-1:-1;6571:4:0;6431:152;;;;;:::o;5452:91::-;5523:12;;5452:91;:::o;23807:25::-;;;;:::o;7055:304::-;7144:4;7161:36;7171:6;7179:9;7190:6;7161:9;:36::i;:::-;7208:121;7217:6;7225:12;:10;:12::i;:::-;7239:89;7277:6;7239:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7239:19:0;;;;;;:11;:19;;;;;;7259:12;:10;:12::i;:::-;-1:-1:-1;;;;;7239:33:0;;;;;;;;;;;;-1:-1:-1;7239:33:0;;;:89;;:37;:89;:::i;:::-;7208:8;:121::i;:::-;-1:-1:-1;7347:4:0;7055:304;;;;;:::o;13644:83::-;13710:9;;;;13644:83;:::o;7768:210::-;7848:4;7865:83;7874:12;:10;:12::i;:::-;7888:7;7897:50;7936:10;7897:11;:25;7909:12;:10;:12::i;:::-;-1:-1:-1;;;;;7897:25:0;;;;;;;;;;;;;;;;;-1:-1:-1;7897:25:0;;;:34;;;;;;;;;;;:50;:38;:50;:::i;23988:45::-;;;;;;;;;;;;-1:-1:-1;;;;;23988:45:0;;:::o;34117:98::-;14447:9;:7;:9::i;:::-;14439:54;;;;;;;-1:-1:-1;;;;;14439:54:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;14439:54:0;;;;;;;;;;;;;;;34188:10;:19;34117:98::o;28231:319::-;25545:23;;;;:14;:23;;;;;;28307:7;;25545:23;;25537:56;;;;;;;-1:-1:-1;;;;;25537:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;25612:19;;;;:10;:19;;;;;;-1:-1:-1;;;;;25612:19:0;25635:10;25612:33;25604:71;;;;;-1:-1:-1;;;;;25604:71:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;28327:19;;;;:10;:19;;;;;;:24;;-1:-1:-1;;;;;;28327:24:0;-1:-1:-1;;;;;28327:24:0;;;;;;;;;;28398:6;;:20;;;;;;;;;;;;;:6;;;:11;;:20;;;;;;;;;;;28327:19;28398:6;:20;;;5:2:-1;;;;30:1;27;20:12;5:2;28398:20:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;28463:6:0;;:23;;;;;;-1:-1:-1;;;;;28463:23:0;;;;;;;;;;;;;;;:6;;;;;-1:-1:-1;28463:11:0;;-1:-1:-1;28463:23:0;;;;;:6;;:23;;;;;;;:6;;:23;;;5:2:-1;;;;30:1;27;20:12;5:2;28463:23:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;28504:38:0;;;;;;28527:10;28504:38;;;;-1:-1:-1;;;;;28504:38:0;;;;;;;;;;-1:-1:-1;28504:38:0;;;;;;;-1:-1:-1;28504:38:0;28231:319;;;:::o;33296:109::-;14447:9;:7;:9::i;:::-;14439:54;;;;;;;-1:-1:-1;;;;;14439:54:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;14439:54:0;;;;;;;;;;;;;;;33375:22;33381:7;33390:6;33375:5;:22::i;:::-;33296:109;;:::o;23577:33::-;;;;;;-1:-1:-1;;;;;23577:33:0;;:::o;27279:388::-;27353:10;;27320:7;;27387:17;27353:10;27402:1;27387:17;:14;:17;:::i;:::-;27374:10;:30;;;27424:16;-1:-1:-1;27424:16:0;27417:24;;;;27454:18;;;;:14;:18;;;;;;;;:25;;-1:-1:-1;;27454:25:0;27475:4;27454:25;;;27490:10;:14;;;;;;:27;;-1:-1:-1;;;;;;27490:27:0;27507:10;27490:27;;;;;;27535;;;;;;;;;;;;;;;;;;;;;;27611:6;;:26;;;;;;27623:10;27611:26;;;;;;;;;;;;-1:-1:-1;;;;;27611:6:0;;;;:11;;:26;;;;;:6;;:26;;;;;;;;:6;;:26;;;5:2:-1;;;;30:1;27;20:12;5:2;27611:26:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;27657:2:0;;-1:-1:-1;;;;27279:388:0;:::o;23873:23::-;;;;:::o;5606:110::-;-1:-1:-1;;;;;5690:18:0;5663:7;5690:18;;;;;;;;;;;;5606:110::o;34329:169::-;14447:9;:7;:9::i;:::-;14439:54;;;;;;;-1:-1:-1;;;;;14439:54:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;14439:54:0;;;;;;;;;;;;;;;34409:25;;;;:14;:25;;;;;;;;34401:58;;;;;;;-1:-1:-1;;;;;34401:58:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;34470:8;:20;34329:169::o;15046:140::-;14447:9;:7;:9::i;:::-;14439:54;;;;;;;-1:-1:-1;;;;;14439:54:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;14439:54:0;;;;;;;;;;;;;;;15129:6;;15108:40;;15145:1;;-1:-1:-1;;;;;15129:6:0;;15108:40;;15145:1;;15108:40;15159:6;:19;;-1:-1:-1;;;;;;15159:19:0;;;15046:140::o;23839:25::-;;;;:::o;28903:621::-;25545:23;;;;:14;:23;;;;;;28988:7;;25545:23;;25537:56;;;;;;;-1:-1:-1;;;;;25537:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;25612:19;;;;:10;:19;;;;;;-1:-1:-1;;;;;25612:19:0;25635:10;25612:33;25604:71;;;;;-1:-1:-1;;;;;25604:71:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;17742:11;;;;;;;17734:55;;;;;;;-1:-1:-1;;;;;17734:55:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;17867:11;:19;;-1:-1:-1;;17867:19:0;;;17881:5;29029:24;;;:15;:24;;;;;;:34;-1:-1:-1;29029:34:0;29021:84;;;;-1:-1:-1;;;;;29021:84:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29118:21;29142:24;;;:15;:24;;;;;;:36;;29171:6;29142:36;:28;:36;:::i;:::-;29194:18;;;;:9;:18;;;;;;29118:60;;-1:-1:-1;29194:23:0;29191:182;;29275:18;;;;:9;:18;;;;;;29242:52;;29260:13;;29242:17;:52::i;:::-;29234:127;;;;;;-1:-1:-1;;;;;29234:127:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29385:24;;;;:15;:24;;;;;;:40;;;29436:27;:10;;:27;;;;;29456:6;;29436:27;29385:24;29436:27;29456:6;29436:10;:27;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;29481:35:0;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;18047:11:0;:18;;-1:-1:-1;;18047:18:0;;;;;-1:-1:-1;;28903:621:0:o;30169:703::-;25545:23;;;;:14;:23;;;;;;30248:7;;25545:23;;25537:56;;;;;;;-1:-1:-1;;;;;25537:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;25612:19;;;;:10;:19;;;;;;-1:-1:-1;;;;;25612:19:0;25635:10;25612:33;25604:71;;;;;-1:-1:-1;;;;;25604:71:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;30301:6;30276:21;30286:10;30276:9;:21::i;:::-;:31;;30268:65;;;;;-1:-1:-1;;;;;30268:65:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;30352:18;;;;:9;:18;;;;;;:28;-1:-1:-1;30352:28:0;30344:80;;;;-1:-1:-1;;;;;30344:80:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30437:19;30459:87;30515:30;30539:5;30515:19;:17;:19::i;:::-;:23;:30;:23;:30;:::i;:::-;30460:49;30487:21;:19;:21::i;:::-;30471:10;;30460:22;;:6;;:22;:10;:22;:::i;:49::-;30459:55;:87;:55;:87;:::i;:::-;30580:18;;;;:9;:18;;;;;;30437:109;;-1:-1:-1;30580:30:0;;30603:6;30580:30;:22;:30;:::i;:::-;30559:18;;;;:9;:18;;;;;;;;:51;;;;30646:15;:24;;;;:41;;30675:11;30646:41;:28;:41;:::i;:::-;30621:24;;;;:15;:24;;;;;;:66;;;;30740:8;;30724:25;;;;:42;;30754:11;30724:42;:29;:42;:::i;:::-;30714:8;;30698:25;;;;:15;:25;;;;;:68;30779:25;30785:10;30797:6;30779:5;:25::i;:::-;30822:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25686:1;30169:703;;;:::o;27675:548::-;25545:23;;;;:14;:23;;;;;;27738:7;;25545:23;;25537:56;;;;;;;-1:-1:-1;;;;;25537:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;25612:19;;;;:10;:19;;;;;;-1:-1:-1;;;;;25612:19:0;25635:10;25612:33;25604:71;;;;;-1:-1:-1;;;;;25604:71:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;17742:11;;;;;;;17734:55;;;;;;;-1:-1:-1;;;;;17734:55:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;17867:11;:19;;-1:-1:-1;;17867:19:0;;;17881:5;27779:18;;;:9;:18;;;;;;:23;27771:62;;;;;-1:-1:-1;;;;;27771:62:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;27849:24;;;;:15;:24;;;;;;:27;27846:104;;27913:24;;;;:15;:24;;;;;;;27893:45;;:10;;:45;;;;;27913:24;27893:45;;27913:24;27893:45;27913:24;27893:10;:45;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;27893:45:0;27846:104;27998:6;;:20;;;;;;;;;;;;;;-1:-1:-1;;;;;27998:6:0;;;;:11;;:20;;;;;:6;;:20;;;;;;;;:6;;:20;;;5:2:-1;;;;30:1;27;20:12;5:2;27998:20:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;;28038:23:0;;;;:14;:23;;;;;;;;28031:30;;-1:-1:-1;;28031:30:0;;;28079:10;:19;;;;;28072:26;;-1:-1:-1;;;;;;28072:26:0;;;28116:15;:24;;;;;28109:31;;;28158:9;:18;;;;;28151:25;;;;28194:21;;;;;;;;;-1:-1:-1;28194:21:0;;;;;;;-1:-1:-1;;18047:11:0;:18;;-1:-1:-1;;18047:18:0;;;;;27675:548::o;34223:98::-;14447:9;:7;:9::i;:::-;14439:54;;;;;;;-1:-1:-1;;;;;14439:54:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;14439:54:0;;;;;;;;;;;;;;;34294:10;:19;34223:98::o;14235:79::-;14300:6;;-1:-1:-1;;;;;14300:6:0;14235:79;:::o;14601:94::-;14681:6;;14641:4;;-1:-1:-1;;;;;14681:6:0;14665:12;:10;:12::i;:::-;-1:-1:-1;;;;;14665:22:0;;14658:29;;14601:94;:::o;25703:::-;25778:11;;25703:94;:::o;12994:87::-;13066:7;13059:14;;;;;;;;-1:-1:-1;;13059:14:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13033:13;;13059:14;;13066:7;;13059:14;;13066:7;13059:14;;;;;;;;;;;;;;;;;;;;;;;;26107:159;26157:7;26178:9;26194:14;;;;;;;;;-1:-1:-1;;;;;26194:14:0;-1:-1:-1;;;;;26194:30:0;;:32;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;26194:32:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;26194:32:0;;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;26194:32:0;;;;-1:-1:-1;;26107:159:0;:::o;33798:102::-;14447:9;:7;:9::i;:::-;14439:54;;;;;;;-1:-1:-1;;;;;14439:54:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;14439:54:0;;;;;;;;;;;;;;;33871:13;:21;;-1:-1:-1;;;;;;33871:21:0;-1:-1:-1;;;;;33871:21:0;;;;;;;;;;33798:102::o;33413:109::-;14447:9;:7;:9::i;:::-;14439:54;;;;;;;-1:-1:-1;;;;;14439:54:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;14439:54:0;;;;;;;;;;;;;;;33492:22;33498:7;33507:6;33492:5;:22::i;8481:261::-;8566:4;8583:129;8592:12;:10;:12::i;:::-;8606:7;8615:96;8654:15;8615:96;;;;;;;;;;;;;;;;;:11;:25;8627:12;:10;:12::i;:::-;-1:-1:-1;;;;;8615:25:0;;;;;;;;;;;;;;;;;-1:-1:-1;8615:25:0;;;:34;;;;;;;;;;;:96;;:38;:96;:::i;23935:46::-;;;;;;;;;;;;;;;:::o;25805:92::-;25879:10;;25805:92;:::o;23742:25::-;;;;:::o;5929:158::-;5998:4;6015:42;6025:12;:10;:12::i;:::-;6039:9;6050:6;6015:9;:42::i;25903:92::-;25977:10;;25903:92;:::o;33908:201::-;14447:9;:7;:9::i;:::-;14439:54;;;;;;;-1:-1:-1;;;;;14439:54:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;14439:54:0;;;;;;;;;;;;;;;34003:6;33988:13;:11;:13::i;:::-;:21;;33980:90;;;;-1:-1:-1;;;;;33980:90:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34081:11;:20;33908:201::o;28558:337::-;25545:23;;;;:14;:23;;;;;;28634:7;;25545:23;;25537:56;;;;;;;-1:-1:-1;;;;;25537:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;25612:19;;;;:10;:19;;;;;;-1:-1:-1;;;;;25612:19:0;25635:10;25612:33;25604:71;;;;;-1:-1:-1;;;;;25604:71:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;28654:21;28678:24;;;:15;:24;;;;;;:39;;28707:9;28678:39;:28;:39;:::i;:::-;28754:24;;;;:15;:24;;;;;;28654:63;;-1:-1:-1;28737:41:0;;;28730:49;;;;28792:24;;;;:15;:24;;;;;;;;;:40;;;28850:37;;;;;28877:9;28850:37;;;;;;;;;;;;;;;;;;;;25686:1;28558:337;;:::o;23711:22::-;;;-1:-1:-1;;;;;23711:22:0;;:::o;26003:94::-;26081:8;;26003:94;:::o;23903:23::-;;;;:::o;30880:1662::-;30948:23;;;;:14;:23;;;;;;;;30940:56;;;;;;;-1:-1:-1;;;;;30940:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;31015:13;;-1:-1:-1;;;;;31015:13:0;:25;;:57;;-1:-1:-1;31059:13:0;;-1:-1:-1;;;;;31059:13:0;31044:10;:28;31015:57;31007:103;;;;;;-1:-1:-1;;;;;31007:103:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31124:31;31208:24;;;:15;:24;;;;;;;;;31234:9;:18;;;;;;31124:31;;31178:75;;:29;:75::i;:::-;31123:130;;-1:-1:-1;31123:130:0;-1:-1:-1;31266:28:0;31297:38;31123:130;;31297:38;:27;:38;:::i;:::-;31379:28;;31266:69;;-1:-1:-1;31356:51:0;;31348:112;;;;-1:-1:-1;;;;;31348:112:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31473:24;31500:57;31528:28;;31500:23;:27;;:57;;;;:::i;:::-;31473:84;;31570:19;31592:44;31613:21;:19;:21::i;:::-;31592:16;;:44;:20;:44;:::i;:::-;31649:22;31674:18;;;:9;:18;;;;;;31570:66;;-1:-1:-1;31649:22:0;31674:35;;31570:66;31674:35;:22;:35;:::i;:::-;31649:60;;31755:14;31730:21;31740:10;31730:9;:21::i;:::-;:39;;31722:101;;;;-1:-1:-1;;;;;31722:101:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31836:21;31860:19;;;:10;:19;;;;;;;;;;-1:-1:-1;;;;;;31892:32:0;;31914:10;31892:32;;;;31935:9;:18;;;;;:32;;;-1:-1:-1;;;;;31860:19:0;;32002:96;32067:30;32091:5;32067:19;:17;:19::i;32002:96::-;32134:24;;;;:15;:24;;;;;;31980:118;;-1:-1:-1;32134:41:0;;31980:118;32134:41;:28;:41;:::i;:::-;32109:24;;;;:15;:24;;;;;;:66;;;;32228:8;;32212:25;;;;:42;;32242:11;32212:42;:29;:42;:::i;:::-;32202:8;;32186:25;;;;:15;:25;;;;;:68;32275:33;32281:10;32293:14;32275:5;:33::i;:::-;32355:6;;:20;;;;;;;;;;;;;;-1:-1:-1;;;;;32355:6:0;;;;:11;;:20;;;;;:6;;:20;;;;;;;;:6;;:20;;;5:2:-1;;;;30:1;27;20:12;5:2;32355:20:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;32420:6:0;;:31;;;;;;32432:10;32420:31;;;;;;;;;;;;-1:-1:-1;;;;;32420:6:0;;;;-1:-1:-1;32420:11:0;;-1:-1:-1;32420:31:0;;;;;:6;;:31;;;;;;;;:6;;:31;;;5:2:-1;;;;30:1;27;20:12;5:2;32420:31:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;32469:65:0;;;;;;-1:-1:-1;;;;;32469:65:0;;;;;;32507:10;32469:65;;;;;;;;;;;;;;-1:-1:-1;32469:65:0;;;;;;;-1:-1:-1;32469:65:0;30880:1662;;;;;;;;;:::o;24097:44::-;;;;;;;;;;;;;:::o;24040:50::-;;;;;;;;;;;;;:::o;6150:134::-;-1:-1:-1;;;;;6249:18:0;;;6222:7;6249:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;6150:134::o;23774:26::-;;;;:::o;15341:109::-;14447:9;:7;:9::i;:::-;14439:54;;;;;;;-1:-1:-1;;;;;14439:54:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;14439:54:0;;;;;;;;;;;;;;;15414:28;15433:8;15414:18;:28::i;:::-;15341:109;:::o;18912:181::-;18970:7;19002:5;;;19026:6;;;;19018:46;;;;;-1:-1:-1;;;;;19018:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;19084:1;18912:181;-1:-1:-1;;;18912:181:0:o;26907:364::-;26990:4;27008:31;27041:17;27062:47;27092:10;27104:4;27062:29;:47::i;:::-;27007:102;;-1:-1:-1;27007:102:0;-1:-1:-1;27122:28:0;27153:38;27007:102;;27153:38;:27;:38;:::i;:::-;27235:28;;-1:-1:-1;27211:52:0;;26907:364;-1:-1:-1;;;;;;26907:364:0:o;9984:308::-;-1:-1:-1;;;;;10060:21:0;;;;10052:65;;;;;-1:-1:-1;;;;;10052:65:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;10145:12;;:24;;10162:6;10145:24;:16;:24;:::i;:::-;10130:12;:39;-1:-1:-1;;;;;10201:18:0;;:9;:18;;;;;;;;;;;:30;;10224:6;10201:30;:22;:30;:::i;:::-;-1:-1:-1;;;;;10180:18:0;;:9;:18;;;;;;;;;;;:51;;;;10247:37;;;;;;;10180:18;;:9;;10247:37;;;;;;;;;;9984:308;;:::o;840:98::-;920:10;840:98;:::o;11412:338::-;-1:-1:-1;;;;;11506:19:0;;;;11498:68;;;;-1:-1:-1;;;;;11498:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;11585:21:0;;;;11577:68;;;;-1:-1:-1;;;;;11577:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;11658:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;11710:32;;;;;;;;;;;;;;;;;11412:338;;;:::o;9232:471::-;-1:-1:-1;;;;;9330:20:0;;;;9322:70;;;;-1:-1:-1;;;;;9322:70:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9411:23:0;;;;9403:71;;;;-1:-1:-1;;;;;9403:71:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9507;9529:6;9507:71;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9507:17:0;;:9;:17;;;;;;;;;;;;:71;;:21;:71;:::i;:::-;-1:-1:-1;;;;;9487:17:0;;;:9;:17;;;;;;;;;;;:91;;;;9612:20;;;;;;;:32;;9637:6;9612:32;:24;:32;:::i;:::-;-1:-1:-1;;;;;9589:20:0;;;:9;:20;;;;;;;;;;;;:55;;;;9660:35;;;;;;;9589:20;;9660:35;;;;;;;;;;;;;9232:471;;;:::o;19841:192::-;19927:7;19963:12;19955:6;;;;19947:29;;;;-1:-1:-1;;;;;19947:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;19947:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;19999:5:0;;;19841:192::o;19368:136::-;19426:7;19453:43;19457:1;19460;19453:43;;;;;;;;;;;;;;;;;:3;:43::i;20284:471::-;20342:7;20587:6;;20583:47;;;-1:-1:-1;20617:1:0;20610:8;;20583:47;20654:5;;;20658:1;20654;:5;20678;;;;;;;;:10;20670:56;;;;-1:-1:-1;;;;;20670:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21223:132;21281:7;21308:39;21312:1;21315;21308:39;;;;;;;;;;;;;;;;;:3;:39::i;10624:348::-;-1:-1:-1;;;;;10700:21:0;;;;10692:67;;;;-1:-1:-1;;;;;10692:67:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10793:68;10816:6;10793:68;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10793:18:0;;:9;:18;;;;;;;;;;;;:68;;:22;:68;:::i;:::-;-1:-1:-1;;;;;10772:18:0;;:9;:18;;;;;;;;;;:89;10887:12;;:24;;10904:6;10887:24;:16;:24;:::i;:::-;10872:12;:39;10927:37;;;;;;;;10953:1;;-1:-1:-1;;;;;10927:37:0;;;;;;;;;;;;10624:348;;:::o;26274:625::-;26369:7;26378;26405:19;:17;:19::i;:::-;:24;;26398:32;;;;26448:21;:19;:21::i;:::-;:26;;26441:34;;;;26488:23;26514:36;26529:19;:17;:19::i;:::-;26514:10;;:36;:14;:36;:::i;:::-;26488:62;-1:-1:-1;26570:29:0;;;;26563:37;;;;26613:17;26633:31;26642:21;:19;:21::i;26633:31::-;26613:51;-1:-1:-1;26684:17:0;;;;26677:25;;;;26715:31;26749:24;:15;26769:3;26749:24;:19;:24;:::i;:::-;26715:58;-1:-1:-1;26793:41:0;;;26786:49;;;;26856:23;26881:9;;-1:-1:-1;26274:625:0;-1:-1:-1;;;;26274:625:0:o;15556:229::-;-1:-1:-1;;;;;15630:22:0;;;;15622:73;;;;-1:-1:-1;;;;;15622:73:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15732:6;;15711:38;;-1:-1:-1;;;;;15711:38:0;;;;15732:6;;15711:38;;15732:6;;15711:38;15760:6;:17;;-1:-1:-1;;;;;;15760:17:0;-1:-1:-1;;;;;15760:17:0;;;;;;;;;;15556:229::o;21885:345::-;21971:7;22073:12;22066:5;;;22058:28;;;;-1:-1:-1;;;;;22058:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;22058:28:0;;22097:9;22113:1;22109;:5;;;;;;;;;21885:345;-1:-1:-1;;;;;21885:345:0:o
Swarm Source
bzzr://05d207fc2c8f9df9374ed18425b95a9d516d5797c70807383300e96291122c04
Loading...LoadingLoading...Loading
Loading...Loading
Loading...LoadingLoading...LoadingLoading...LoadingLoading...LoadingOVERVIEW
MAI (miMatic) is a stablecoin backed by collateral, and can only be minted with this collateral backing it. MAI is soft pegged to the USD, meaning that 1 MAI is around 1 USD.
Loading...LoadingMultichain Portfolio | 30 Chains
Chain Token Portfolio % Price Amount Value POL 99.92% $0.995418 67,212,449.2908 $66,904,481.85 POL Polygon (POL)0.08% $0.646728 86,843.0984 $56,163.88 POL <0.01% $0.240392 11 $2.64 POL <0.01% $0.999001 1.501 $1.5 BSC <0.01% $0.046323 10,000 $463.23 BSC <0.01% $0.643212 10.6559 $6.85 FTM <0.01% $1.27 29 $36.7 GNO <0.01% $1 0.1066 $0.106588 [ Download: CSV Export ][ Download: CSV Export ]A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.
Address QR Code
My Address - Private Name Tag or Note
My Name Tag:
Private Name Tags (up to 35 characters) can be used for easy identification of addressesPrivate Note:
A private note (up to 500 characters) can be attached to this address.
Please DO NOT store any passwords or private keys here.Compiler specific version warnings:
The compiled contract might be susceptible to DirtyBytesArrayToStorage (low-severity), ABIDecodeTwoDimensionalArrayMemory (very low-severity), KeccakCaching (medium-severity), EmptyByteArrayCopy (medium-severity), DynamicArrayCleanup (medium-severity), ImplicitConstructorCallvalueCheck (very low-severity), TupleAssignmentMultiStackSlotComponents (very low-severity), MemoryArrayCreationOverflow (low-severity), privateCanBeOverridden (low-severity), SignedArrayStorageCopy (low/medium-severity), ABIEncoderV2StorageArrayWithMultiSlotElement (low-severity), DynamicConstructorArgumentsClippedABIV2 (very low-severity), UninitializedFunctionPointerInConstructor (very low-severity), IncorrectEventSignatureInLibraries (very low-severity), ABIEncoderV2PackedStorage (low-severity), IncorrectByteInstructionOptimization (very low-severity), DoubleShiftSizeOverflow (low-severity) Solidity Compiler Bugs.
Connect a Wallet
Connecting wallet for read function is optional, useful if you want to call certain functions or simply use your wallet's node.Connect a Wallet
Connecting wallet for read function is optional, useful if you want to call certain functions or simply use your wallet's node.Connect a Wallet
Connecting wallet for read function is optional, useful if you want to call certain functions or simply use your wallet's node.Before You Copy
Transaction Private Note
This website uses cookies to improve your experience. By continuing to use this website, you agree to its Terms and Privacy Policy.